2. November 2021, 23:40
Lesezeit: ca. 2 Min

Homoglyphen im DevOps

Vor einigen Monaten habe ich von kyrillischen Buchstaben in Spam- und Phishingmails geschrieben, die leicht mit unseren lateinischen verwechselt werden können.1 Diesen Gedanken haben Ross Anderson und Nicholas Boucher in Ihrem Paper “Trojan Source: Invisible Vulnerabilities” weiter ausgeführt2 und auf diverse Compiler, Editoren und Tools in der Softwareentwicklung geschaut.

Das Ergebnis ist niederschmetternd und leider nicht wirklich überraschend. Der Umgang mit Homoglyphen3 steht in vielen Programmiersprachen und Ihren Code-Werkzeugen auf ganz wackeligen Füßen.

Im nachfolgenden Screenshot ist in blau die lateinische Schreibweise des Buchstaben “H” sichtbar und in rot die kyrillische Unicode-Schreibweise.

Screenshot C++ Codeblock

Besonders die vermeintlich modernen Code-Editoren scheitern an der bidirektionalen Unicode-Schreibrichtung4. Was helfen tolle, bunte Emoticons im Quelltext wenn dem Entwickler oder Auditor etwas anderes angezeigt wird als dem Compiler? Ein Alptraum in jedem Review und ideale Ausgangsbasis für vielfältige Supply-Chain Angriffe, wo ganze Codeblöcke unerkannt an den Compiler gereicht werden.

Meine persönliche Abneigung gegenüber Electron-basierten Apps5 wie beispielsweise VS-Code wird durch dieses Paper wieder einmal bestätigt. Selbst Google ist auf den Trichter gekommen und hat sich vom Zeitgeist web-basierter Cross-Platform Anwendungen gelöst. Künftig werden die Google Apps nativ und im Look und Feel der jeweiligen Client-Betriebssysteme sein.6

Es ist spannend zu erfahren, an welchen Stellen Homoglyphen für Überraschungen sorgen. Ich denke, die beiden CVEs markieren nur die Spitze eines Eisberges, der sich langsam aus dem Dunkeln vor uns aufbaut.

Stark ist dieser Satz am Ende des Papers:

Compilers that are trivially vulnerable to adversarial text encoding cannot reasonably be described as secure.

In diesem Sinne,
Know your Tools!

Euer Tomas Jakobs


  1. https://blog.jakobs.systems/micro/20210618-best-practise/ ↩︎

  2. https://trojansource.codes/trojan-source.pdf ↩︎

  3. https://de.wikipedia.org/wiki/Homoglyph ↩︎

  4. https://unicode.org/reports/tr9/ ↩︎

  5. https://blog.jakobs.systems/micro/20211003-electron-letsencrypt/ ↩︎

  6. https://www.macrumors.com/2021/10/11/google-apps-for-ios-to-switch-to-uikit/ ↩︎

© 2021 Tomas Jakobs - Impressum und Datenschutzhinweis