Skip to content

Transitive Trojanische Pferde wie XcodeGhost als neue Gefahr?

XcodeGhost ist eigentlich ein altbekannter Angriffsweg, aber ein sehr seltener. Das Stichwort dazu ist "transitives Trojanisches Pferd".

Transitive Trojanische Pferde in der Theorie

Schadsoftware, die Entwicklungsumgebungen infiziert, ist theoretisch ein alter Hut. Persönlich fällt mir da sofort immer die erste Vorlesung zur IT-Sicherheit eingefallen, die ich gehört habe - irgendwann Anfang bis Mitte der 90er Jahre des letzten Jahrhunderts (IT-mäßig also kurz nach der Steinzeit). Andreas Pfitzmann hat die Vorlesung mit dem Titel "Sicherheit in Rechnernetzen" gehalten und sowohl die transitive Ausbreitung von Fehlern als auch "transitive Trojanische Pferde" erwähnt. Eine neuere Version des Skripts ist online verfügbar, "transitive Trojanische Pferde" werden darin auf Seite 11 (im Skript, Seite 23 im PDF) so definiert:

"Üblicherweise stellt man sich auch vor, daß ein Trojanisches Pferd vom Täter direkt dort untergebracht werden muß, wo es subversiv wirken soll. Auch diese Vorstellung ist falsch: Werden beim Entwurf Hilfsmittel verwendet (z.B. Compiler), so kann sowohl der Entwerfer als auch das Entwurfshilfsmittel ein Trojanisches Pferd im Entwurf unterbringen. Da mit Entwurfshilfsmitteln weitere Entwurfshilfsmittel entworfen werden, gilt dies rekursiv, so daß sich ein Trojanisches Pferd in der transitiven Hülle aller Entwürfe ausbreiten kann, an denen sein Gastgebersystem direkt oder indirekt beteiligt war [Thom_84, Pfit_89]. Ich spreche deshalb von transitiven Trojanischen Pferden."

[Thom_84] ist der Artikel "Reflections on Trusting Trust" (als Webseite via Archive.org oder als PDF via ACM.org) von Unix-Mitentwickler Ken Thompson.

Der beschrieb in seiner Rede anlässlich der Verleihung des Turing Awards 1984 an ihn und Dennis Ritchie ein transitives Trojanisches Pferd so: Ein manipulierter Compiler könnte in das Unix-Programm login zusätzlichen Code integrieren, der zusätzlich zur Anmeldung mit dem jeweiligen Passwort des Benutzers auch die Anmeldung mit einem vorher bestimmten Passwort zulässt. Dieser Schadcode wäre im Quelltext des login-Programms nicht vorhanden, und wenn schon der Compiler des verwendeten C-Compilers manipuliert wäre, nicht einmal im Code des für das Übersetzen von login verwendeten Compilers.

Transitive Trojanische Pferde in der Praxis

Eigentlich ist ein transitives Trojanisches Pferd also ein für den Angreifer sehr interessanter Weg, Schadcode zu verbreiten. Es grenzt also an ein Wunder, dass es entsprechende Angriffe nicht schon viel öfter gab. Spontan fallen mir ganze 3 (in Worten: Drei!) ein:

  1. Im Sommer 2009 wurde der Virus Induc entdeckt, der damals schon veraltete Versionen der Delphi-Entwicklungsumgebung infizierte. Nach der Infektion wurde der Virus-Code in jedes danach kompilierte Programm eingefügt. Die Schadfunktion des Virus war sehr beschränkt: Er suchte nach vorhandenen Delphi-Entwicklungsumgebungen und infizierte diese. Außer sich selbst zu verbreiten, macht der Virus also gar nichts. Aber das wenige machte er sehr effektiv: Innerhalb weniger Tage wurden von Sophos mehr als 3000 infizierte Programme entdeckt.
  2. Stuxnet nutzt eine ähnliche Taktik zur Verbreitung: Der Wurm infiziert Projekte für die Step7-Entwicklungsumgebung, um seinen Schadcode zum Zerstören der Uran-Zentrifugen in die Steuerprogramme für die Industriesteuerungen einzuschleusen.
  3. Im März dieses Jahres wurde bekannt, dass die NSA eine präparierte Xcode-Version nutzen wollte, um Mac-OS-X- und iOS-Programme mit Schadcode zu infiltrieren. Die Aktion hat den Codenamen Strawhorse.
    Ebenfalls im März wurde XcodeGhost erstmals verbreitet. Könnte es sein, dass die Cyberkriminellen damit auf dumme Ideen gebracht wurden?

