Schwachstelle in zahlreichen Compilern entdeckt, die bösartigen Code versteckt

Von Yuriy Stanislavskiy | 02.11.2021, 11:16
Schwachstelle in zahlreichen Compilern entdeckt, die bösartigen Code versteckt

Experten der Universität Cambridge haben Informationen über eine gefährliche Sicherheitslücke (CVE-2021-42574) veröffentlicht, die fast alle modernen Quellcode-Compiler betrifft. Der Artikel Trojan Source beschreibt einen heimtückischen Angriff, der es Hackern ermöglicht, bösartigen Code im Quellcode verschiedener Programme zu verstecken.

Der Angriff beruht auf der Art und Weise, wie Compiler die eindeutigen Bezeichner behandeln, mit denen bestimmt wird, ob der Text von links nach rechts oder von rechts nach links ausgerichtet ist. Die Schwachstelle liegt im Unicode-Bidi-Algorithmus, der es erlaubt, Wörter, die von rechts nach links und von links nach rechts geschrieben werden, zusammen zu verwenden. Dank dieses Algorithmus können arabische und englische Wörter kombiniert werden. Sie ermöglicht es, den Text von rechts nach links, von links nach rechts und umgekehrt zu lesen.

In einigen Fällen reicht die Fähigkeit des Unicode-Bidi-Algorithmus nicht aus, um die Darstellung dieser Wörter zu ändern; in solchen Fällen werden spezielle Steuerzeichen verwendet. Wenn jedoch Wörter mit unterschiedlicher Textrichtung in einer Zeile kombiniert werden, ist es möglich, diese Steuerzeichen zu verwenden, um die Leserichtung des Compilers für diesen Text zu ändern und z. B. Zeilen, die wie Kommentare aussehen, als ausführbaren Code funktionieren zu lassen.

Mit dieser Methode können Sie eine bösartige Anweisung in normalen Quellcode einfügen und den Text dieser Anweisung unsichtbar machen, wenn Sie den Code mit einem nachfolgenden Kommentar betrachten. Dies führt dazu, dass völlig andere Zeichen eingefügt werden, die eigentlich beliebiger Code sein könnten. Der endgültige Quellcode bleibt semantisch korrekt, aber nach der Kompilierung geschieht das Gegenteil.

Bei der Überprüfung und Analyse eines solchen Quellcodes sieht der Programmierer Code mit Kommentaren, die keinen Verdacht erregen, aber der Compiler oder Interpreter kehrt die logische Zeichenfolge um und ein unschuldiger Kommentar wird zu einem zusätzlichen Code, der in das Programm eingefügt wird. Der Fehler ist in fast allen Compilern vorhanden - für die Programmiersprachen C, C++ (gcc und clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go und Python; in verschiedenen populären Code-Editoren, darunter VS Code, Emacs, Atom; und in den Schnittstellen zur Überprüfung des Quellcodes in GitHub, Gitlab, BitBucket und allen Atlassian-Produkten.

Quelle: trojansourcezdnet