Provided by: devscripts_2.25.15_all 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.

       Branch Protection
               This  indicates  the  executable  was built with -mbranch-protection=standard. On ARM processors,
               this provides additional control flow protections using Branch  Target  Instructions  (BTI)  that
               mark  all  valid  branch  locations  and  Pointer Authentication Codes (PAC) that sign and verify
               indirect branch targets. This helps prevent the use of exploits that work by causing a program to
               start executing code at an arbitrary location in memory.

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, -x
               Do not require that the checked binaries be built with control flow protection.

       --nobranchprotection, -B
               Do not require that the checked binaries be built with branch 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)

Debian-Hilfswerkzeuge                              2025-06-16                              HARDENING-CHECK.DE(1)