Blog

Was ist Trojan Source und wie gelangt es in Ihren Quellcode?

February 23, 2022
Laura Verheyde
Nahaufnahme einer leuchtenden Leiterplatte mit orangefarbenen Leiterbahnen und dem fokussierten Text „01“.

Anfang November veröffentlichte die University of Cambridge ihre Forschungsarbeit mit dem Titel Trojan-Source. Diese Untersuchung konzentriert sich darauf, wie Backdoors mithilfe von Richtungsformatierungszeichen in Quellcode und Kommentaren versteckt werden können. Auf diese Weise lässt sich Code erstellen, dessen Logik vom Compiler anders interpretiert wird als von einem menschlichen Code-Reviewer.

Diese Schwachstelle ist neu – obwohl Unicode in der Vergangenheit bereits für bösartige Zwecke missbraucht wurde, etwa um die wahre Dateiendung durch Umkehrung der Reihenfolge des letzten Dateinamen-Teils zu verschleiern. Die aktuelle Forschung zeigt, dass viele Compiler Unicode-Zeichen im Quellcode warnungslos ignorieren, während Texteditoren (einschließlich Code-Editoren) Zeilen mit Kommentaren und Code basierend auf diesen Zeichen umbrechen können. Dadurch kann der Editor den Code und die Kommentare anders und in einer anderen Reihenfolge anzeigen, als der Compiler sie verarbeitet – bis hin zum Vertauschen von Code und Kommentaren.

Lesen Sie weiter, um mehr zu erfahren. Oder wenn Sie selbst aktiv werden und einen simulierten Trojan-Source-Angriff ausprobieren möchten, nehmen Sie an unserer kostenlosen und öffentlichen Mission teil, um es selbst zu erleben.

Bidirektionaler Text

Einer dieser Trojan-Source-Angriffe nutzt den Unicode-Bidi-Algorithmus (bidirektional), der steuert, wie Text mit unterschiedlicher Leserichtung, wie etwa Englisch (von links nach rechts) und Arabisch (von rechts nach links), zusammengesetzt wird. Richtungsformatierungszeichen können verwendet werden, um die Gruppierung und Anzeigereihenfolge von Zeichen neu zu ordnen.

Die obige Tabelle enthält einige der für den Angriff relevanten Bidi-Override-Zeichen. Nehmen wir zum Beispiel:

RLI e d o c PDI

Die Abkürzung RLI steht für Right-to-Left Isolate. Sie isoliert den Text von seinem Kontext (begrenzt durch PDI, Pop-Directional-Isolate) und liest ihn von rechts nach links. Das Ergebnis ist:

c o d e

Compiler und Interpreter verarbeiten jedoch normalerweise keine Formatierungssteuerzeichen, einschließlich Bidi-Overrides, bevor sie den Quellcode parsen. Wenn sie die Richtungsformatierungszeichen einfach ignorieren, parsen sie:

e d o c

Alter Wein in neuen Schläuchen?

Natürlich ist das nichts Neues unter der Sonne. In der Vergangenheit wurden Richtungsformatierungszeichen bereits in Dateinamen eingefügt, um deren bösartige Natur zu verschleiern. Ein E-Mail-Anhang, der als 'myspecialexe.doc' angezeigt wird, könnte harmlos wirken, wäre da nicht das RLO-Zeichen (Right-to-Left override), das den wahren Namen als 'myspecialcod.exe' entlarvt.

Der Trojan-Source-Angriff fügt Richtungsformatierungszeichen in Kommentare und Strings innerhalb des Quellcodes ein, da diese keine Syntax- oder Kompilierungsfehler verursachen. Diese Steuerzeichen verändern die Anzeigereihenfolge der Codelogik, wodurch der Compiler etwas völlig anderes liest, als ein Mensch sehen würde.

Zum Beispiel eine Datei, die die folgenden Bytes in dieser Reihenfolge enthält:

Bidirectional Unicode Text

wird durch die Richtungsformatierungszeichen wie folgt neu angeordnet

Directional Formatting Characters

was dazu führt, dass der Code wie folgt dargestellt wird, wenn Richtungsformatierungszeichen nicht explizit hervorgehoben werden:

Bidirectional Unicode Characters

Das RLO-Zeichen kehrt in der letzten Zeile die schließende Klammer in eine öffnende um und umgekehrt. Die Ausführung dieses Codes würde „You are an admin“ ergeben. Die Admin-Prüfung wurde zwar auskommentiert, doch die Steuerzeichen erwecken den Anschein, sie sei noch vorhanden.

