@PMAU: ich verstehe zwar nur Bahnhof, deshalb ja meine Anfrage hier, aber ich gehe mal davon aus, dass Du auch meinst, die vom spiegel proklamierte große Gefahr eher eine theoretische ist.
Ich bin mir sicher, dass es heute einige sehr verunsicherte MAcuser gibt, die genauso wie ich keinerlei Ahnung davon haben, wie die Sache winzuschätzen ist. Deshalb ist es gut, wenn ihr das richtig einordnet und relativiert.
Ich mache Dir mal ein Beispiel, dass Du vielleicht nachvollziehen kannst.
Schau mal auf mal auf die vollkommen fiktive URL:
http://www.coca-cola.de/werbung?action=display
Und jetzt nimm an dahinter steck ein CGI das den Parameter "action" nimmt und wild irgendein Programm aufruft,
dafür nimmt es den Namen aus dem parameter.
Also würde "action=/bin/rm+-rf+./"
Deine Festplatte löschen.
Das ist ein rein theoretischer Angriff, der aber mit dem entsprechend idiotischem Code funktionieren würde.
Jetzt zu dem eigentlichen Problem.
Man kann einem Programm beim Start Umgebungsvariablen mitgeben.
Das tut man so:
env meine_variable="Hallo Welt" /Applications/MeinTollesProgramm.app
Jetzt ist es aber so, dass wenn ich eine Funktion definiere und deren Wert der Variable zuweise,
der Rest der hinter der Funktion steht sofort ausgeführt wird.
Code:
env meine_variable ='() { :;}; echo vulnerable' ls -la /
Das Programm ist hier "ls" und das "echo" darf von der Shell nicht ausgeführt werden.
Das darf nicht sein.
Daraus aber einen funktionierenden Angriff zu konstruieren erfordert, dass ein Shell Script auf Deinem Computer genau diesen Teil
Code:
env meine_variable ='() { :;}; echo vulnerable' ./irgendein_echtes_programm
ausführt.
Das ist natürlich möglich, aber doch sehr weit hergeholt.
Der "Schadcode" ist in dem Fall übrigens das "echo vulnarable" hinter der Funktion.
Ich weiss, das ist jetzt alles sehr viel Detail.
Aber da muss schon einiges zusammenpassen bis das zur Gefahr wird.