ChainDrop: Der npm-Wurm, der innerhalb von Stunden Hunderte von Paketen vergiftete

Letzte Aktualisierung: 08/11/2026
  • Am 4. August 2026 kompromittierte ein sich selbst verbreitender Wurm namens ChainDrop innerhalb von vier Stunden über 400 npm-Pakete, darunter keyv und flat-cache.
  • Bei dem Angriff wurden gestohlene GitHub-Zugangsdaten verwendet, um bösartige Versionen mit gültiger Herkunft zu veröffentlichen, sodass diese von legitimen Versionen nicht zu unterscheiden waren.
  • Die Payload stiehlt Zugangsdaten, exfiltriert Daten über einen Ethereum-basierten C2-Server und veröffentlicht infizierte Pakete erneut unter Verwendung gestohlener npm-Token.
  • Um die Auswirkungen zu minimieren, müssen Organisationen Sperrdateien überprüfen, Anmeldeinformationen rotieren und Persistenzmechanismen entfernen.

npm-Logo

Das npm-Ökosystem ist von einem der aggressivsten Lieferkettenangriffe aller Zeiten schwer getroffen. Am 4. August 2026 verbreitete sich der Wurm ChainDrop rasant im npm-Repository und infizierte innerhalb von nur vier Stunden Hunderte von Paketen. Der Angriff nutzte ein kompromittiertes GitHub-Konto, um schädliche Versionen weit verbreiteter Bibliotheken wie keyv und flat-cache zu veröffentlichen, die zusammen wöchentlich Hunderte Millionen Downloads verzeichnen. Besonders alarmierend an diesem Vorfall ist, dass die schädlichen Versionen über eine gültige SLSA-Herkunft verfügten und somit für automatisierte Sicherheitsprüfungen völlig legitim erschienen.

Sicherheitsforscher von StepSecurity, Unit 42, Sonatype und Aikido arbeiten fieberhaft an der Analyse des Wurms und der Eindämmung seiner Verbreitung. Die erste Welle traf das Jaredwray-Ökosystem, doch der Wurm breitete sich schnell auf andere Maintainer und Organisationen aus, darunter ServiceTitan, Qlik und Deliveroo. Laut dem neuesten Update steigt die Zahl der kompromittierten Pakete weiter an, und alle paar Minuten treten neue Infektionen auf. Es handelt sich hierbei nicht um eine weitere Typosquatting-Kampagne; es ist ein ausgeklügelter, sich selbst verbreitender Wurm, der Zugangsdaten stiehlt und diese nutzt, um sich im npm-Repository erneut zu veröffentlichen.

Öffnen Sie die ChainDrop npm-Kette
In Verbindung stehender Artikel:
ChainDrop-Angriff: Über 435 npm-Pakete durch Lieferkettenwurm kompromittiert

Der Angriff im Überblick

npm-Sicherheitswarnung

Der Angriff begann mit der Kompromittierung des GitHub-Kontos von Jared Wray, dem Entwickler von keyv und zugehörigen Paketen. Der Angreifer pushte manipulierte Commits direkt in den Hauptzweig und erstellte neue Releases, die anschließend über den vertrauenswürdigen Veröffentlichungs-Workflow des Projekts auf npm veröffentlicht wurden. Dadurch verfügten die manipulierten Versionen über gültige SLSA-Herkunftsnachweise – ein Sicherheitsmerkmal, auf das viele Teams vertrauen. Die Herkunftsnachweise belegen jedoch lediglich, welcher Commit erstellt wurde, nicht aber, ob dieser autorisiert war. Der Angreifer platzierte außerdem gefälschte Testdateien und modifizierte Release-Skripte, um sicherzustellen, dass die manipulierten Versionen den neuesten Dist-Tag erhielten.

Die Schadsoftwarepakete enthielten ein Vorinstallationsskript, das einen Dropper namens setup.mjs ausführte. Dieser Dropper lud die legitime Bun JavaScript-Laufzeitumgebung von GitHub herunter und nutzte sie, um eine 727 KB große, verschleierte Payload namens Math_Symbol.js auszuführen. Die Payload war ein voll funktionsfähiger Wurm, der Zugangsdaten vom System des Opfers sammelte, darunter npm-Tokens, GitHub-Tokens, Cloud-Zugangsdaten, SSH-Schlüssel und sogar Konfigurationen von KI-Tools. Anschließend exfiltrierte er die Daten an einen Command-and-Control-Server, der über einen Ethereum-Smart-Contract entschlüsselt wurde – eine Technik, die als EtherHiding bekannt ist.