(Quelle: https://github.com/nickboucher/trojan-source/blob/main/C%23/commenting-out.csx)

Wie könnte Sie das betreffen?

Viele Sprachen sind anfällig für diesen Angriff: C, C++, C#, JavaScript, Java, Rust, Go und Python – und es ist davon auszugehen, dass es noch mehr sind. Ein erfahrener Entwickler mag bei Richtungsformatierungszeichen im Quellcode stutzen, doch ein Anfänger zuckt vielleicht nur mit den Schultern und denkt sich nichts dabei. Zudem hängt die Visualisierung dieser Zeichen stark von der IDE ab, sodass man sich nie darauf verlassen kann, dass sie erkannt werden.

Doch wie kann diese Schwachstelle überhaupt in den Quellcode gelangen? Erstens durch die Verwendung von Quellcode aus nicht vertrauenswürdigen Quellen, bei denen bösartige Beiträge unbemerkt geblieben sind. Zweitens durch einfaches Kopieren und Einfügen von Code aus dem Internet – etwas, das die meisten von uns Entwicklern schon einmal getan haben. Die meisten Unternehmen verlassen sich auf Softwarekomponenten verschiedener Anbieter. Das wirft die Frage auf: Inwieweit können wir diesem Code voll und ganz vertrauen? Wie können wir Quellcode auf versteckte Hintertüren prüfen?

Wessen Problem ist das?

Einerseits sollten Compiler und Build-Pipelines Quellcodezeilen mit mehr als einer Schreibrichtung ablehnen, es sei denn, eine Richtung ist strikt auf Strings und Kommentare beschränkt. Beachten Sie, dass ein Richtungsformatierungszeichen in einem String oder Kommentar, wenn es nicht beendet wird, einen Richtungswechsel bis zum Zeilenende erzwingen kann. Generell sollten Code-Editoren verdächtige Unicode-Zeichen wie Homoglyphen und Richtungsformatierungszeichen explizit darstellen und hervorheben. Seit November zeigt GitHub bei jeder Codezeile mit bidirektionalem Unicode-Text ein Warnsymbol und eine Meldung an, auch wenn nicht hervorgehoben wird, an welcher Stelle sich diese Zeichen befinden. Dies kann dazu führen, dass sich bösartige Richtungsänderungen zusammen mit harmlosen einschleichen.

Das Bewusstsein bei Entwicklern und Code-Reviewern ist entscheidend. Deshalb haben wir eine Anleitung erstellt, die diese Schwachstelle veranschaulicht. Diese Anleitung ist derzeit für Java, C#, Python, Go und PHP verfügbar.

Wenn Sie mehr erfahren möchten, probieren Sie unsere Simulation (öffentliche Missionen) zu Trojan Source aus und lesen Sie die Trojan Source-Forschung.

Simulation in Java

Simulation in C#

Simulation in PHP

Simulation in GO

Simulation in Python

Slogan

Kontrollieren Sie KI-gestützte Entwicklung, bevor sie in Produktion geht

Bewerten Sie KI-gestützte Risiken, setzen Sie Richtlinien für sicheren Code direkt beim Commit durch und beschleunigen Sie die sichere Bereitstellung über Ihren gesamten SDLC hinweg.

Demo buchen
Ressourcenbibliothek

Weitere Blogs entdecken

Erhalten Sie Zugang zu Experteninhalten über sichere Programmierung, KI-Governance und Software-Risikomanagement.

alle anzeigen
Fallstudie
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Mehr erfahren
Fallstudie
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Mehr erfahren
Fallstudie
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Eine Sicherheitskultur: Wie Sage sein Champions-Programm aufgebaut hat

Erfahren Sie, wie Sage die Sicherheit durch einen flexiblen, beziehungsorientierten Ansatz gestärkt, über 200 Security Champions ausgebildet und eine messbare Risikoreduzierung erzielt hat.

Mehr erfahren
Blog
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Cybersecurity Awareness Month 2026: Das Verständnis von KI-Sicherheit ist entscheidend für die Unternehmensverteidigung

Wir haben einen Punkt erreicht, an dem die meisten führenden KI-Unternehmen öffentlich eine weltweite Verlangsamung der KI-Entwicklung gefordert haben, damit die Sicherheitsvorkehrungen Schritt halten können. Doch die Wahrheit ist: Ernsthafte Sicherheitsprobleme sind bereits Realität geworden. Dies bringt unzählige Sicherheitsverantwortliche und Führungsteams in eine dringliche Lage, da die finanziellen Kosten und Risiken durch die Implementierung von KI stetig steigen.

Mehr erfahren
Blog
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Enabler 8: Branding für Ihr Programm

Ein Programm für sicheres Programmieren braucht mehr als nur großartige Inhalte, um erfolgreich zu sein. Enabler 8 zeigt, wie Branding die Teilnahme zu einem begehrten, statusorientierten Erlebnis macht.

Mehr erfahren
Blog
Filterbezeichnung
Dies ist ein Text innerhalb eines Div-Blocks.

Jeder Mitarbeiter steht jetzt an vorderster Front der KI-Cybersicherheit

Die Unternehmenslandschaft wandelt sich mit einer Geschwindigkeit, die kaum jemand vorhergesehen hat, bis es zu spät war. Wir haben offiziell die Schwelle von handgeschriebenem Code und einfacher Copilot-Unterstützung hin zur Ära des Agentic Development Lifecycle (ADLC) überschritten. Während autonome KI-Agenten eine beispiellose Effizienz in vielen Bereichen versprechen, bringen sie auch eine völlig neue Klasse von Sicherheits- und Regulierungsrisiken mit sich.

Mehr erfahren

Sichere KI-gestützte Entwicklung vor dem Release

Erkennen Sie Entwicklerrisiken, setzen Sie Richtlinien durch und verhindern Sie Schwachstellen über den gesamten Softwareentwicklungszyklus hinweg.

Demo buchen
Keine Elemente gefunden.