Gestern wurde bekannt, dass eine recht massive Lücke in der Bash (Shell) existiert: CVE-2014-6271 Diese ermöglicht es von Remote Kommandos auf dem System auszuführen. Allerdings nur unter bestimmten Voraussetzungen. So muss ein Programm von extern erreichbar sein, welches die Bash nutzt resp Bash-Subshells startet. Ob das eigene System für diese Lücke anfällig ist kann man folgendermassen testen
env x='() { :;}; echo Verwundbar!' bash -c "echo Dies ist ein Test."
Wie sich herausstellte waren die Patches des Distriburtoren aber nicht fehlerfrei. Darum wurde CVE-2014-7169 eröffnet. Ob man trotz Patch für den zweiten CVE anfällig ist kann man so testen
env -i X='() { (a)=>\' bash -c 'echo date'; cat echo
Aktuell ist diese Lücke ein grosses Thema in den Medien. Auch Heise berichtet
Obwohl also weniger Server anfällig zu sein scheinen als bei Heartbleed, ist die Sicherheitslücke für betroffene Systeme doch gravierend, da der Angreifer sofort die volle Kontrolle über den Server an sich reißen kann.
Diese Formulierung ist etwas unglücklich, da sie nahelegt, dass man die Kontrolle über den Server sofort habe, was eigentlich das Absetzen eines Kommandos mit root-Rechten voraussetzen würde. Das wäre eine sogenannte Privilege Escalation. Das ist aber ganz klar NICHT der Fall. Für eine solche Ausweitung der Rechte braucht es eine weitere Lücke. Die Bash-Lücke alleine reicht nicht. Denn die Kommandos werden im Userkontext des laufenden Prozesses ausgeführt, damit auch mit den Rechten des Users, unter dem der Prozess läuft z.B. www-data beim Webserver.
Das sieht man hier: in ein Verzeichnis wechseln wo der User keine Rechte hat z.B. /root und dann testen
zabbix@zab1:/root$ env -i X='() { (a)=>\' bash -c 'echo date'; whoami bash: X: line 1: syntax error near unexpected token `=' bash: X: line 1: `' bash: error importing function definition for `X' bash: echo: Permission denied zabbix
der Permission Denied zeigt, dass dem User zabbix die Rechte fehlen die Datei echo im Verzeichnis /root anzulegen.
Eine sehr gute Zusammenstellung der Lücke kann man hier finden
RedHat hat einen Patch für Bash veröffentlicht, der auch CVE-2014-7169 fixt. Habe den Patch auf Centos 6.5 installiert und getestet –> funzt
Für Debian und andere Linux ist der Patch scheinbar noch nicht vorhanden
Debian hat CVE-2014-7169 mit Bash 4.2+dfsg-0.1+deb7u3 in Wheezy (Security) und Bash 4.1-3+deb6u2 in Squeeze (LTS) gefixt
Qualys bietet heute Abend einen Webcast zum Thema «Shell Shock»
Es gibt unter shellshocker.net den folgenden Test wo man sein System auf alle diese Lücken abklopfen kann