Wie kann ich sicherstellen, dass meine Bash-Installation nach den Updates nicht mehr für den ShellShock- Fehler anfällig ist ?
Wie kann ich sicherstellen, dass meine Bash-Installation nach den Updates nicht mehr für den ShellShock- Fehler anfällig ist ?
Antworten:
Um die CVE-2014-6271-Sicherheitsanfälligkeit zu überprüfen
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Es sollte NICHT das Wort "verwundbar" wiedergeben.
/tmp/echo
, die Sie nach dem Löschen löschen können, und die vor dem erneuten Testen gelöscht werden muss)
cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
es sollte das wort datum sagen und sich dann mit einer nachricht wie beschweren cat: echo: No such file or directory
. Wenn stattdessen die aktuelle Datums- und Uhrzeitangabe angezeigt wird, ist Ihr System anfällig.
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
Es sollte den Text NICHT wiedergeben CVE-2014-7186 vulnerable, redir_stack
.
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"
Es sollte den Text NICHT wiedergeben CVE-2014-7187 vulnerable, word_lineno
.
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
Als Ergebnis wird NUR der Text zurückgesendet testing CVE-2014-6277
. Wenn es Perl ausführt oder sich beschwert, dass Perl nicht installiert ist, ist das definitiv ein Fehler. Ich bin mir bei keinem anderen Ausfallverhalten sicher, da ich keine ungepatchten Systeme mehr habe.
env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
Ein Bestehen für diesen Test ist, dass er NUR den Text wiedergibt testing CVE-2014-6278
. Wenn Sie hi mom
irgendwohin zurückkehren, ist das definitiv ein Fehlschlag.
foo='() { echo not patched; }' bash -c foo
? Solange die Funktionsexporte nicht in einem separaten Namespace abgelegt werden, hören wir nicht auf, von einem Parser-Fehler zum nächsten zu laufen.
Exportieren Sie eine speziell gestaltete Umgebungsvariable, die von anfälligen Versionen von Bash automatisch ausgewertet wird:
$ export testbug='() { :;}; echo VULNERABLE'
Führen Sie nun ein einfaches Echo aus, um festzustellen, ob Bash den Code in $ testbug auswertet, obwohl Sie diese Variable nicht selbst verwendet haben:
$ bash -c "echo Hello"
VULNERABLE
Hello
Wenn die Zeichenfolge "VULNERABLE" angezeigt wird, liegt die Antwort auf der Hand. Ansonsten brauchen Sie sich keine Sorgen zu machen und Ihre gepatchte Version von Bash ist in Ordnung.
Bitte beachten Sie, dass mehrere Patches von den großen Linux-Distributionen veröffentlicht wurden und manchmal die Sicherheitsanfälligkeit nicht vollständig beheben. Überprüfen Sie weiterhin die Sicherheitshinweise und den CVE-Eintrag für diesen Fehler.
export
):env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
ShellShock ist praktisch eine Verbindung von mehr als einer Sicherheitsanfälligkeit von Bash , und derzeit ist auch nicht bekannt, dass diese Sicherheitsanfälligkeit ausgenutzt wird. ShellShock kann also ein noch offenes Problem sein. Es gibt einen Thread mit Updates von RedHat zu diesem Problem .
Führen Sie den Befehl aus:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
Wenn die Ausgabe lautet:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test
Sie haben keine Lösung.
Wenn die Ausgabe lautet:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test
Sie haben CVE-2014-6271
fix
Wenn Ihre Ausgabe ist:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test
du bist nicht verletzlich
Der andere Teil der ShellShock-Prüfung ist die CVE-2014-7169-Sicherheitsanfälligkeitsprüfung, die sicherstellt, dass das System vor dem Problem der Dateierstellung geschützt ist. Führen Sie den folgenden Befehl aus, um zu testen, ob Ihre Version von Bash für CVE-2014-7169 anfällig ist:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014
Wenn Ihr System anfällig ist, werden Uhrzeit und Datum angezeigt und / tmp / echo wird erstellt.
Wenn Ihr System nicht anfällig ist, wird eine Ausgabe ähnlich der folgenden angezeigt:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory
Ich habe ein CLI-Dienstprogramm namens ShellShocker geschrieben , um Ihren Webserver auf Schwachstellen in CGI-Skripten zu testen. Um Ihre Site zu testen, führen Sie Folgendes aus:
python shellshocker.py <your-server-address>/<cgi-script-path>
dh
python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi
BEARBEITEN: Dieses Dienstprogramm wurde entfernt, sorry: '(
Sie können Ihre CGI-URL bei diesem Online-Test einreichen:
Typ env x = '() {:;}; echo vulnerable 'bash -c "echo dies ist ein Test" und wenn dies eine Sicherheitslücke ergibt und dies ein Test ist, bedeutet dies, dass Ihr OSX / Linux-Rechner betroffen ist. Abhilfe schafft ein Update auf die neueste Version von bash.