Provided by: devscripts_2.25.15_all bug

NOM

       hardening-check - Vérifier les binaires pour des fonctionnalités de sécurisation

SYNOPSIS

       hardening-check [options] [ELF ...]

       Examiner un ensemble donné de binaires ELF et rechercher plusieurs fonctions de sécurisation en échouant
       si toutes ne sont pas trouvées.

DESCRIPTION

       Cet utilitaire recherche dans un ensemble de binaires ELF plusieurs fonctionnalités de sécurisation qui
       peuvent avoir été compilées dans un exécutable. Ces fonctionnalités sont :

       Position Independent Executable
               Cela indique que l’exécutable a été construit d’une manière telle (PIE) que la section "texte" du
               programme  peut être transférée en mémoire. Pour tirer avantage de cette fonctionnalité, le noyau
               exécuté doit prendre en charge la distribution aléatoire de l’espace d’adressage  (Address  Space
               Layout Randomization – ASLR) de texte.

       Stack Protected
               Cela  indique  qu’il  y  a des indices que l’ELF a été compilé avec l’option -fstack-protector de
               gcc(1) (par exemple utilisation de __stack_chk_fail). Le programme sera résistant au  dépassement
               de pile.

               Quand un exécutable a été construit sans qu’une table de caractères ne soit allouée dans la pile,
               cette  recherche  mènera  à  des  fausses  alertes  (dans la mesure où __stack_chk_fail n’est pas
               utilisé), même s’il a été compilé avec les bonnes options.

       Fortify Source functions
               Cela indique que l’exécutable a été  compilé  avec  -D_FORTIFY_SOURCE=2  et  -O1  ou  plus.  Cela
               provoque  le  remplacement  de  certaines fonctions non sûres de glibc par leurs équivalents plus
               sûrs (par exemple strncpy à la place de strcpy) , ou remplace des appels vérifiables au moment de
               l’exécution par des versions runtime-check (par exemple __memcpy_chk à la place de memcpy).

               Quand un exécutable a été construit de telle manière que les versions renforcées des fonctions de
               glibc ne sont pas utiles (par exemple, l’utilisation est vérifiée comme  sûre  au  moment  de  la
               compilation,  ou  l’utilisation  ne  peut  pas  être  vérifiée  au  moment de l’exécution), cette
               recherche mènera à de fausses alertes. Pour tenter de pallier cela, la recherche réussira si  une
               fonction  renforcée  est  découverte, et échouera si uniquement des fonctions non renforcées sont
               découvertes. Les conditions non vérifiables réussissent aussi (par exemple, aucune  fonction  qui
               peut être renforcée n’est trouvée, ou n’est pas liée à glibc).

       Read-only relocations
               Cela  indique  que  l’exécutable  a  été  construit  avec  les  options -Wl,-z,relro pour que les
               marquages ELF (RELRO) demandent que l’éditeur de liens au moment de l’exécution marque toutes les
               zones de la table de réadressage en "lecture  seule"  si  les  translations  d’adresses  ont  été
               résolues  avant le début de l’exécution. Cela réduit le nombre de zones de mémoire d’un programme
               qui peuvent être utilisées par un attaquant pour réaliser une exploitation efficace de corruption
               de mémoire.

       Immediate binding
               Cela indique que l’exécutable a été construit avec les options -Wl,-z,now pour que les  marquages
               ELF  (BIND_NOW)  demandent  que  l’éditeur  de  liens au moment de l’exécution résolve toutes les
               réadressages avant de démarrer l’exécution du  programme.  Si  cette  option  est  combinée  avec
               l’option  RELRO  ci-dessus,  cela  réduit  encore  davantage les zones de mémoire accessibles aux
               attaques par corruption de mémoire.

       Branch Protection
               Cela indique  que  l’exécutable  a  été  construit  avec  -mbranch-protection=standard.  Sur  les
               processeurs  ARM,  cela  fournit  des  protections  additionnelles  de  structure  de contrôle en
               utilisant les instrutions de cible d’embranchement (BTI, Branch Target Instructions) qui marquent
               tous les emplacements d’embranchement valables, et les codes d’authentification de pointeur (PAC,
               Pointer Authentication Codes) qui signent et vérifient  les  cibles  d’embranchements  indirects.
               Cela contribue à empêcher l’utilisation de failles basées sur le détournement du déroulement d’un
               programme pour lui faire exécuter du code à un emplacement arbitraire en mémoire.

OPTIONS

       --nopie, -p
               Ne pas exiger que les exécutables vérifiés soient construits comme PIE.

       --nostackprotector, -s
               Ne pas exiger que les exécutables vérifiés soient construits avec le protecteur de pile.

       --nofortify, -f
               Ne pas exiger que les exécutables vérifiés soient construits avec Fortify Source.

       --norelro, -r
               Ne pas exiger que les exécutables vérifiés soient construits avec RELRO.

       --nobindnow, -b
               Ne pas exiger que les exécutables vérifiés soient construits avec BIND_NOW.

       --nocfprotection, -x
               Ne  pas  exiger que les exécutables vérifiés soient construits avec la protection de structure de
               contrôle.

       --nobranchprotection, -B
               Ne pas exiger que les exécutables vérifiés soient construits avec la protection d’embranchement.

       --quiet, -q
               Ne fournir que des rapports d’échec.

       --verbose, -v
               Fournir des rapports d’échec détaillés.

       --report-functions, -R
               Après le rapport, afficher toutes les fonctions externes nécessaires à l’ELF.

       --find-libc-functions, -F
               Au lieu de faire un rapport normal, localiser la libc  pour  le  premier  ELF  sur  la  ligne  de
               commande et rapporter toutes les fonctions "renforcées" exportées par libc.

       --color, -c
               Activer les sorties d’état colorées.

       --lintian, -l
               Changer les rapports pour une sortie analysable par une vérification de lintian.

       --debug Rapporter des données de débogage durant le traitement.

       --help, -h, -?
               Afficher un message d’aide bref et quitter.

       --man, -H
               Afficher la page de manuel et quitter.

VALEUR DE RETOUR

       Quand  toutes les fonctionnalités de sécurisation vérifiables des exécutables examinés ont été détectées,
       ce programme s’achève avec un code de sortie de "0". Si une vérification échoue, le code de  sortie  sera
       "1". Les vérifications individuelles peuvent être désactivées avec des options en ligne de commande.

AUTEUR

       Kees Cook <kees@debian.org>

COPYRIGHT ET LICENCE

       Copyright 2009-2013 Kees Cook <kees@debian.org>.

       Ce programme est un logiciel libre ; il est permis de le distribuer et/ou de le modifier selon les termes
       de  la  GNU  General  Public  License,  telle  que  publiée par la Free Software Foundation, version 2 ou
       ultérieure.

VOIR AUSSI

       gcc(1), hardening-wrapper(1)

TRADUCTION

       Cyril Brulebois <cyril.brulebois@enst-bretagne.fr>, 2006

       Thomas Huriaux <thomas.huriaux@gmail.com>, 2006

       David Prévot <david@tilapin.org>, 2010-2013

       Xavier Guimard <yadd@debian.org>, 2018-2024

Utilitaires Debian                                 2025-06-16                              HARDENING-CHECK.FR(1)