.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "HARDENING-CHECK.DE 1" .TH HARDENING-CHECK.DE 1 "2023-12-12" "Debian-Hilfswerkzeuge" " " .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "BEZEICHNUNG" .IX Header "BEZEICHNUNG" hardening-check \- prüft Binärdateien auf Sicherheitshärtungsfunktionalitäten .SH "ÜBERSICHT" .IX Header "ÜBERSICHT" hardening-check [Optionen] [\s-1ELF\s0 …] .PP 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. .SH "BESCHREIBUNG" .IX Header "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: .IP "\fBPositionsunabhängiges Programm\fR" 8 .IX Item "Positionsunabhängiges Programm" Dies zeigt an, dass das Programm so gebaut wurde (\s-1PIE\s0), 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 (\s-1ASLR,\s0 Adressverwürfelung) unterstützen. .IP "\fBGeschützter Stapelverarbeitungsspeicher\fR" 8 .IX Item "Geschützter Stapelverarbeitungsspeicher" Dies zeigt an, dass es Anzeichen gibt, dass das \s-1ELF\s0 mit der \fBgcc\fR\|(1)\-Option \fB\-fstack\-protector\fR kompiliert wurde (benutzt z.B. \fB_\|_stack_chk_fail\fR). Das Programm wird widerstandsfähig gegen Stapelverarbeitungsspeicherüberläufe sein. .Sp Wenn ein Programm gebaut wurde ohne dass irgendwelche Zeichenkettenfelder auf dem Stapelverarbeitungsspeicher reserviert wurden, wird diese Prüfung zu Fehlalarmen führen (da dort \fB_\|_stack_chk_fail\fR nicht benutzt wird), obwohl es mit korrekten Optionen kompiliert wurde. .IP "\fBQuellfunktionen verstärken\fR" 8 .IX Item "Quellfunktionen verstärken" Dies zeigt an, dass das Programm mit \fB\-D_FORTIFY_SOURCE=2\fR und \fB\-O1\fR oder höher kompiliert wurde. Dies sorgt dafür, dass bestimmte unsichere Glibc-Funktionen durch ihre sicheren Gegenstücke (z.B. \fBstrncpy\fR statt \fBstrcpy\fR) oder Aufrufe, die zur Laufzeit überprüfbar sind, durch die zur Laufzeit prüfende Version (z.B. \fB_\|_memcpy_chk\fR statt \fBmemcpy\fR) ersetzt werden. .Sp 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). .IP "\fBNur lesende Verlagerungen\fR" 8 .IX Item "Nur lesende Verlagerungen" Dies zeigt an, dass das Programm mit \fB\-Wl,\-z,relro\fR gebaut wurde, um ELF-Kennzeichen (\s-1RELRO\s0) 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. .IP "\fBSofortanbindung\fR" 8 .IX Item "Sofortanbindung" Dies zeigt an, dass das Programm mit \fB\-Wl,\-z,now\fR gebaut wurde, um ELF-Kennzeichen (\s-1BIND_NOW\s0) zu haben, die vom Laufzeit-Linker verlangen, dass er alle Verlagerungen auflöst, bevor die Programmausführung beginnt. Wenn es mit obigem \s-1RELRO\s0 kombiniert wurde, vermindert dies weitere Bereiche des Speichers, die für Angriffe, die dessen Inhalt verfälschen, zur Verfügung stehen. .SH "OPTIONEN" .IX Header "OPTIONEN" .IP "\fB\-\-nopie\fR, \fB\-p\fR" 8 .IX Item "--nopie, -p" erfordert nicht, dass die geprüften Binärdateien als \s-1PIE\s0 gebaut wurden. .IP "\fB\-\-nostackprotector\fR, \fB\-s\fR" 8 .IX Item "--nostackprotector, -s" erfordert nicht, dass die geprüften Binärdateien mit Stapelverarbeitungsschutz gebaut werden. .IP "\fB\-\-nofortify\fR, \fB\-f\fR" 8 .IX Item "--nofortify, -f" erfordert nicht, dass die geprüften Binärdateien mit Fortify Source gebaut werden. .IP "\fB\-\-norelro\fR, \fB\-r\fR" 8 .IX Item "--norelro, -r" erfordert nicht, dass die geprüften Binärdateien mit \s-1RELRO\s0 gebaut werden. .IP "\fB\-\-nobindnow\fR, \fB\-b\fR" 8 .IX Item "--nobindnow, -b" erfordert nicht, dass die geprüften Binärdateien mit \s-1BIND_NOW\s0 gebaut werden. .IP "\fB\-\-nocfprotection\fR, \fB\-b\fR" 8 .IX Item "--nocfprotection, -b" Do not require that the checked binaries be built with control flow protection. .IP "\fB\-\-quiet\fR, \fB\-q\fR" 8 .IX Item "--quiet, -q" meldet nur Fehlschläge. .IP "\fB\-\-verbose\fR, \fB\-v\fR" 8 .IX Item "--verbose, -v" meldet Fehlschläge detailliert. .IP "\fB\-\-report\-functions\fR, \fB\-R\fR" 8 .IX Item "--report-functions, -R" zeigt nach dem Bericht alle externen Funktionen, die vom \s-1ELF\s0 benötigt werden. .IP "\fB\-\-find\-libc\-functions\fR, \fB\-F\fR" 8 .IX Item "--find-libc-functions, -F" statt des normalen Berichts wird die Libc für das erste \s-1ELF\s0 auf der Befehlszeile geortet und alle bekannten »verstärkten« Funktionen, die von der Libc exportiert werden, gemeldet. .IP "\fB\-\-color\fR, \fB\-c\fR" 8 .IX Item "--color, -c" aktiviert eingefärbte Statusausgabe. .IP "\fB\-\-lintian\fR, \fB\-l\fR" 8 .IX Item "--lintian, -l" schaltet das Berichten auf »lintian\-check\-parsable«\-Ausgabe (durch Lintian auswertbare Ausgabe). .IP "\fB\-\-debug\fR" 8 .IX Item "--debug" meldet während des Ausführung einige Fehlersuchausgaben. .IP "\fB\-\-help\fR, \fB\-h\fR, \fB\-?\fR" 8 .IX Item "--help, -h, -?" gibt eine kurze Hilfenachricht aus und wird beendet. .IP "\fB\-\-man\fR, \fB\-H\fR" 8 .IX Item "--man, -H" gibt die Handbuchseite aus und beendet sich. .SH "RÜCKGABEWERT" .IX Header "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. .SH "AUTOR" .IX Header "AUTOR" Kees Cook .SH "COPYRIGHT UND LIZENZ" .IX Header "COPYRIGHT UND LIZENZ" Copyright 2009\-2013 Kees Cook . .PP Dieses Programm ist freie Software; Sie können es unter den Bedingungen der \s-1GNU\s0 General Public License, Version 2 oder neuer, wie sie von der Free Software Foundation veröffentlicht wurde, weitergeben und/oder ändern. .SH "SIEHE AUCH" .IX Header "SIEHE AUCH" \&\fBgcc\fR\|(1), \fBhardening\-wrapper\fR\|(1)