Bösartige Code-Bomben zielen auf Amazon, Lyft, Slack, Zillow

Cyber Security News

Angreifer haben Code-Abhängigkeitsverwirrung als Waffe eingesetzt, um interne Apps bei Tech-Giganten anzugreifen.

Forscher haben bösartige Pakete entdeckt, die auf interne Anwendungen für Amazon, Lyft, Slack und Zillow (unter anderem) innerhalb des öffentlichen npm-Code-Repository abzielen – die alle sensible Informationen exfiltrieren.

Die Pakete nutzen einen Proof-of-Concept (PoC) Code Dependency-Confusion-Exploit, der kürzlich vom Sicherheitsforscher Alex Birsan entwickelt wurde, um bösartigen Code in Entwicklerprojekte zu injizieren.

Interne Entwicklerprojekte verwenden normalerweise standardmäßige, vertrauenswürdige Code-Abhängigkeiten, die in privaten Repositories untergebracht sind. Birsan beschloss zu sehen, was passieren würde, wenn er “Nachahmer”-Pakete erstellen würde, die stattdessen in öffentlichen Repositories wie npm untergebracht werden, mit den gleichen Namen wie die privaten legitimen Code-Abhängigkeiten.

“Ist es möglich, dass einige der internen Projekte von PayPal anfangen werden, die neuen öffentlichen Pakete anstelle der privaten zu verwenden?”, fragte er. Und die Antwort war ja.

Abhängigkeit Verwirrung gewinnt Schwärme von Nachahmern Fans

In Birsans Fall testete er diese “Abhängigkeitsverwirrung” mit gutartigen PoC-Codeblöcken. Diese wurden in öffentliche Repositories hochgeladen – und er lehnte sich einfach zurück und wartete ab, ob sie importiert werden würden. Seine Vermutung erwies sich als richtig und zeigte, wie fremder Code importiert und relativ einfach in die internen Anwendungen und Systeme eines Unternehmens eingeschleust werden kann – unter anderem bei Apple, Microsoft, Netflix, PayPal, Shopify, Tesla und Uber.

Insgesamt erhielt er mehr als $130.000 in Bug Bounties und vorab genehmigte finanzielle Vereinbarungen mit den Zielunternehmen aus dem Experiment, die alle zugestimmt hatten, getestet zu werden. Dies hat Legionen von Nachahmer-Kopfgeldjägern hervorgebracht, die auf der Suche nach einem Zahltag waren – laut einer Sonatype-Analyse wurden innerhalb von 48 Stunden nach der Veröffentlichung von Birsans Forschung mehr als 275 solcher Pakete in das npm-Repository hochgeladen. Die Zahl ist nun auf mehr als 700 angestiegen, so Sonatype am Dienstag, wobei auch böswillige Akteure mitmischen.

“Ein ethischer Forscher wird typischerweise ein Paket unter dem gleichen Namen wie die private Abhängigkeit in ein öffentliches Repository wie npm stellen”, erklärte Sonatype-Forscher Ax Sharma in einem Interview mit Threatpost. “Außer, ihr Paket würde genug minimalen PoC-Code enthalten, um den Angriff dem Hersteller und dem Bug-Bounty-Programm zu demonstrieren. Die ethischen Forschungspakete, die Sonatype gesehen hat, hatten auch Disclaimer, die darauf hinweisen, dass sie Teil einer ethischen Sicherheitsforschung sind, was eine gewisse Beruhigung darstellt.”

Abhängigkeitsverwirrung wird bösartig

Leider hat Sonatype auch mehrere bösartige Pakete identifiziert, was zeigt, dass die Technik als Waffe eingesetzt wird.

“Einige der Dependency-Confusion-Copycat-Pakete gehen noch einen Schritt weiter als das, was man als ‘ethische Forschung’ bezeichnen könnte, indem sie regelrecht bösartige Aktivitäten durchführen”, erklärte Sharma.

Mehrere der von Sonatype identifizierten Copycat-Pakete exfiltrieren zum Beispiel die .bash_history-Dateien und /etc/shadow-Dateien des Benutzers.

Die Datei .bash_history enthält eine Liste von Befehlen, die ein Benutzer eines Unix-basierten Betriebssystems zuvor am Terminal ausgeführt hat. Wenn sie nicht regelmäßig geleert wird, kann diese Datei Benutzernamen, Kennwörter und andere sensible Daten enthalten.

Die Datei /etc/shadow verwaltet inzwischen gehashte Kennwortdaten von Benutzerkonten auf einem System. Obwohl die Datei normalerweise auf “Superuser”-Konten beschränkt ist, könnte ein böswilliger Akteur die Datei erhalten, wenn auf dem infizierten Rechner npm mit erhöhten Rechten ausgeführt wird.

“Diese Pakete enthalten typischerweise hochsensible Informationen, die ungesehen bleiben sollten”, erklärte Sharma. “Einige dieser Pakete richteten auch eine Reverse Shell zu den Servern ihres Autors ein und hatten keine offensichtlichen Disclaimer oder Hinweise, um zu klären, ob dies Teil einer ethischen Forschung oder eines Bug-Bounty-Programms war.”

Einfache, automatische Kompromittierung

