JavaScript-Paketmanager: Twilio-Brandjacking-Paket öffnet Hintertür

Vergangenes Wochenende haben Angreifer ein Paket namens twilio-npm veröffentlicht, das eine Reverse Shell auf dem Entwicklersystem startet.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 19 Beiträge
Von
  • Rainald Menge-Sonnentag

Sonatype hat ein npm-Paket mit Schadcode entdeckt, das am 30. Oktober erschienen ist. Das inzwischen aus dem Paketmanager entfernte Paket nutzte den Firmennamen Twilio für Brandjacking. Es öffnet eine Reverse Shell auf den Systemen von Entwicklern, die es installiert haben. Das Paket erschien in kurzer Zeit in drei Versionen, von denen die erste offensichtlich harmlos war, um dann im Update den Schadcode zu liefern.

Insgesamt 371 Downloads verzeichnete das Paket mit dem Namen twilio-npm wohl über das Halloween-Wochenende. Die Angreifer setzen auf Brandjacking: Der Name legt nahe, dass das Paket einen Bezug zu der Cloud-Kommunikationsplattform Twilio hat oder gar offiziell von Twilio stammt.

Das Unternehmen steht nicht hinter der Veröffentlichung des Pakets, auch wenn der Name des offiziellen Pakets recht ähnlich ist: twilio-node ist in Version 3.5 verfügbar und verzeichnet laut offizieller npm-Statistik über 400.000 wöchentliche Downloads. Daneben existieren auf npm zahlreiche weitere legitime und potenziell nützliche Pakete für die Twilio-Plattform.

Seit dem 30. Oktober sind drei Versionen des Brandjacking-Pakets erschienen: twilio-npm 10.0, 10.1 und 10.2. Erstere besteht lediglich aus der kleinen Manifestdatei package.json, die eine Ressource aus einer Subdomain des seriösen Anbieters ngrok lädt. Er bietet öffentliche URLs, die manche Entwickler zu Testzwecken nutzen, um damit beispielsweise einen lokalen Webserver zu erreichen oder eine VPN-Tunnel zum Localhost hinter einer Firewall aufzubauen.

In den Tests von Sonatype erzeugte die Version 10.0 lediglich eine Fehlermeldung, dass ein Tunnel nicht zu finden sei. Die Versionen 10.1 und 10.2 ersetzen das postinstall-Skript zum Zugriff auf den ngrok-Server via curl jedoch durch den Aufruf einer Reverse Shell zu einem externen Server. Damit öffnet der Code effektiv eine Backdoor, die den Angreifern Remote Code Execution (RCE) ermöglicht, unabhängig von NAT (Network Address Translation) beziehungsweise einer Firewall.

Das Öffnen der Reverse Shell im postinstall-Part der package.json-Datei ist erst ab Version 10.1 enthalten.

(Bild: Sonatype)

Die geöffnete Hintertür bietet eine breite Spielwiese für Angreifer. Daher rät npm in der inzwischen bestätigten Security-Warnung zum Schadcode-Paket dazu, dass Entwickler davon ausgehen sollten, dass ein Computer vollständig kompromittiert ist, wenn sie das Paket dort installiert beziehungsweise ausgeführt haben. Sie sollten daher alle auf dem System gespeicherten Schlüssel und Secrets als bekannt betrachten und überall durch andere ersetzen.

Betroffene sollen freilich das betroffene Paket von ihrem System entfernen. Das bedeute aber nicht, dass der Rechner damit frei von Schadcode ist, da die Angreifer über das ursprüngliche Pakete andere Software nachinstalliert haben könnten.

Der jüngste Angriff ist kein Einzelfall. Immer wieder tauchen Berichte über Schadcode in Paketmanagern auf. npm hat nach einer deutlichen Zunahme der Angriffe vor drei Jahren zusätzliche Sicherheitsfunktionen eingeführt, die jedoch nie vollständigen Schutz geben können. Neben dem Brandjacking gehört das Typosquatting zu den beliebten Angriffsmustern: Pakete erhalten dabei Namen, die den Bezeichnungen beliebter Pakete ähneln.

Besondere Aufmerksamkeit hatte im Sommer 2017 der Fall von hacktask erregt, der wie aus dem Lehrbuch unter anderem Pakete mit den Namen jquery.js statt jquery, babelcli statt babel-cli und ffmepg statt ffmpeg veröffentlicht hatte. Aufgefallen war schließlich der Schadcode in crossenv, das auf cross-env-Nutzer zielte. Insgesamt 40 Pakete von hacktask hat npm seinerzeit entfernt.

Zunächst harmlose Versionen zu veröffentlichen, um den Schadcode in Updates einzuführen, ist ebenfalls kein neues Vorgehen: 2019 hatte npm einen solchen Angriff in dem electron-native-notify-Paket entdeckt, das zunächst harmlos daherkam und später Code enthielt, der Cryptowährung stehlen sollte.

npm ist nicht das einzige Angriffsziel: Auch im Python-Paketmanager PyPI (Python Package Index) tauchen immer wieder mit Schadcode infizierte Pakete auf.

(rme)