Betroffene Pakete und Geltungsbereich

npm-Paketliste

Die erste Angriffswelle zielte auf elf Pakete im Jaredwray-Ökosystem ab, darunter keyv@6.0.0, flat-cache@6.1.24 und file-entry-cache@11.1.6. Diese Pakete sind transitive Abhängigkeiten unzähliger Projekte, von ESLint bis zum Cache-Manager. Der Wurm nutzte anschließend gestohlene Zugangsdaten, um 433 weitere Pakete neu zu veröffentlichen. Innerhalb weniger Stunden stieg die Gesamtzahl auf 444 Pakete und 2,212 Versionen. Spätere Berichte von Sonatype und Aikido deuten darauf hin, dass die Zahl sogar noch höher liegt und zum Zeitpunkt der ersten Angriffe über 1,000 Pakete betroffen waren.

Die zweite Welle befiel Pakete von Organisationen wie @servicetitan, @qlik, @onereach und @deliveroo, was darauf hindeutet, dass der Wurm von öffentlichen Entwicklertools in die Build-Pipelines von Unternehmen vorgedrungen war. Die Angreifer erstellten außerdem öffentliche Repositories mit Namen im Dune-Stil, um die exfiltrierten Daten zu speichern, und platzierten Persistenzmechanismen in den Verzeichnissen .vscode und .claude, um Entwickler, die die kompromittierten Repositories öffneten, erneut zu infizieren.

So funktioniert der ChainDrop-Wurm

Die Angriffskette ist ein Paradebeispiel für die Ausnutzung von Systemressourcen. Das Vorinstallationsskript wird ausgeführt, bevor irgendwelche Abhängigkeiten installiert werden, sodass der Wurm mit Benutzerrechten ausgeführt wird. Der Dropper prüft, ob Bun bereits vorhanden ist; falls nicht, lädt er eine legitime Bun-Binärdatei von GitHub herunter. Dadurch erscheint der Netzwerkverkehr harmlos, da er von github.com zu stammen scheint. Die Payload der zweiten Stufe löst sich dann als Hintergrundprozess ab und beginnt ihre schädliche Arbeit.

Eine der auffälligsten Techniken ist das Auslesen des Arbeitsspeichers des Runners . Die Payload führt ein Python-Hilfsprogramm aus, das den Arbeitsspeicher des GitHub Actions Runner.Worker-Prozesses ausliest und nach in den Workflow eingeschleusten Geheimnissen sucht. Dadurch kann sie OIDC-Token und andere temporäre Anmeldeinformationen erfassen, die andernfalls nach Beendigung des Jobs verloren gehen würden. Der Wurm verwendet außerdem einen russischen Lokalisierungs-Kill-Switch und beendet sich ordnungsgemäß, wenn die Systemsprache Russisch ist – eine gängige Taktik, um Angriffe auf GUS-Staaten zu vermeiden.

Die Payload enthält eine vollständige npm-Veröffentlichungs-Engine. Sie listet alle Pakete auf, die das Opfer veröffentlichen kann, lädt das aktuelle Tarball herunter, injiziert das schädliche Preinstall-Skript und die Payload und veröffentlicht das Paket mit einer aktualisierten Versionsnummer erneut. Sie generiert sogar eigene Sigstore- und SLSA-Provenienz-Bundles, sodass die schädlichen Versionen wie legitim erstellt aussehen. Dieser Selbstverbreitungsmechanismus ermöglichte es dem Wurm, sich so schnell über unabhängige Organisationen zu verbreiten.

Kompromissindikatoren

