ChainDrop: Der npm-Angriff, der 1.300 Pakete kompromittierte und 2 Milliarden monatliche Downloads betraf
Der ChainDrop-Angriff infizierte 1.300 npm-Pakete mit 2 Mrd. Downloads. Der Wurm stiehlt Tokens und Keys via Keyv und verbreitet sich automatisch.
Illustration mit KI erzeugt
Am 4. August 2026 wurde die Kampagne ChainDrop öffentlich gemacht – ein sich selbst verbreitender Supply-Chain-Angriff, der über 1.300 npm-Pakete infizierte und ein geschätztes monatliches Downloadvolumen von rund 2 Milliarden erreichte. Die noch andauernde Operation begann mit der Kompromittierung des GitHub-Kontos des Maintainers von Keyv und breitete sich kaskadierend über gemeinsame Abhängigkeiten aus. Forscher von Aikido, Wiz, StepSecurity, Socket und Ox Security verfolgen die Ausbreitung und veröffentlichen Kompromittierungsindikatoren.
Der Auslöser: Das GitHub-Konto von Keyv und die Caching-Kette
Der Angreifer übernahm das GitHub-Konto des Maintainers von Keyv, einem weit verbreiteten Modul zur Verwaltung von Schlüssel-Wert-Speichern. Von dort aus schleuste er bösartigen Code direkt in die Haupt-Branches von Keyv und den davon abgeleiteten Paketen Cacheable, flat-cache und file-entry-cache ein. Um die neuen Releases glaubwürdig zu machen, nutzte der Angreifer die in den Repositorys konfigurierten legitimen GitHub Actions. Die Folge: Jede infizierte, auf npm veröffentlichte Version verfügt über eine gültige Provenance-Attestierung und umgeht so die Prüfungen vieler Tools zur Überprüfung der Lieferkette.
Der Infektionsmechanismus: preinstall, Bun und die verschleierte Nutzlast
Jedes kompromittierte Paket enthält eine Datei setup.mjs, die über den preinstall-Eintrag in der package.json aufgerufen wird. Dieses Skript wird automatisch ausgeführt, sobald jemand npm install ausführt. Der Dropper lädt die Bun-Laufzeit herunter und verwendet sie, um eine zweite, verschleierte Datei – Math_Symbol.js (oder math_init.js) – auszuführen, die einen Infostealer mit Selbstverbreitungsfähigkeiten enthält.
Der Wurm erfordert keine Interaktion: Es genügt, eine infizierte Abhängigkeit zu installieren, um die gesamte Kette auszulösen. Die Ausführung erfolgt auf dem Runner, der die Installation durchführt – sei es eine Entwickler-Workstation, eine CI/CD-Umgebung oder ein temporärer Container.
Was gestohlen wird und wie es sich verbreitet
Der Infostealer sammelt aggressiv alle erreichbaren Anmeldedaten aus der Ausführungsumgebung:
- GitHub-Token (
ghp_,gho_,ghs_), npm-Token (npm_) und GitHub-Actions-Geheimnisse; - AWS-Anmeldedaten, einschließlich Werte aus SSM mit
WithDecryption: trueund Secrets aus Secrets Manager; - Kubernetes-Geheimnisse, HashiCorp-Vault-Token, Datenbankverbindungs-Strings;
- Schlüssel für Stripe, Slack, Twilio, Azure, GCP und die gesamte Prozessumgebung.
Alle gestohlenen Daten werden verschlüsselt und an ein vom Angreifer kontrolliertes öffentliches GitHub-Repository gesendet. Laut Wiz wird auch die Domain npm-cache[.]com zur Exfiltration genutzt. Der Wurm beschränkt sich nicht auf das Stehlen: Für jedes erlangte Token ruft er registry.npmjs[.]org/-/whoami auf und, wenn das Token gültig ist, verwendet er es, um neue Pakete des entsprechenden Maintainers zu infizieren. Die Verbreitung ist selbstverstärkend und dehnt sich mit jeder Installation weiter aus.
Auswirkungen: Vollständige Kompromittierung von Entwicklungs- und CI/CD-Umgebungen
Jede Maschine, die npm install auf eine infizierte Version ausgeführt hat, muss als vollständig kompromittiert betrachtet werden, selbst wenn das Paket später entfernt wird. Der Diebstahl von Cloud-Anmeldedaten, CI/CD-Geheimnissen und privaten Schlüsseln ermöglicht laterale Bewegung, massive Datenexfiltration und unbefugte Codeänderungen in Repositorys von Unternehmen wie Deliveroo, Ornikar, OneReach, Picsart, Qlik und ServiceTitan, die bereits von der Kampagne betroffen sind.
Das Vorhandensein gültiger Provenance macht den Angriff besonders heimtückisch: Viele Kontrollwerkzeuge, die auf der Übereinstimmung von Attestierungen und Quellen basieren, erkannten keine Auffälligkeiten, bis erste forensische Analysen den Mechanismus aufdeckten.
Schutzmaßnahmen und Neustart
Die beteiligten Sicherheitsunternehmen haben Listen mit Hash-Werten und bösartigen Domains verbreitet, doch für potenziell betroffene Organisationen hat die sofortige Reaktion Priorität:
- Kompromittierte Umgebungen von Grund auf neu aufbauen oder saubere Backups wiederherstellen.
- Alle Token und Anmeldedaten rotieren, die in der betroffenen Umgebung zugänglich waren (GitHub-PAT, npm-Token, AWS-/GCP-/Azure-Schlüssel, Vault-Geheimnisse, Datenbank- und externe Dienstzugangsdaten).
- Systemprotokolle und Commits in Repositorys sorgfältig auf anomale Zugriffe oder unbefugte Änderungen untersuchen.
- Allowlisting von Abhängigkeiten anwenden und Richtlinien für die Ausführung von
preinstall-Skripten überprüfen. - Kompromittierungsindikatoren, die von Aikido, Wiz, StepSecurity, Socket und Ox Security veröffentlicht werden, in Echtzeit überwachen.
Die Kampagne ChainDrop ist weiterhin aktiv, und die Zahl der infizierten Pakete steigt weiter. Wer npm-Umgebungen verwaltet, muss mit neuen Entwicklungen rechnen und sich darauf vorbereiten, die Integrität der eigenen Abhängigkeiten über die ersten IoC-Listen hinaus zu überprüfen.
Quellen
Dieser Artikel ist eine eigenständige Aufbereitung auf Basis der folgenden Quellen.