Transitive Trojanische Pferde in der Zukunft

XcodeGhost scheint ja recht erfolgreich gewesen zu sein, jedenfalls was die Verbreitung betrifft. Das könnte die Cyberkriminellen dazu bewegen, solche Angriffe in Zukunft häufiger zu starten. Es müssen ja nicht unbedingt Entwicklungsumgebungen manipuliert werden, entsprechender Schadcode könnte auch in Dritthersteller-Bibliotheken, Entwickler-Tools, ... enthalten sein.

Wie wäre es zum Beispiel mit einem Editor, der an passender Stelle im Sourcecode ein paar Zeilen zum Informieren der Cyberkriminellen und zum Öffnen einer Hintertür einfügt? So ein Code dürfte in den meisten Sprachen in wenigen Zeilen zu implementieren sein und oft nicht weiter auffallen. Wobei der manipulierte Editor den selbst eingefügten Schadcode ja auch ganz einfach vor dem Benutzer verbergen könnte. Der würde dann nur den selbst geschriebenen Code sehen, so lange er den Quelltext nicht mit einem anderen Editor öffnet.

Einfacher dürfte aber ein Angriff über Bibliotheken sein. Wie einfach, hat ja XcodeGhost gezeigt. Eine viel genutzte Library mit Schadcode in der am häufigsten genutzten Funktion dürfte sehr viele Opfer finden. Handelt es sich dann noch um eine Shared Library, würde die bei passender Wahl von Installationsort und Versionsnummer sogar alle anderen bereits installierten Programme "infizieren", die die gleiche Library verwenden. Denn dir würden dann ja auch die manipulierte Version verwenden und damit den Schadcode ausführen.

Wie könnte so ein Angriff aussehen? Zum Beispiel könnten die Cyberkriminellen wie im Fall von Delphi einen Virus frei setzen, der die Entwicklungsumgebung oder Bibliothek mit Schadcode infiziert. Oder einfach ein Tool entwickeln, das viele Entwickler brauchen können, und bei ausreichender Verbreitung die Funktionen zum Verbreiten des Schadcodes in einem Update einfügen.

Sie könnten auch die Server eines Herstellers kompromittieren und dann vorhandene Dateien durch kompromittierte Versionen austauschen. Bisher sind derartige Angriffe aber immer recht schnell aufgefallen. Zielführender könnte es sein, Bibliotheken über alternative Wege zu verteilen und darauf zu hoffen, dass ein paar Entwickler sie statt der Originaldateien verwenden. Bei Open-Source-Software könnten die Cyberkriminellen auch versuchen, den Schadcode gut getarnt in das Code-Repository einzufügen und darauf zu hoffen, dass die Schadfunktionen nicht auffallen.

Oder was weiß ich auf was für Ideen die Cyberkriminellen noch kommen, wenn sie neue Wege zur Verbreitung ihrer Schadsoftware suchen. Noch scheinen sie ja mit Drive-by-Infektionen sehr gut zu fahren und sich weitgehend darauf zu konzentrieren. Aber das wird ja nicht immer so bleiben.

Carsten Eilers

Trackbacks

Dipl.-Inform. Carsten Eilers am : XcodeGhost - Via manipulierten Xcode-Versionen in den iOS App Store

Vorschau anzeigen
XcodeGhost ist eine sehr ungewöhnliche Art von Schadsoftware: Sie wird über eine manipulierte Version von Apples Entwicklungsumgebung Xcode verbreitet und ist dadurch in etliche damit entwickelte Apps in Apples App Store gelangt. Etwas, was