Wenn Sie eine der betroffenen Versionen installiert haben, gehen Sie davon aus, dass Ihr System kompromittiert ist. Achten Sie auf folgende Anzeichen:

  • Dateien mit den Namen setup.mjs, Math_Symbol.js oder math_init.js in den node_modules-Verzeichnissen.
  • Unerwartete Bun-Binärdateien auf Ihrem System, insbesondere wenn Sie Bun nie installiert haben.
  • Änderungen an .claude/settings.json oder .vscode/tasks.json, die auf setup.mjs verweisen.
  • Ausgehende Verbindungen zu npm-cache.com oder awqhnjewqjkl.icu oder Ethereum-RPC-Aufrufe an den Vertrag 0xE1f2395ee43e45A1556EC6438a88c31B83493103.
  • Neue GitHub-Repositories mit Beschreibungen wie „Shai-Hulud: Here We Go Again“ oder Namen mit Bezug zu Dune.

Prüfen Sie außerdem, ob nach der Datenexfiltration ein Token-Monitor installiert wurde: ~/.local/bin/gh-token-monitor.sh, ~/.config/gh-token-monitor/ sowie die Dienste systemd oder LaunchAgent. Der Wurm installiert diesen, um die Rotation von Anmeldeinformationen zu bestrafen, indem er beim Widerruf des gestohlenen Tokens eine Angreifer-Payload auslöst.

Schadensbegrenzung und Wiederherstellung

Wenn Sie betroffen sind, handeln Sie schnell. Isolieren Sie zunächst den Rechner und sichern Sie die Protokolle. Ändern Sie anschließend alle auf dem System vorhandenen Anmeldeinformationen, einschließlich npm-Tokens, GitHub-PATs, Cloud-Schlüssel und SSH-Schlüssel. Entfernen Sie den Token-Monitor vor der Änderung, da dieser beim Widerruf eines Tokens eine Warnung auslöst. Bereinigen Sie als Nächstes Ihre Sperrdateien und verwenden Sie bekannte, sichere Versionen. Blockieren Sie für keyv, flat-cache und file-entry-cache die schädlichen Versionen. Installieren Sie abschließend mit der Option `--ignore-scripts` neu, um die Ausführung verbleibender Installations-Hooks zu verhindern.

Überprüfen Sie bei CI/CD-Pipelines die Protokolle aller Installationen, die während des Expositionszeitraums betroffene Versionen aufgelöst haben. Behandeln Sie jeden Runner, der ein infiziertes Paket installiert hat, als kompromittiert und rotieren Sie alle diesem Job zur Verfügung stehenden Geheimnisse. Prüfen Sie außerdem Ihre GitHub-Organisationen auf unerwartete Workflows mit dem Namen „Run Copilot“ oder Artefakte mit dem Namen „format-results“, die auf die Geheimniswäsche durch den Wurm hindeuten.

Eine mehrschichtige Verteidigung ist entscheidend. Verwenden Sie Ausstiegs-Zulassungslisten auf CI-Runnern, um zu verhindern, dass der Dropper Bun herunterlädt. Implementieren Sie Abkühlrichtlinien, die vorschreiben, dass Pakete einige Tage alt sein müssen, bevor sie übernommen werden. Verlassen Sie sich nicht allein auf die Herkunft – sie ist keine Garantie für Sicherheit. Der beste Schutz besteht darin, die Verwendung von Installationsskripten zu minimieren und auf ungewöhnliches Verhalten zu achten.

Während die Untersuchung andauert, steigt die Zahl der betroffenen Pakete weiter an. Die Fähigkeit des Wurms, seine C2-Infrastruktur über eine einzige Ethereum-Transaktion zu rotieren, macht ihn besonders widerstandsfähig. Sicherheitsteams sollten den Smart Contract auf Änderungen überwachen und sich über neue Indikatoren auf dem Laufenden halten. Die npm-Registry hat mit der Entfernung schädlicher Versionen begonnen, die Bereinigung ist jedoch noch nicht abgeschlossen.

Dieser Vorfall verdeutlicht eindrücklich, dass die Sicherheit des Open-Source-Ökosystems nur von seinem schwächsten Glied abhängt. Ein einziges kompromittiertes Entwicklerkonto kann einen massiven Angriff auf die Lieferkette auslösen. Der ChainDrop-Wurm ist ein Weckruf für Entwickler und Organisationen, strengere Sicherheitsmaßnahmen zu ergreifen, darunter Multi-Faktor-Authentifizierung, Token mit minimalen Berechtigungen und die kontinuierliche Überwachung von Abhängigkeiten.

Zusammenhängende Posts: