You’ve been hacked! - Der Orkut-XSS-Wurm

Der Orkut-XSS-Wurm breitete sich im Dezember 2007 in Orkut aus. In den "scraps" genannten Nachrichten an Freunde ist HTML erlaubt. Der Wurm sendete zuerst eine Flash-Datei als Scrap, bei deren Betrachten eine Datei mit getarnten (obfuscated) JavaScript-Code geladen wurde. Der Wurm-Code fügte das Opfer dann zur Gruppe "Infectatos pelo Virus do Orkut" ("Infiziert vom Orkut-Virus") hinzu und begann, die Flash-Datei als Scrap an die Freunde des Opfers zu senden. Die Gruppe soll bis zu 655.000 Mitglieder gehabt haben, entsprechend viele Opfer hat der Wurm also gefunden.

Der Orkut-XSS-Wurm machte im Prinzip nichts anderes als auch Samy und Yamanner: Eine XSS-Schwachstelle zum Eindringen ausnutzen, dann über XMLHttpRequests im Hintergrund das Opfer zur Gruppe "Infectatos pelo Virus do Orkut" hinzufügen und nach neuen Opfern suchen. Die XSS-Schwachstelle bestand diesmal nicht in einem fehlerhaften JavaScript- oder HTML-Filter, der eigentlich unerwünschten Code passieren lässt, sondern im Zulassen von Flash. Flash nutzt mit ActionScript einen "JavaScript-Dialekt", dessen Fähigkeiten sich zwar auf den Bereich Multimedia konzentrieren, die aber auch ausreichen, um Schaden im Browser anzurichten. Der Wurm-Autor, laut Quelltext Rodrigo Lacerda, nutzte Flash aber nur, um den eigentlichen, in JavaScript geschriebenen Schadcode nachzuladen. Neu war auch, das der Schadcode getarnt (obfuscated) war: Der Code wurde mit Dean Edwards Javascript Packer gepackt. Wie man daraus den eigentlichen Quelltext zurückerhält, wird in diesem Blogeintrag von Ryan Cartner beschrieben.

Hier finden Sie lokale Kopien der verschiedenen Quelltexte samt Quellenangaben.

Der Code

Der Code wurde automatisch ausgeführt, wenn die infizierte Scrap-Nachricht mit dem Titel "2008 vem ai... que ele comece mto bem para vc" (auf deutsch etwa "2008 kommt... ich hoffe es beginnt gut für dich") oder "Boas Festas de final de Ano!" ("Hab eine schöne Silvesterparty") gelesen wurde. Eine Aktion des Opfers über das Öffnen der Nachricht hinaus war nicht notwendig. Zuerst wurde der Benutzer der genannten Gruppe hinzugefügt. Dann wurde die Freundesliste des Opfers gelesen und eine Scrap-Nachricht mit dem Wurm darin an die Freunde geschickt. Dabei nutzte der Wurm einen Cookie, um den aktuellen Index in der Freundesliste zu speichern. War der 0, wurde der Wurmcode zum ersten Mal im Browser des aktuellen Opfers gestartet und der Benutzer musste noch zur Gruppe hinzugefügt werden. Anschließend bzw. wenn der Wert des Cookies größer als 0 war, wurde der Wurmcode an die Freunde des Opfers gesendet, an die er nicht zuvor bereits gesendet worden war. Schlugen das Hinzufügen zur Gruppe oder das Senden eines Scraps fehl, wurde die entsprechende Aktion erneut gestartet.

Die Verbreitung des Wurms endete entweder, weil Orkut ein Captcha vor das Versenden von Scraps eingebaut hat, oder weil der Wurm-Autor den Schadcode entfernt hat. In welcher Reihenfolge diese Aktionen stattfanden, ist nicht festzustellen.

Die Folgen

Das Ganze war kein Angriff im eigentlichen Sinn, sondern eine Demonstration einer gefundenen XSS-Schwachstelle und was damit auf einer Social-Networking-Site angerichtet werden kann.

Die Reaktion von Orkut/Google zeigt, dass diese Vorgehensweise teilweise berechtigt war: Die Reaktion erfolgte viel zu langsam (siehe z.B. diesen Blogeintrag von Kee Hinckley), und die einzige Stellungnahme von Orkut dazu ist ausgesprochen mager, siehe diesen Blogeintrag im Orkut-Blog. Vor allem geht es darin nur um die versendeten Scraps. Dass die Wurm-Opfer auch zur Gruppe "Infectatos pelo Virus do Orkut" hinzugefügt wurden, wird gar nicht erwähnt.

Zwei weitere pikante Details am Rande:

Der Wurm-Autor war sehr "tech-savvy", den er hat nicht nur einfaches HTML, sondern sogar JavaScript genutzt!


Weiter zum Wurm-Code oder zurück zur Kapitel-Startseite oder zur Doku-Startseite