Der selbstreplizierende Wurm Shai-Hulud 2.0 hat in der npm-Ökosphäre innerhalb weniger Tage eine der bislang grössten Supply-Chain-Attacken auf die Software-Lieferkette ausgelöst. Nach Analysen von Wiz wurden in weniger als drei Tagen die Entwicklungsumgebungen und CI/CD-Infrastrukturen von Zehntausenden Entwicklern kompromittiert, mit weitreichenden Folgen für Open-Source- und Unternehmensprojekte.
Ausmass der Shai-Hulud-2.0-Kampagne und betroffene Ökosysteme
Sicherheitsforscher entdeckten hunderte manipulierte Versionen populärer npm-Pakete, darunter Komponenten, die in Ökosystemen und Diensten wie Zapier, ENS Domains, PostHog, Postman und AsyncAPI eingesetzt werden. Die trojanisierten Pakete dienten als Einfallstor, um Secrets zu stehlen: GitHub- und npm-Tokens, Zugangsdaten zu Cloud-Providern sowie weitere vertrauliche Informationen aus Build-Pipelines.
Wiz beziffert die Zahl der GitHub-Repositories mit abgeflossenen Geheimnissen zum 24. November 2025 auf über 25 000, mit rund 1 000 neuen betroffenen Repositories alle 30 Minuten. BleepingComputer meldete etwa 27 600 Suchergebnisse im Zusammenhang mit der Kampagne. Zudem wurden rund 350 einzigartige npm-Accounts identifiziert, über die manipulierte Pakete verbreitet wurden – ein deutliches Zeichen für die Breite des Angriffs.
Die grosse Zahl neu erstellter, öffentlich sichtbarer Repositories mit sensiblen Daten zeigt, dass die Opfer zuvor kompromittierte Pakete installiert und in Entwicklungs- oder CI/CD-Umgebungen ausgeführt haben. Dadurch erhielt die Malware Zugriff auf aktive Tokens und private Repositories und konnte automatisch weitere Exfiltration vornehmen.
Von der ersten Shai-Hulud-Version zur 2.0-Variante
Die erste Version von Shai-Hulud wurde Mitte September 2025 entdeckt. Damals manipulierte der Wurm 187 npm-Pakete und nutzte das legitime Tool TruffleHog, einen verbreiteten Secrets-Scanner. Ziel war es, hartkodierte Schlüssel, Tokens und vertraulichen Code in privaten Repositories automatisiert aufzuspüren und zu entwenden.
Die Malware erstellte hierfür öffentliche Klone privater Repositories kompromittierter Nutzer mit dem Präfix „migration“ im Namen. Zusätzlich besass Shai-Hulud einen Mechanismus zur Selbstverbreitung: Alle Pakete eines Maintainers wurden heruntergeladen, deren package.json angepasst, ein schädliches Skript (zum Beispiel bundle.js) eingebettet und anschliessend neu veröffentlicht. Auf diese Weise verbreitete sich der Wurm kaskadenartig über abhängige Pakete in der gesamten Lieferkette.
Technische Analyse: Wie Shai-Hulud 2.0 Secrets und Cloud-Zugänge stiehlt
Mit Shai-Hulud 2.0 wurde die Angriffskette deutlich aggressiver. Der Schadcode wird bereits im pre-install-Hook ausgeführt, also noch vor Abschluss der Paketinstallation. Dadurch kann der Angriff selbst dann greifen, wenn die Installation der Abhängigkeit fehlschlägt – ein kritischer Punkt für CI/CD-Umgebungen, in denen Builds häufig automatisiert abbrechen.
Laut der Analyse von Step Security besteht die Malware aus zwei Kerndateien: setup_bun.js fungiert als Dropper und tarnt sich als Installer für die JavaScript-Laufzeitumgebung Bun, während bun_environment.js (rund 10 MB gross) den eigentlichen, stark obfuskierten Payload enthält. Der Code nutzt hex-kodierte Strings mit Tausenden Einträgen, Schleifen zur Analyse-Erschwerung und verschachtelte Funktionen, um Zeichenketten erst zur Laufzeit zu rekonstruieren – typische Techniken, um Reverse Engineering und statische Scans zu umgehen.
Die aktuelle Variante implementiert einen mehrstufigen Angriff, der gezielt nach folgenden Informationen sucht und diese exfiltriert:
- GitHub- und npm-Tokens zur Übernahme von Accounts und Repositories,
- Cloud-Zugangsdaten für AWS, Google Cloud Platform und Microsoft Azure,
- Secrets aus CI/CD-Pipelines (z. B. API-Schlüssel, Deploy-Tokens, Registries).
Eine besonders kritische Eigenschaft von Shai-Hulud 2.0 ist das destruktive Fallback-Verhalten: Werden vier Bedingungen nicht gleichzeitig erfüllt – erfolgreiche GitHub-Authentifizierung, Möglichkeit zur Repository-Erstellung, Auffinden eines GitHub-Tokens und eines npm-Tokens – beginnt der Wurm mit der Überschreibung des kompletten Home-Verzeichnisses des Nutzers. Damit wird aus einem reinen Datendiebstahl ein potenziell verheerender Datenverlust in Entwicklerumgebungen.
Die gestohlenen Secrets werden in automatisch angelegten GitHub-Repositories abgelegt, die meist die Beschreibung „Sha1-Hulud: The Second Coming“ tragen. Das erleichtert zwar die nachträgliche Identifikation, bietet Angreifern aber zugleich einen zentralen Sammelpunkt zur Auswertung und weiteren Kompromittierung von Zielsystemen.
Folgen für die npm-Landschaft und empfohlene Schutzmassnahmen
Nach Einschätzung von Aikido Security wurden rund 500 kompromittierte npm-Pakete entdeckt; Koi Security zählt unter Einbeziehung aller Versionen über 800 schädliche Paketvarianten. Diese Zahlen illustrieren den typischen Dominoeffekt von Supply-Chain-Angriffen: Bereits wenige manipulierte Kernpakete können rasch Tausende Projekte, Bibliotheken und Unternehmen in Mitleidenschaft ziehen.
Für Entwickler- und DevOps-Teams ergeben sich daraus kurzfristig notwendige Gegenmassnahmen:
- npm-Cache leeren und auf Paketversionen zurückrollen, die vor dem 21. November 2025 veröffentlicht wurden, sofern Zweifel an der Integrität bestehen.
- Alle Secrets und Tokens rotieren, insbesondere GitHub-, npm- und Cloud-Zugangsdaten in CI/CD-Pipelines und Automatisierungen.
- GitHub-Organisationen und -Konten prüfen auf neu angelegte Repositories, verdächtige Commits sowie Bezüge zu
huludoder auffälligen Beschreibungen. - Wo möglich preinstall- und postinstall-Skripte in CI/CD deaktivieren oder nur für eine klar definierte Whitelist vertrauenswürdiger Pakete zulassen.
GitHub reagiert parallel mit strukturellen Sicherheitsverbesserungen, darunter verpflichtende Zwei-Faktor-Authentifizierung für lokale Veröffentlichungen, eine auf sieben Tage begrenzte Lebensdauer von PAT-Tokens und der schrittweise Umstieg von TOTP auf FIDO-basierte Authentifizierung. Da diese Massnahmen jedoch nur schrittweise greifen, bleibt die Hauptverantwortung für effektiven Schutz weiterhin bei den Entwicklungsteams.
Der Vorfall um Shai-Hulud 2.0 macht deutlich, wie verwundbar moderne Software-Lieferketten sind: Ein einziges kompromittiertes npm-Paket kann zu massiven Secret-Leaks, Account-Übernahmen und sogar Datenvernichtung führen. Organisationen sollten diesen Angriff als Anlass nutzen, um Berechtigungen strikt nach dem Least-Privilege-Prinzip zu vergeben, Tokens regelmässig zu rotieren, keine Secrets im Code abzulegen und Abhängigkeiten kontinuierlich zu überwachen. Wer Supply-Chain-Risiken konsequent adressiert und Sicherheitsprüfungen fest in den DevSecOps-Prozess integriert, reduziert die Angriffsfläche deutlich und erhöht die Resilienz gegenüber der nächsten Generation von npm- und CI/CD-Angriffen.