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 <[email protected]> Copyright 2009-2013 Kees Cook <[email protected]>.
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 < [email protected]>, 2006
Thomas Huriaux < [email protected]>, 2006
David Prévot < [email protected]>, 2010-2013
Xavier Guimard < [email protected]>, 2018-2021

Recommended readings

Pages related to hardening-check you should read also:

Questions & Answers

Helpful answers and articles about hardening-check you may found on these sites:
Stack Overflow Server Fault Super User Unix & Linux Ask Ubuntu Network Engineering DevOps Raspberry Pi Webmasters Google Search