Sourcecode-Editor Visual Studio Code: Fake Extensions lassen sich leicht tarnen
Sicherheitsforscher haben eine als Prettier getarnte Erweiterung im Marktplatz veröffentlicht, die es auf gut 1000 Downloads innerhalb von 48 Stunden brachte.
Der Marktplatz für Erweiterungen für den Sourcecode-Editor Visual Studio Code macht es Angreifern einfach, Fakes regulärer Extensions bereitzustellen. Sicherheitsforscher des auf Cloud-Native-Security spezialisierten Unternehmens Aqua Security haben testweise eine Extension veröffentlicht, die sich als das beliebte Codeformatierungs-Werkzeugs Prettier tarnt. Innerhalb von zwei Tagen brachte sie es auf über 1000 Downloads.
Der auf Open Source aufgebaute freie Editor Visual Studio Code erfreut sich nicht zuletzt aufgrund der einfachen Erweiterbarkeit groĂźer Beliebtheit. Zahlreiche kostenlose Extensions decken die unterschiedlichsten Bereiche von der Anbindung an Programmiersprachen ĂĽber Hilfswerkzeuge zum Debuggen und Testen bis zur Integration mit Containerisierungs-Tools ab.
Auf Tippfehler getippt
Wie bei den Paketmanagern npm oder PyPI ist die Fülle des Angebots Stärke und Schwachstelle zugleich. Auf Anhieb lässt sich schwer erkennen, ob eine Anwendung das Versprochene bietet oder womöglich Schaden anrichtet. Pakete mit Schadcode auf npm und Co tarnen sich gerne als reguläre Packages und setzen auf Techniken wie Typosquatting oder Brandjacking.
Letzteres verwendet Firmennamen, um eine legitime Quelle vorzutäuschen. Beim Typosquatting tragen die Pakete mit Schadcode Namen, die den Bezeichnungen beliebter Pakete ähneln. Die Methode setzt zum einen auf Tippfehler und verwendet zum anderen Trennzeichen wie Unter- und Bindestriche. Irgendwer wird sich schon vertippen, so die berechtigte Hoffnung der Angreifenden.
Lesen Sie auch
Das Team bei Aqua-Security hat für seinen Proof of Concept ebenfalls auf Typosquatting gesetzt und eine Extension veröffentlicht, die sich als das Codeformatierungstool Prettier tarnt. Das Original verzeichnet über 27 Millionen Installationen. Während es esbenp.prettier-vscode
heißt, verzichtet die Fälschung lediglich auf ein "t" und wird zu esbenp.pretier-vscode
.
Mehr Schein als Sein
Tückisch ist, dass die Landing-Page den Tippfehler nicht widerspiegelt. Sie lässt sich frei gestalten, sodass das gefälschte Prettier sowohl das Logo als auch den korrekt geschriebenen Namen anzeigt. Eine Gegenüberstellung der beiden Projektseiten zeigt die Abweichungen lediglich im Detail.
Das Icon, der Name, der Publisher und die Beschreibung sind identisch. Der Marktplatz von Visual Studio Code ermöglicht die freie Wahl über die Property displayName
fĂĽr die angezeigten Namen des Projekts und des Publishers und erlaubt bei beidem Dubletten. Dass die Namen um ein "t" voneinander abweichen, ist lediglich in der URL und in den Zusatzinfos erkennbar, die unterhalb der Projektdetails stehen.
Zwei deutliche Unterschiede fallen in der direkten Gegenüberstellung auf: Die Zahl der Installationen befindet sich beim Original mit 27 Millionen in einer völlig anderen Dimension als die gut 1500 Installationen der Fälschung. Auch die Zahlen der Bewertungen weichen deutlich voneinander ab.
TrĂĽgerische Projektdetails
Auch bei den Projektdetails bietet der Marktplatz einfache Wege zum Verschleiern. Das zugehörige GitHub-Repository lässt sich beliebig angeben, sodass die Fälschung hier schlicht einen Verweis auf das Original-Repo anzeigen kann. Die zugehörigen Infos zu den Pull Requests und dem jüngsten Commit helfen somit ebenfalls nicht dabei, die Fälschung zu erkennen.
Die Daten der Erstveröffentlichung und des jüngsten Updates unter "More Info" lassen sich dagegen nicht manuell anpassen. Außerdem zeigt ein Blick in die Zusatzinformationen im Unique Identifier ebenso wie die URL den veränderten Namen.
Schnell verbreitet
Für den Proof of Concept ging es lediglich darum, wie einfach es ist, eine Fake Extension zu veröffentlichen. Das Möchtegern-Prettier enthielt keinen Schadcode, sondern schickte ein Ping an das Forscherteam, das damit die geografische Verbreitung nachvollzogen hat. Zwei Tage nach der Veröffentlichung gab es gut 1000 Installationen, die sich über den gesamten Globus gezogen haben.
Ob sich Schadcode ebenso einfach verteilen lässt, haben die Forscher nicht untersucht. Microsoft gibt in der FAQ zum Marktplatz an, dass es alle Extensions einem Virusscan unterzieht. Das gilt sowohl für neue Erweiterungen als auch für Updates.
Das Aufspüren von Schadcode ist allerdings nicht trivial. Eine Visual-Studio-Code-Extension hat dieselben Rechte wie der zugehörige User. Dass eine Erweiterung Dateien ändert oder eine Internetverbindung aufbaut, kann durchaus eine gewünschte Funktion sein. Der Aqua-Security-Blog führt als Beispiel für gefährlichen Code eine vermutlich nicht bösartige, aber nachlässige Extension aus dem Marktplatz auf, die Code (von der eigenen Domain) über HTTP (ohne S) empfängt und über den Befehl eval
ausfĂĽhrt, der eigentlich tabu sein sollte.
Verifiziert, aber …
Der Blogbeitrag zum Proof of Concept nennt einen weiteren Aspekt für trügerische Sicherheit, auch wenn der Testlauf darauf verzichtet hat: Der blaue Haken, der einen Publisher als verifiziert kennzeichnet, steht lediglich dafür, dass er nachweisen konnte, eine Domain zu besitzen. Offenbar kann es sich dabei um eine beliebige Domain handeln. Unabhängig davon lassen sich Publisher-Name und GitHub-Repository wie im Proof of Concept beliebig setzen. Zumindest gibt die Marktplatz-FAQ an, dass Microsoft aktiv auf Name-Squatting offizieller Publisher "wie Microsoft und Red Hat" prüft.
Weitere Details lassen sich dem Aqua-Security-Blog entnehmen.
(rme)