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, é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.
OPTIONS
--nopie, -p
N’exige pas que les exécutables vérifiés soient construits comme PIE.
--nostackprotector, -s
N’exige pas que les exécutables vérifiés soient construits avec le protecteur de pile.
--nofortify, -f
N’exige pas que les exécutables vérifiés soient construits avec Fortify Source.
--norelro, -r
N’exige pas que les exécutables vérifiés soient construits avec RELRO.
--nobindnow, -b
N’exige pas que les exécutables vérifiés soient construits avec BIND_NOW.
--nocfprotection, -b
N’exige pas que les exécutables vérifiés soient construits avec le protecteur de pile.
--quiet, -q
Ne fournir que des rapports d’échec.
--verbose, -v
Fournir des rapports d’échec verbeux.
--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 le 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 [AT] debian.org>
COPYRIGHT ET LICENCE
Copyright 2009-2013 Kees Cook <kees [AT] 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
TRADUCTION
Cyril Brulebois <cyril.brulebois [AT] enst-bretagne.fr>, 2006
Thomas Huriaux <thomas.huriaux [AT] gmail.com>, 2006
David Prévot <david [AT] tilapin.org>, 2010-2013
Xavier Guimard <yadd [AT] debian.org>, 2018-2021