Verwirrung um vermeintlichen Dependency-Confusion-Angriff auf deutsche Firmen

Ein scheinbar bösartiger Supply-Chain-Angriff auf vier Firmen hat sich als Penetrationstest herausgestellt, zeigt aber die anhaltende Gefahr der Attacken.

In Pocket speichern vorlesen Druckansicht 25 Kommentare lesen

(Bild: Gorodenkoff/Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Das in Ulm ansässige Unternehmen Code White GmbH hat die Verantwortung für eine vermeintlich bösartige Supply-Chain-Attacke auf deutsche Firmen übernommen. Es handelt sich bei den auf npm veröffentlichten Paketen mit Schadcode wohl um offiziell legitimierte Penetrationstests. Das auf IT-Security spezialisierte Unternehmen Snyk hatte erstmals Ende April den Vorgang untersucht, und der DevOps-Anbieter JFrog hat vor Kurzem im Blog seine Kunden vor der Attacke gewarnt.

Der Pentest nutzt den Angriffsvektor der Dependency Confusion, der versucht intern gehostete Dependencies durch gleichnamige externe Pakete mit Schadcode zu ersetzen. Letztere bekommen dazu eine hohe Versionsnummer, da die Paketinstallationswerkzeuge wie pip oder npm je nach Einstellung das Paket mit der höchsten Nummer verwenden, unabhängig davon, ob es intern oder extern gehostet ist.

Die auf npm gefundenen Pakete zielen mit den Namen boschnodemodules, bertelsmannnpm, stihlnodemodules, dbschenkernpm eindeutig auf große deutsche Firmen. Das erste Paket stand im Fokus der ersten Untersuchung durch Snyk, und npm hatte es zeitig entfernt. Der eigentliche Schadcode dafür befand sich in zwei zusätzlichen Dependencies mit den kryptischen Namen ldtzstxwzpntxqn und lznfjbhurpjsqmr.

Das Modul benötigt drei Pakete, von denen zwei schon auf den ersten Blick verdächtig erscheinen.

(Bild: Snyk)

In den Paketen findet sich sowohl verschleierter Code als auch eine verschlüsselte Datei. Der Blogbeitrag von Snyk zeigt den Angriff und Teile des Codes im Detail und stellt den nach dem Einsatz eines Deobfuscator lesbaren Code dar.

JFrog hat die anderen drei Angriffe untersucht. Sie erfolgen in zwei Schritten: Ein Dropper liefert Details wie Username, Hostname und die Inhalte der Verzeichnisse /etc/hosts und /etc/resolv.conf an einen Server. Anschließend entschlüsselt er die Datei mit der Payload und führt sie aus.

Payload ist eine Backdoor, die als HTTPS-Client angelegt ist und Befehle von einem Command & Control Server (C2-Server) entgegennimmt: Mit register erfolgt die anfängliche Registrierung des Payload beim C2-Server. download lädt eine Datei vom Server herunter, während upload eine Datei hochlädt. eval führt beliebigen JavaScript-Code und exec ein lokales Binary aus. Schließlich beendet delete den Prozess.

Schließlich hat sich die Code White GmbH als Reaktion auf den Snyk-Beitrag auf Twitter gemeldet und die Supply-Chain-Attacke als Angriffssimulation geoutet.

Der insgesamt technisch ausgeklügelte Testangriff warf allerdings schon bei der Untersuchung sowohl durch Snyk als auch durch JFrog Fragen auf: Warum setzt er auf einen öffentlich verfügbaren Obfuscator, der nachvollziehbar ist und leicht zu entschleiernden Code erzeugt? Warum enthält der Wrapper die Information zum Entschlüsseln der verschlüsselten Datei? Bereits bevor sich Code White auf Twitter geäußert hat, stellte JFrog die Frage, ob es sich um einen bösartigen Angriff oder einen Pentest handle: "The attacker – malicious threat actor or pentester?"

Abgesehen davon, dass Snyk und JFrog damit unbewusst Öffentlichkeitsarbeit für Code White geleistet haben, ist das Angriffsmuster zunehmend verbreitet. Laut einer im September 2021 von Sonatype veröffentlichten Studie verzeichnet Dependency Confusion ein exponentielles Wachstum. Auch die Open Source Security Foundation (OpenSSF) hat im Rahmen der Vorstellung ihres neuen Open-Source-Tools zum Aufspüren von Schadcode in Paketmanagern 200 Pakete mit Schadcode aufgespürt, von denen ein Großteil Dependency Confusion oder Typosquatting verwendet. Letzteres Angriffsmuster setzt auf Pakete mit ähnlichen Namen wie beliebte Pakete: Aus my-packet wird my-paket, mypacket oder my_packet. Irgendwer wird sich schon vertippen, so die berechtigte Hoffnung der Angreifenden.

(rme)