Provided by: devscripts_2.20.2ubuntu2_amd64 

BEZEICHNUNG
hardening-check - prüft Binärdateien auf Sicherheitshärtungsfunktionalitäten
ÜBERSICHT
hardening-check [Optionen] [ELF …]
untersucht einen angegebenen Satz von ELF-Binärdateien und prüft auf mehrere
Sicherheitshärtungsfunktionalitäten. Das Programm schlägt fehl, wenn sie nicht alle gefunden werden.
BESCHREIBUNG
Dieses Hilfswerkzeug prüft eine angegebene Liste von ELF-Binärdateien auf mehrere
Sicherheitshärtungsfunktionalitäten, die in ein ausführbares Programm einkompiliert werden können. Diese
Funktionalitäten sind:
Positionsunabhängiges Programm
Dies zeigt an, dass das Programm so gebaut wurde (PIE), dass der Abschnitt »text« des Programms
nicht im Speicher an andere Stelle geschoben werden kann. Um die Vorteile dieser Funktionalität
vollständig zu erlangen, muss der ausführende Kernel Address Space Layout Randomization (ASLR,
Adressverwürfelung) unterstützen.
Geschützter Stapelverarbeitungsspeicher
Dies zeigt an, dass es Anzeichen gibt, dass das ELF mit der gcc(1)-Option -fstack-protector
kompiliert wurde (benutzt z.B. __stack_chk_fail). Das Programm wird widerstandsfähig gegen
Stapelverarbeitungsspeicherüberläufe sein.
Wenn ein Programm gebaut wurde ohne dass irgendwelche Zeichenkettenfelder auf dem
Stapelverarbeitungsspeicher reserviert wurden, wird diese Prüfung zu Fehlalarmen führen (da dort
__stack_chk_fail nicht benutzt wird), obwohl es mit korrekten Optionen kompiliert wurde.
Quellfunktionen verstärken
Dies zeigt an, dass das Programm mit -D_FORTIFY_SOURCE=2 und -O1 oder höher kompiliert wurde.
Dies sorgt dafür, dass bestimmte unsichere Glibc-Funktionen durch ihre sicheren Gegenstücke (z.B.
strncpy statt strcpy) oder Aufrufe, die zur Laufzeit überprüfbar sind, durch die zur Laufzeit
prüfende Version (z.B. __memcpy_chk statt memcpy) ersetzt werden.
Wenn ein Programm so gebaut wird, dass die verstärkten Versionen der Glibc-Funktionen nicht
nützlich sind (z.B. Benutzung wird zu Kompilierungszeit als sicher befunden oder die Benutzung
kann nicht zur Laufzeit überprüft werden), wird diese Prüfung zu Fehlalarmen führen. Im Versuch,
dies zu mildern, wird die Prüfung positiv abgeschlossen, falls eine verstärkte Funktion gefunden
wird und fehlschlagen, falls nur unverstärkte Funktionen gefunden werden. Unprüfbare Bedingungen
führen auch zu positiven Ergebnissen (z.B. es werden keine verstärkten Funktionen gefunden oder
sie sind nicht gegen Glibc gelinkt).
Nur lesende Verlagerungen
Dies zeigt an, dass das Programm mit -Wl,-z,relro gebaut wurde, um ELF-Kennzeichen (RELRO) zu
haben, die vom Laufzeit-Linker verlangen, dass er einige Bereiche der Verlagerungstabelle als
»nur lesbar« kennzeichnet, falls sie aufgelöst waren, bevor die Verarbeitung begann. Dies
vermindert die möglichen Speicherbereiche in einem Programm, die von einem Angreifer benutzt
werden können, der mit einem Exploit erfolgreich Speicherinhalt verfälscht.
Sofortanbindung
Dies zeigt an, dass das Programm mit -Wl,-z,now gebaut wurde, um ELF-Kennzeichen (BIND_NOW) zu
haben, die vom Laufzeit-Linker verlangen, dass er alle Verlagerungen auflöst, bevor die
Programmausführung beginnt. Wenn es mit obigem RELRO kombiniert wurde, vermindert dies weitere
Bereiche des Speichers, die für Angriffe, die dessen Inhalt verfälschen, zur Verfügung stehen.
OPTIONEN
--nopie, -p
erfordert nicht, dass die geprüften Binärdateien als PIE gebaut wurden.
--nostackprotector, -s
erfordert nicht, dass die geprüften Binärdateien mit Stapelverarbeitungsschutz gebaut werden.
--nofortify, -f
erfordert nicht, dass die geprüften Binärdateien mit Fortify Source gebaut werden.
--norelro, -r
erfordert nicht, dass die geprüften Binärdateien mit RELRO gebaut werden.
--nobindnow, -b
erfordert nicht, dass die geprüften Binärdateien mit BIND_NOW gebaut werden.
--quiet, -q
meldet nur Fehlschläge.
--verbose, -v
meldet Fehlschläge detailliert.
--report-functions, -R
zeigt nach dem Bericht alle externen Funktionen, die vom ELF benötigt werden.
--find-libc-functions, -F
statt des normalen Berichts wird die Libc für das erste ELF auf der Befehlszeile geortet und alle
bekannten »verstärkten« Funktionen, die von der Libc exportiert werden, gemeldet.
--color, -c
aktiviert eingefärbte Statusausgabe.
--lintian, -l
schaltet das Berichten auf »lintian-check-parsable«-Ausgabe (durch Lintian auswertbare Ausgabe).
--debug meldet während des Ausführung einige Fehlersuchausgaben.
--help, -h, -?
gibt eine kurze Hilfenachricht aus und wird beendet.
--man, -H
gibt die Handbuchseite aus und beendet sich.
RÜCKGABEWERT
Wenn in allen geprüften Programmen alle Härtungsfunktionalitäten entdeckt wurden, wird dieses Programm
mit einem Exit-Code von 0 beendet. Falls irgendeine Prüfung fehlschlägt, wird der Exit-Code 1 sein.
Individuelle Prüfungen können über Befehlszeilenoptionen deaktiviert werden.
AUTOR
Kees Cook <kees@debian.org>
COPYRIGHT UND LIZENZ
Copyright 2009-2013 Kees Cook <kees@debian.org>.
Dieses Programm ist freie Software; Sie können es unter den Bedingungen der GNU General Public License,
Version 2 oder neuer, wie sie von der Free Software Foundation veröffentlicht wurde, weitergeben und/oder
ändern.
SIEHE AUCH
gcc(1), hardening-wrapper(1)
Debian-Hilfswerkzeuge 2020-02-13 HARDENING-CHECK.DE(1)