Die Gefahr, die von diesen Paketen ausgeht, wird durch die Tatsache verschärft, dass diese Art von Code-Importen automatisch durchgeführt wird – wenn eine neue Version verfügbar wird, holt ein Entwicklerprojekt diese automatisch aus einem Repository.

“Was diesen Trend noch problematischer macht, ist die Tatsache, dass die Verwechslung von Abhängigkeiten – aufgrund ihrer Natur – keine Aktion von Seiten des Opfers erfordert”, erklärt Sharma. “Wenn man bedenkt, dass diese bösartigen Pakete Namen mit internen Abhängigkeiten teilen könnten, die von führenden Organisationen verwendet werden, können sie fast augenblicklich in die Builds der Organisationen gezogen werden.”

Leider ist es auch ziemlich einfach zu identifizieren, was diese internen Abhängigkeiten sind, selbst wenn sie technisch gesehen privat sind.

“Was ethische Forscher typischerweise tun, ist, das öffentliche GitHub-Repository oder CDN eines Unternehmens auf Code zu überwachen”, sagte Sharma. “Dieser Code kann die Namen ihrer internen Abhängigkeiten enthüllen (z. B. in den Manifestdateien), die sonst nicht in öffentlichen Repositories wie npm, RubyGems oder GitHub verfügbar sind. Zumindest hat Alex Birsan das so gemacht, aber es bleibt noch Raum, um kreativ zu sein.”

Und da die Nachahmerpakete in öffentliche Repositories hochgeladen werden, gibt es für böswillige Angreifer nur eine geringe Einstiegshürde. Dies ist das gleiche Problem, das oft bei Software Supply-Chain-Angriffen mit Typosquatting und Brandjacking von öffentlichen Paketen auftritt.

“Jeder – ob ethische Forscher oder böswillige Akteure – kann das Problem der Abhängigkeitsverwirrung ausnutzen”, sagte Sharma. “Was ‘ethisch’ ist oder nicht, hängt weitgehend von der Absicht des Akteurs ab.”

Amazon, Lyft, Slack und Zillow Nachahmerpakete

Forscher entdeckten bösartige Pakete, die auf eine Vielzahl von Unternehmen abzielten, aber vier, die auf Amazon, Lyft, Slack und Zillow abzielten, stachen heraus.

Die npm-Webseite für “amzn” bietet zwei identische Versionen eines bösartigen Pakets, die jeweils nur zwei Dateien enthalten: ein Manifest namens package.json und die funktionale Datei run.js. Das “amzn”-Paket, das Namen analog zu Amazons GitHub-Repository und Open-Source-Paketen hat, so die Forscher.

“Innerhalb der run.js sehen wir, wie auf den Inhalt der Datei /etc/shadow zugegriffen wird und dieser schließlich an den Autor des Pakets exfiltriert wird, um die Domäne des Comevil[.]Spaß zu machen”, heißt es in der Analyse. “Der Code sieht auch vor, dass der Autor eine Reverse-Shell zu seinem Server öffnet, die startet, sobald das Paket `amzn` das verwundbare Build infiltriert.”

Was Zillow betrifft, so wurde das Paket “zg-rentals” ebenfalls vom selben Autor bei npm veröffentlicht und ist in Struktur und Funktionalität identisch mit dem “amzn”-Paket, so die Forscher. Keines der beiden Pakete bietet irgendeinen Hinweis oder Disclaimer, dass sie mit einer ethischen Forschungsanstrengung verbunden sein könnten, so die Sonatype-Analyse.

In der Zwischenzeit hat das bösartige “serverless-slack-app”-Paket auch keine eindeutigen Anzeichen dafür, dass es mit einer ethischen Forschung oder einem Bug-Bounty-Programm in Verbindung steht. Es ist nach einem legitimen Paket benannt, das von einem Atlassian-Entwickler erstellt wurde. Laut Sonatype hat es sowohl Preinstall- als auch Postinstall-Skripte, die von der Manifestdatei gestartet werden.

“Während das index.js-Skript, das in der preinstall-Phase gestartet wird, eine identische Kopie des Skripts in Birsans PoC-Forschungspaketen ist, ist das postinstall-Skript besonders interessant”, heißt es in dem Beitrag. “In der Postinstall-Phase wird ein weiteres, auf GitHub gehostetes Skript ausgeführt, das die .bash_history-Datei des Benutzers an den Autor hinter der serverless-slack-app sendet.”

Derselbe Autor veröffentlichte ein nahezu identisches Lyft-Paket mit dem Namen lyft-dataset-sdk, das sich den Namen mit einem von Lyft verwendeten Python-basierten Paket teilt.

“Ich habe mich schon gefragt, wann wir einen bösartigen Akteur sehen werden, der die aktuelle Situation ausnutzt”, sagte Sonatype-Sicherheitsforscher Juan Aguirre in dem Posting. “Finally, we’ve spotted one.”

Er fügte hinzu: “Es ist interessant, sich all die bösartigen npm-Copycat-Pakete anzuschauen, die in letzter Zeit veröffentlicht wurden. Man kann ihre Entwicklung sehen. Sie fangen mit der gleichen Code-Basis an wie der PoC, den der Forscher Alex Birsan veröffentlicht hat, und werden dann immer kreativer.”

Einige Teile dieses Artikels stammen aus:
threatpost.com