{"id":27789,"date":"2021-11-26T16:20:17","date_gmt":"2021-11-26T14:20:17","guid":{"rendered":"https:\/\/www.kaspersky.de\/blog\/?p=27789"},"modified":"2021-11-26T16:20:17","modified_gmt":"2021-11-26T14:20:17","slug":"trojan-source","status":"publish","type":"post","link":"https:\/\/www.kaspersky.de\/blog\/trojan-source\/27789\/","title":{"rendered":"Trojan Source: Unsichtbare Schwachstellen"},"content":{"rendered":"<p>Experten der University of Cambridge <a href=\"https:\/\/trojansource.codes\/trojan-source.pdf\" target=\"_blank\" rel=\"noopener nofollow\">erl\u00e4utern<\/a> eine Schwachstelle, von der laut den Forschern quasi alle modernen Compiler betroffen sind. Bei dieser neuen Angriffsmethode wird eine legitime Funktion eines Entwicklungstools verwendet, bei der der Quellcode etwas anzeigt, aber etwas ganz anderes kompiliert (die Programmiersprache in die Programmiersprache eines bestimmten Computers \u00fcbersetzt) wird. Das ist durch Steuerzeichen im Unicode machbar.<\/p>\n<div id=\"attachment_27790\" style=\"width: 1616px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27790\" class=\"wp-image-27790 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/96\/2021\/11\/25103052\/trojan-source-characters.jpg\" alt=\"Zeichen, die die Richtung des Unicodes formatieren und f\u00fcr Angriffe verwendet werden k\u00f6nnen.\" width=\"1606\" height=\"355\"><p id=\"caption-attachment-27790\" class=\"wp-caption-text\">Zeichen, die die Richtung des Unicodes formatieren und f\u00fcr Angriffe verwendet werden k\u00f6nnen. <a href=\"https:\/\/trojansource.codes\/trojan-source.pdf\" target=\"_blank\" rel=\"noopener nofollow\">Quelle<\/a>.<\/p><\/div>\n<p>Meistens werden Steuerzeichen nicht mit dem restlichen Code auf dem Bildschirm angezeigt (es gibt allerdings Editors, die es tun), aber diese Zeichen ver\u00e4ndern den Text auf eine bestimmte Weise. <a href=\"https:\/\/www.w3.org\/International\/articles\/inline-bidi-markup\/uba-basics\" target=\"_blank\" rel=\"noopener nofollow\">Diese Tabelle<\/a> enth\u00e4lt beispielsweise die Codes des Unicode-Bidi-Algorithmus.<\/p>\n<p>Wie Sie wahrscheinlich wissen, werden manche menschlichen Sprachen von links nach rechts geschrieben (z. B. Deutsch) und andere von rechts nach links (z. B. Arabisch). Wenn der Code nur eine Sprache enth\u00e4lt, ist das kein Problem. Aber wenn in einer Codezeile sowohl deutsche als auch arabische W\u00f6rter enthalten sind, stellt die Funktion Bidi override sicher, dass die Sprachen korrekt dargestellt werden.<\/p>\n<p>In der Studie wurde diese Art von Code auch angewendet. Zum Beispiel, um in der Programmiersprache Python den Comment Terminator von der Mitte der Linie ans Ende zu verschieben. Mithilfe von RLI-Code versetzen die Forscher nur wenige Zeichen und lie\u00dfen alles andere unber\u00fchrt.<\/p>\n<div id=\"attachment_27791\" style=\"width: 1760px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27791\" class=\"wp-image-27791 size-full\" src=\"https:\/\/media.kasperskydaily.com\/wp-content\/uploads\/sites\/96\/2021\/11\/25103200\/trojan-source-example.jpg\" alt=\"Beispiele von verwundbarem Python-Code, der bidirektionalen Code enth\u00e4lt. \" width=\"1750\" height=\"292\"><p id=\"caption-attachment-27791\" class=\"wp-caption-text\">Beispiele von verwundbarem Python-Code, der bidirektionalen Code enth\u00e4lt. <a href=\"https:\/\/trojansource.codes\/trojan-source.pdf\" target=\"_blank\" rel=\"noopener nofollow\">Quelle<\/a>.<\/p><\/div>\n<p>Auf der rechten Seite wird die Version angezeigt, die die Programmierer sehen, wenn sie den Quellcode \u00fcberpr\u00fcfen und auf der linken Seite wird angezeigt, wie der Code ausgef\u00fchrt wird. Die meisten Compiler ignorieren Steuerzeichen. Jeder, der den Code \u00fcberpr\u00fcft, wird denken, dass die f\u00fcnfte Linie nur ein harmloser Kommentar ist. Aber die versteckte Early-Return-Anweisung befielt dem Programm die Schritte auszulassen, die f\u00fcr die Abbuchung des Betrags erforderlich sind. In diesem Beispiel wird das Banking-Programm das Geld auszahlen, aber den Betrag nicht vom Konto abbuchen.<\/p>\n<h2>Warum ist das gef\u00e4hrlich?<\/h2>\n<p>Auf den ersten Blick erscheint die Schwachstelle zu simpel, um gef\u00e4hrlich zu sein. Wer wird unsichtbare Zeichen in einen Code einf\u00fcgen, in der Hoffnung, dass die Quellcodepr\u00fcfer es nicht merken? Trotzdem ist das Problem ernst genug, um eine ID zu erhalten (<a href=\"https:\/\/cve.mitre.org\/cgi-bin\/cvename.cgi?name=CVE-2021-42574\" target=\"_blank\" rel=\"noopener nofollow\">CVE-2021-42574<\/a>). Vor der Ver\u00f6ffentlichung des Berichts haben die Autoren die Entwickler der g\u00e4ngigsten Compiler benachrichtigt, damit sie ausreichend Zeit haben, um die Patches f\u00fcr die Sicherheitsl\u00fccke bereitzustellen.<\/p>\n<p>Im Bericht werden die grundlegenden Angriffsm\u00f6glichkeiten erkl\u00e4rt. Die zwei Ausf\u00fchrungsstrategien bestehen darin, einen Befehl in einem Kommentar zu verstecken und etwas in einer Linie zu verstecken, die auf dem Bildschirm angezeigt wird. Rein theoretisch ist es m\u00f6glich genau die gegenteilige Wirkung zu erzielen: Einen Code erstellen, der wie ein Befehl aussieht, aber tats\u00e4chlich Teil eines Kommentars ist und deshalb nicht ausgef\u00fchrt werden kann. Es ist davon auszugehen, dass es auch noch kreativere Methoden f\u00fcr den Exploit dieser Schwachstelle gibt.<\/p>\n<p>Sie k\u00f6nnte z. B. f\u00fcr ausgefeilte Lieferkettenangriffe verwendet werden, indem ein Anbieter einem Unternehmen Code liefert, der korrekt aussieht, aber nicht so funktioniert, wie er sollte. Sobald das Produkt mit diesem Code auf den Markt kommt, kann die \u201ealternative Funktion\u201c von Dritten ausgenutzt werden, um die Kunden anzugreifen.<\/p>\n<h2>Wie gef\u00e4hrlich ist die Schwachstelle wirklich?<\/h2>\n<p>Kurz nachdem der Bericht \u201eTrojan Source: Invisible Vulnerabilities\u201c (Trojan Source: Unsichtbare Schwachstellen) ver\u00f6ffentlicht wurde, kritisierte der Programmierer Russ Cox den Inhalt. Er war, um es milde auszudr\u00fccken, vollkommen unbeeindruckt. Das begr\u00fcndete er folgenderma\u00dfen:<\/p>\n<ul>\n<li>Die Angriffsmethode ist nicht neu.<\/li>\n<li>Viele Code-Editors verwenden Syntax Highlighting, bzw. Code Coloring, um \u201eunsichtbaren\u201c Code anzuzeigen.<\/li>\n<li>Patches f\u00fcr die Compiler seien nicht erforderlich \u2013 es reiche aus, den Code sorgf\u00e4ltig auf zuf\u00e4llige oder absichtliche Fehler zu \u00fcberpr\u00fcfen.<\/li>\n<\/ul>\n<p>Tats\u00e4chlich gab es bereits <a href=\"https:\/\/github.com\/golang\/go\/issues\/20209\" target=\"_blank\" rel=\"noopener nofollow\">2017<\/a> Probleme mit den Steuerzeichen im Unicode. Auch die Probleme mit den <a href=\"https:\/\/de.wikipedia.org\/wiki\/Homoglyph\" target=\"_blank\" rel=\"noopener nofollow\">Homoglyphen<\/a> \u2013 Zeichen, die \u00e4hnlich aussehen, aber verschiedenen Code haben \u2013 sind nichts Neues und k\u00f6nnen ebenso daf\u00fcr verwendet werden, ver\u00e4nderten Code zu verschleiern, damit er die manuelle Pr\u00fcfung \u00fcbersteht.<\/p>\n<p>Allerdings leugnet Cox mit seiner kritischen Analyse das Problem nicht \u2013 er findet die Beschreibung einfach nur zu dramatisch. \u00c4hnlich wie der apokalyptische Artikel von Brian Krebs <a href=\"https:\/\/krebsonsecurity.com\/2021\/11\/trojan-source-bug-threatens-the-security-of-all-code\/\" target=\"_blank\" rel=\"noopener nofollow\">\u201eTrojan Source\u2018 Bug Threatens the Security of All Code\u201c<\/a> (Trojan-Source-Schwachstelle bedroht die Sicherheit von allem Code).<\/p>\n<p>Das Problem besteht tats\u00e4chlich, aber gl\u00fccklicherweise ist die L\u00f6sung einfach. Alle bereits oder bald verf\u00fcgbaren Patches werden die Kompilierung von Code mit solchen Zeichen blockieren. (Ein Beispiel ist die <a href=\"https:\/\/blog.rust-lang.org\/2021\/11\/01\/cve-2021-42574.html\" target=\"_blank\" rel=\"noopener nofollow\">Sicherheitsbenachrichtigung<\/a> der Entwickler von Rust-Compiler.) Wenn Sie eigene Buildtools f\u00fcr Softwareentwicklung verwenden, empfehlen wir Ihnen \u00e4hnliche Pr\u00fcfungen durchzuf\u00fchren, um sich zu vergewissern, dass sich im Quellcode keine Zeichen verstecken, die sich normalerweise nicht dort befinden sollten.<\/p>\n<h2>Die Gefahr von Lieferkettenangriffen<\/h2>\n<p>Viele Unternehmen beauftragen externe Dienstleister mit den Entwicklungsaufgaben oder verwenden vorgefertigte Open-Source-Module f\u00fcr ihre Projekte. Das erm\u00f6glicht <a href=\"https:\/\/encyclopedia.kaspersky.com\/glossary\/supply-chain\/\" target=\"_blank\" rel=\"noopener\">Lieferkettenangriffe<\/a>. Cyberkriminelle k\u00f6nnen Auftragnehmer kompromittieren oder Code in ein Open-Source-Projekt einbetten, der als Hintert\u00fcr dient, um in der letzten Version der Software sch\u00e4dlichen Code einzuschleusen. Bei den Code-Audits werden solche Hintert\u00fcren in der Regel gefunden. Ist das nicht der Fall, dann erhalten die Kunden zwar Software von einer vertrauensw\u00fcrdigen Quelle, k\u00f6nnen aber ihre Daten trotzdem verlieren.<\/p>\n<p>Trojan Source ist ein Beispiel f\u00fcr einen weit ausgekl\u00fcgelteren Angriff. Anstatt zu versuchen Megabytes an sch\u00e4dlichen Code in das Endprodukt zu schmuggeln, k\u00f6nnen die Angreifer diesen Ansatz verwenden, um Schadcode in wichtige Elemente der Software einzuschleusen, der sehr schwer zu entdecken ist und viele Jahre darauf ausgenutzt werden kann.<\/p>\n<h2>So k\u00f6nnen Sie sich sch\u00fctzen<\/h2>\n<p>Wir empfehlen Folgendes, um sich vor Angriffen nach der Trojan-Source-Methode zu sch\u00fctzen:<\/p>\n<ul>\n<li>Aktualisieren Sie alle Compiler, die Sie verwenden (wenn ein Patch daf\u00fcr bereitgestellt wurde).<\/li>\n<li>Schreiben Sie au\u00dferdem Ihre eigenen Skripts, die eine gewisse Anzahl an Steuerzeichen im Quellcode entdecken k\u00f6nnen.<\/li>\n<\/ul>\n<p>Zur Verhinderung von Lieferkettenangriffen ist es erforderlich sowohl manuelle Code-Audits als auch einige automatisierte Tests durchzuf\u00fchren. Grunds\u00e4tzlich ist es sinnvoll den eigenen Code aus der Perspektive eines Cyberverbrechers zu analysieren und Schwachstellen zu suchen, die den ganzen Sicherheitsmechanismus au\u00dfer Gefecht setzen k\u00f6nnten. Wenn Ihnen unternehmenseigene Ressourcen f\u00fcr diese Art von Analysen fehlen, ziehen Sie in Betracht <a href=\"https:\/\/www.kaspersky.de\/enterprise-security\/cybersecurity-services?icid=de_kdailyplacehold_acq_ona_smm__onl_b2b_kasperskydaily_wpplaceholder_______\" target=\"_blank\" rel=\"noopener\">externe Experten<\/a> damit zu beauftragen.<\/p>\n<input type=\"hidden\" class=\"category_for_banner\" value=\"kesb-top3\">\n","protected":false},"excerpt":{"rendered":"<p>Forscher der University of Cambridge beschreiben die Trojan-Source-Methode, die es erm\u00f6glicht Programmiersprachen per Unicode zu trojanisieren.<\/p>\n","protected":false},"author":665,"featured_media":27792,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1848,3107,3108],"tags":[963,3900,1498,382],"class_list":{"0":"post-27789","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-business","8":"category-enterprise","9":"category-smb","10":"tag-entwicklung","11":"tag-lieferkette","12":"tag-schwachstellen","13":"tag-sicherheitslucken"},"hreflang":[{"hreflang":"de","url":"https:\/\/www.kaspersky.de\/blog\/trojan-source\/27789\/"},{"hreflang":"en-in","url":"https:\/\/www.kaspersky.co.in\/blog\/trojan-source\/23678\/"},{"hreflang":"en-ae","url":"https:\/\/me-en.kaspersky.com\/blog\/trojan-source\/19130\/"},{"hreflang":"ar","url":"https:\/\/me.kaspersky.com\/blog\/trojan-source\/9584\/"},{"hreflang":"en-us","url":"https:\/\/usa.kaspersky.com\/blog\/trojan-source\/25764\/"},{"hreflang":"en-gb","url":"https:\/\/www.kaspersky.co.uk\/blog\/trojan-source\/23819\/"},{"hreflang":"es-mx","url":"https:\/\/latam.kaspersky.com\/blog\/trojan-source\/23457\/"},{"hreflang":"es","url":"https:\/\/www.kaspersky.es\/blog\/trojan-source\/26486\/"},{"hreflang":"it","url":"https:\/\/www.kaspersky.it\/blog\/trojan-source\/26051\/"},{"hreflang":"ru","url":"https:\/\/www.kaspersky.ru\/blog\/trojan-source\/31982\/"},{"hreflang":"tr","url":"https:\/\/www.kaspersky.com.tr\/blog\/trojan-source\/10311\/"},{"hreflang":"x-default","url":"https:\/\/www.kaspersky.com\/blog\/trojan-source\/42987\/"},{"hreflang":"pt-br","url":"https:\/\/www.kaspersky.com.br\/blog\/trojan-source\/18579\/"},{"hreflang":"pl","url":"https:\/\/plblog.kaspersky.com\/trojan-source\/15568\/"},{"hreflang":"ja","url":"https:\/\/blog.kaspersky.co.jp\/trojan-source\/32001\/"},{"hreflang":"nl","url":"https:\/\/www.kaspersky.nl\/blog\/trojan-source\/27870\/"},{"hreflang":"ru-kz","url":"https:\/\/blog.kaspersky.kz\/trojan-source\/24631\/"},{"hreflang":"en-au","url":"https:\/\/www.kaspersky.com.au\/blog\/trojan-source\/29994\/"},{"hreflang":"en-za","url":"https:\/\/www.kaspersky.co.za\/blog\/trojan-source\/29798\/"}],"acf":[],"banners":"","maintag":{"url":"https:\/\/www.kaspersky.de\/blog\/tag\/schwachstellen\/","name":"Schwachstellen"},"_links":{"self":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/27789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/users\/665"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/comments?post=27789"}],"version-history":[{"count":2,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/27789\/revisions"}],"predecessor-version":[{"id":27794,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/posts\/27789\/revisions\/27794"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/media\/27792"}],"wp:attachment":[{"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/media?parent=27789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/categories?post=27789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kaspersky.de\/blog\/wp-json\/wp\/v2\/tags?post=27789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}