
Dies enthält das Dockerfile zum Erstellen und Reproduzieren von Shellshock.
CVSS 10.0. Bash parst fälschlicherweise nachfolgende Befehle nach einer Funktionsdefinition, die in einer Umgebungsvariable gespeichert ist, und führt sie während der Shell-Initialisierung aus.
Bash-Umgebungsvariablen können Funktionsdefinitionen kodieren: x='() { :; }' Wenn Bash diese als Umgebungsvariable importiert und initialisiert, parst es den Funktionskörper, beendet das Parsen jedoch nicht nach der schließenden Klammer, sondern führt den darauf folgenden Text als Befehl aus.
docker build -t shellshock-poc .
docker run --rm -it shellshock-poc env x='() { :;}; echo VULNERABLE' bash -c "echo test"
VULNERABLE test
[gepatchtes Dockerfile / Ausgabe hier]
CGI-Skripte, die Bash mit von Angreifern kontrollierten Headern (z. B. User-Agent) aufrufen, führen dazu, dass diese Header als Umgebungsvariablen gesetzt werden — eine von Angreifern kontrollierte Umgebungsvariable, die die Bash-Initialisierung erreicht, ist die eigentliche Angriffsfläche, nicht nur die interaktive Shell-Nutzung.
Der Upstream-Patch erzwingt, dass das Parsen an der schließenden Klammer der Funktionsdefinition stoppt. CVE-2014-7169 deckt einen Folge-Bypass ab, der durch einen unvollständigen Fix entstand.