Die Informationen in der folgenden Beschreibung des Yahoo!-Webmail-Wurms Yamanner stammen zum Teil aus dem Whitepaper "Malicious Yahooligans" (PDF) von Symantec. Der Code des Wurms wurde u.a. auf groovin.net veröffentlicht, die von mir formatierte und kommentierte Version basiert darauf.
Yamanner nutzte eine Schwachstelle im JavaScript- und HTML-Filter von
Yahoo! Mail für seine Verbreitung: Die Daten wurden einmal
geprüft, dabei gefundene unerwünschte Bestandteile gelöscht,
und das Ergebnis dann ohne weitere Prüfung verwendet. Schon aus dieser
Beschreibung lässt sich eine Angriffstaktik ableiten: Man kombiniert
den JavaScript-Code so, das nach dem Löschen von unerwünschten
Bestandteilen funktionsfähiger (Schad)code übrig bleibt. Und
genau so wurde der Wurm auch tatsächlich eingeschleust. Einfallstor
war folgendes <img>-Tag:
<img src='http://us.i1.yimg.com/us.yimg.com/i/us/nt/ma/ma_mail_1.gif'
target=""onload="[Wurm-Code]">
Eigentlich sollte in den "-Zeichen hinter target ein
Frame oder eine Seite als Ziel für das zu ladende Bild angegeben
werden. Stattdessen folgt direkt darauf, ohne trennendes Leerzeichen, ein
onload-Attribut. Der Grund für diese merkwürdige
Formatierung ist Yahoo!s HTML-Filter, der target-Attribute
ausfiltert. Damit ergibt sich nach dem Filtern
<img src='http://us.i1.yimg.com/us.yimg.com/i/us/nt/ma/ma_mail_1.gif'
onload="[Wurm-Code]">
Das ist gültiges HTML, und beim Laden wird der Wurm-Code im
onload-Attribut ausgeführt. Der Yahoo!-Filter machte nur
einen Durchlauf und prüfte das Tag nach dem Entfernen des
target="" nicht noch einmal. Bei einem zweiten
Durchlauf wäre das onload-Attribut mit dem enthaltenen
Wurm-Code gefunden und gelöscht worden.
Nach dem Ausbruch des Wurm wurde die Schwachstelle natürlich behoben (und der Wurm dadurch gestoppt), und obiges Ausgangstag wird seitdem in
<img src='http://us.i1.yimg.com/us.yimg.com/i/us/nt/ma/ma_mail_1.gif'
onfiltered="[Wurm-Code]">
umgewandelt. Während das target-Attribut weiterhin
gelöscht wird, wird das onload-Attribut durch Umwandlung
in das ungültige onfiltered unbrauchbar gemacht: Der
enthaltene Code wird nicht mehr ausgeführt.
Sobald ein Benutzer eine wurmverseuchte E-Mail in Yahoo! Webmail öffnete, wurde der Wurmcode ausgeführt. Alle Aktionen des Wurms wurden über XMLHttpRequests im Hintergrund durchgeführt. Der erste Schritt bestand darin, den aktuellen Server festzustellen. Da Yahoo! seine Webanwendungen über eine Vielzahl von Servern verteilt, musste für die XMLHttpRequests der aktuell verwendete Server ermittelt werden. Danach wurde über die "QuickBuilder"-Funktion in allen verfügbaren Verzeichnissen nach Adressen gesucht, die noch nicht im Adressbuch des Opfers gespeichert waren. Die ersten 100 gefundenen Adressen wurden daraufhin geprüft, ob sie auf @yahoo.com oder @yahoogroups.com enden (denn nur dort konnte der Wurm ja ausgeführt werden). Außerdem wurde die Adresse des Opfers und des Senders des Wurms aus den von Yahoo! ausgefüllten Formularfeldern gelesen, damit der Wurm sich nicht selbst an ein vorheriges Opfer schickt. An die für den Wurm brauchbaren Adressen wurde dann eine Kopie des Wurms geschickt: Eine der Adressen wurde in das To:-Feld eingetragen, alle anderen in das BCC:-Feld. Bevor die Mail abgeschickt werden konnte, musste der sog. 'crumb' ermittelt werden, ein zufällig erzeugter Hashwert, mit dem Yahoo! das automatische Versenden von Mails verhindert.
Nachdem der Wurmcode ausgeführt wurde, wurde der Benutzer auf eine andere Website weitergeleitet, wobei verschiedene Parameter übertragen wurden: Zum einen die gefundenen E-Mail-Adressen, zum anderen verschiedene Parameter aus der Yahoo!-URL, die vermutlich zur Tarnung der Mailadressen dienten, die dadurch in der URL-Zeile nicht mehr sichtbar waren. Auf der als Ziel dienenden Seite wurde Werbung eingeblendet, der Wurm sollte also wahrscheinlich für reichlich Traffic und damit verbunden höhere Einnahmen des Wurm-Autors sorgen.
Laut Internet Storm Center gibt es zwei Varianten des Wurms, bei der zweiten wurden Fehler korrigiert. Beide funktionierten aber aufgrund weiterer Fehler nicht so, wie vom Autor gedacht. Z.B. sollte ein Browserfenster für www.lastdata.com geöffnet werden, was aber an einem Schreibfehler (www,lastdata.com) scheiterte.
Das Ziel der Weiterleitung enthielt einen Besucherzähler, so das die Infektionsrate ermittelt werden konnte. Am 11. und 12. Juni 2006 wurden ungefähr 200.000 Mail-Accounts infiziert. Danach wurde der Wurm durch eine Korrektur des JavaScript-Filters ausgerottet.
Weiter zum Wurm-Code oder zurück zur Kapitel-Startseite oder zur Doku-Startseite