Trojan Source, Angriff, der es ermöglicht, für den Entwickler unsichtbare Codeänderungen hinzuzufügen

Vor ein paar Tagen Forscher der Cambridge University veröffentlicht die Veröffentlichung von eine Technik, um Codes subtil zu ersetzen bösartig im Quellcode der Anwendung.

Die Angriffsmethode hat das vorbereitet Es ist bereits unter CVE-2021-42574 gelistet Es trägt den Namen Trojan Source und basiert auf der Bildung von Texten, die für den Compiler / Interpreter und den Betrachter des Codes unterschiedlich aussehen.

Über Trojaner-Quellen

Die Methode beruht auf der Anwendung spezieller Unicode-Zeichen in Codekommentaren, die die Anzeigereihenfolge des bidirektionalen Textes ändern. Mit Hilfe dieser Steuerzeichen einige Textteile können von links nach rechts angezeigt werden, andere von rechts nach links.

In der täglichen Praxis können diese Steuerzeichen beispielsweise verwendet werden, um hebräische oder arabische Zeichenfolgen in eine Codedatei einzufügen. Wenn Sie diese Zeichen jedoch verwenden, um Zeilen mit unterschiedlichen Textrichtungen in derselben Zeile zu kombinieren, können von rechts nach links angezeigte Textpassagen vorhandenen normalen Text überlappen, der von links nach rechts angezeigt wird.

Mit dieser Methode dem Code kann ein bösartiges Konstrukt hinzugefügt werden, aber dann machen Sie den Text mit dieser Konstruktion beim Betrachten des Codes unsichtbar, indem Sie die von rechts nach links angezeigten Zeichen im nächsten Kommentar oder innerhalb des Literals hinzufügen, was dazu führt, dass völlig andere Zeichen über die bösartige Einfügung gelegt werden. Ein solcher Code wird zwar semantisch korrekt sein, aber er wird anders interpretiert und angezeigt.

Wir haben Wege entdeckt, die Codierung von Quellcodedateien so zu manipulieren, dass menschliche Betrachter und Compiler unterschiedliche Logiken sehen. Eine besonders schädliche Methode verwendet Unicode-Direktionalitäts-Override-Zeichen, um den Code als Anagramm seiner wahren Logik anzuzeigen. Wir haben überprüft, dass dieser Angriff gegen C, C++, C#, JavaScript, Java, Rust, Go und Python funktioniert und vermuten, dass er gegen die meisten anderen modernen Sprachen funktioniert.

Während Sie den Code überprüfen, Der Entwickler wird mit der visuellen Reihenfolge der Charaktere konfrontiert und sieht einen verdächtigen Kommentar in einem Editor Text, Webinterface oder IDE, Compiler und Interpreter verwenden jedoch die logische Reihenfolge der Zeichen und behandeln den bösartigen Code wie es ist, unabhängig vom bidirektionalen Text im Kommentar. Betroffen sind mehrere gängige Code-Editoren (VS Code, Emacs, Atom) sowie Schnittstellen zum Anzeigen von Code in Repositorys (GitHub, Gitlab, BitBucket und alle Atlassian-Produkte).

Es gibt mehrere Möglichkeiten, die Methode zu verwenden, um böswillige Aktionen zu implementieren: Fügen Sie einen versteckten "Return"-Ausdruck hinzu, der zum vorzeitigen Abbruch der Funktionsausführung führt; die Schlussfolgerung im Kommentar von Ausdrücken, die normalerweise als gültige Konstrukte angesehen werden (z. B. um wichtige Prüfungen zu deaktivieren); Zuweisung anderer Stringwerte, die zu Fehlern bei der Stringvalidierung führen.

Zusätzlich eine andere Angriffsoption wurde vorgeschlagen (CVE-2021-42694), die die Verwendung von Homoglyphen beinhaltet, Symbole, die ähnlich aussehen, sich aber in der Bedeutung unterscheiden und unterschiedliche Unicode-Codes haben. Diese Zeichen können in einigen Sprachen in Funktions- und Variablennamen verwendet werden, um Entwickler in die Irre zu führen. Sie können beispielsweise zwei Funktionen mit nicht unterscheidbaren Namen definieren, die unterschiedliche Aktionen ausführen. Ohne detaillierte Analyse können Sie nicht sofort nachvollziehen, welche dieser beiden Funktionen an einer bestimmten Stelle aufgerufen wird.

Als Schutzmaßnahme, Es wird empfohlen, in Compiler, Interpreter und Assembler-Tools zu implementieren, die Unicode-Zeichen unterstützen und einen Fehler oder eine Warnung anzeigen ob es ungepaarte Steuerzeichen in Kommentaren, Zeichenfolgenliteralen oder Bezeichnern gibt, die die Ausgaberichtung ändern. Diese Zeichen müssen auch in den Programmiersprachenspezifikationen explizit verboten und in Code-Editoren und Schnittstellen für die Arbeit mit Repositories berücksichtigt werden.

Außerdem Schwachstellen wurden bereits behoben vorbereitet für GCC, LLVM / Clang, Rust, Go, Python und Binutils. Auch GitHub, Bitbucket und Jira sind gemeinsam mit GitLab bereits in der Vorbereitung einer Lösung.

Schließlich Wenn Sie mehr darüber erfahren möchten, Sie können konsultieren die Details im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.