Provided by: devscripts_2.22.2ubuntu3_amd64 bug

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.

       --nocfprotection, -b
               Do not require that the checked binaries be built with control flow protection.

       --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)