
Generieren Sie bösartige Dateien mithilfe des kürzlich veröffentlichten Bidi-Angriffs (CVE-2021-42574)
// Update: 05.11.2021
Es ist nun möglich, Dateien nicht nur zu kodieren, sondern auch zu dekodieren. Das bedeutet, dass Dateien mit unterstützten Bidi-Zeichen jetzt in Vorlagendateien mit Bidi-Platzhaltern (LRO, ...) übersetzt werden können.
Erzeugen Sie bösartige Dateien mithilfe der kürzlich veröffentlichten Bidi-Angriff-Schwachstelle, die in der Unicode-Spezifikation entdeckt wurde und viele Interpreter/Kompiler betrifft.
Zitat von cve.mitre.org:
Im Bidirektionalen Algorithmus der Unicode-Spezifikation bis Version 14.0 wurde ein Problem entdeckt. Dieser ermöglicht die visuelle Neuanordnung von Zeichen über Steuersequenzen, die dazu verwendet werden können, Quellcode zu erzeugen, der eine andere Logik darstellt als die logische Reihenfolge der Token, die von Compilern und Interpreten verarbeitet wird. Angreifer können dies ausnutzen, um Quellcode für Compiler, die Unicode akzeptieren, so zu kodieren, dass gezielte Schwachstellen für menschliche Prüfer unsichtbar eingeführt werden.
Siehe den Bericht über den Bidirektionalen Algorithmus von unicode.org:
https://www.unicode.org/reports/tr9/tr9-42.html
Siehe die Originalquelle der University of Cambridge:
https://www.trojansource.codes/trojan-source.pdf
python3 codegen.py [-h] [-m MODE] [-i INFILE] [-o OUTFILE] [-u] [-a]
Dies übersetzt eine Vorlagendatei, die Bidi-Platzhalter enthält, in eine Datei mit tatsächlichen Bidi-Zeichen. Alle Beispiele stammen aus dem referenzierten PDF. Um diese Beispiele auszuführen, führen Sie codegen.py mit den erforderlichen Argumenten aus:
python3 codegen.py -m encode -i infile.xyz -o outfile.xyz und führen Sie outfile.xyz aus bzw. kompilieren Sie es.
Dies übersetzt eine Datei mit Bidi-Zeichen in eine Datei mit den entsprechenden Bidi-Platzhaltern. HINWEIS: Die Ausgabe kann nicht ausgeführt werden, da sie nur eine Vorlage ist.
python3 codegen.py -m decode -i infile.xyz -o outfile.xyz
Um eigene Vorlagen zu erstellen, setzen Sie Platzhalter (python3 codegen.py -u) an den Stellen, an denen die Sonderzeichen erscheinen sollen. Sehen Sie sich die Beispiele an, um einen ersten Eindruck davon zu bekommen, wie eine Vorlage aussehen könnte.
Die folgende Tabelle (aus dem ursprünglichen Cambridge-Bericht) zeigt die Zeichen, die von diesem Skript derzeit unterstützt werden.
~ https://www.trojansource.codes/trojan-source.pdf
| arg | long arg | param | Beschreibung |
|---|
| -h | --help | none | diese Hilfemeldung anzeigen und beenden |
| -i | --infile | INFILE | Eingabedatei (Vorlage), die Unicode-Platzhalter enthält |
| -o | --outfile | OUTFILE | Ausgabedatei zum Speichern des endgültigen Codes |
| -u | --uctable | none | Unterstützte Bidi-bezogene Zeichen |
| -a | --about | none | About-Text ausgeben |
| -m | --mode | MODE | e|ncode verwenden, um die Vorlage in bösartigen Code umzuwandeln, und d|ecode umgekehrt |