Hey Dev-Community! Kaum hat man das letzte Schreckgespenst aus dem Code verbannt, klopft schon der nächste Albtraum an die Tür und zwar in Form einer neuen, aggressiveren Version des berüchtigten npm-Wurms, den Sicherheitsanalysten diesmal auf den Namen Shai-Hulud 2.0 getauft haben.
Und dieses Mal ist er nicht nur schneller, sondern hat auch eine noch größere Beute im Visier: Über 27.000 Zugangsdaten sind bereits geklaut, und der Wurm greift jetzt sogar prominente Low-Code-Plattformen wie Zapier und Postman an. Es scheint, als hätten die Angreifer aus ihren Fehlern gelernt und sämtliche Flaschenhälse der ersten Welle elegant umschifft.
Lass uns einen Blick darauf werfen, was da gerade (wieder) im npm-Ökosystem abgeht, welche Pakete betroffen sind und was du jetzt tun musst, damit dir dieser Sandwurm nicht die Credentials wegschnappt.
Flaschenhals beseitigt: Die zweite Welle ist aggressiver
Ob die gleichen Angreifer hinter Shai-Hulud 2.0 stecken wie beim ersten Mal, ist noch unklar aber das Ergebnis ist dasselbe: ein massiver Befall von npm-Paketen.
Am Montagnachmittag waren laut heise.de bereits über 425 npm-Pakete infiziert, die zusammen auf über 100 Millionen monatliche Downloads kommen. Darunter sind echt dicke Fische, wie Pakete von:
- AsyncAPI
- ENS-Domains (Ethereum Name Service)
- Diverse API-, Low- und No-Code-Plattformen, allen voran Zapier und Postman (schau dir die riesige Liste unten an, das ist echt übel!).
Der Wurm schlug offenbar am Wochenende (21. bis 23. November) zu, wobei die Pakete „go-template“ und verschiedene Repositories unterhalb von „AsyncAPI“ zuerst betroffen waren.
Wie klaut er die Secrets?
Die Genialität (und der Horror!) dieser neuen Version liegt in der Art, wie die gestohlenen Zugangsdaten publiziert werden:
- Die Schadsoftware übernimmt ein Repository.
- Sie durchsucht es nach Zugangsdaten (Secrets).
- Die geklauten Daten werden direkt unter dem Konto des Opfers auf Github veröffentlicht.
Das neue Repository, in dem die Secrets landen, trägt den unübersehbaren Titel „Sha1-Hulud: the Second Coming“. Damit haben die Angreifer den größten Schwachpunkt des letzten Ausbruchs umgangen: Damals nutzten sie eine Webhook-Plattform, deren Endpunkt schnell gesperrt wurde. Jetzt nutzen sie Github selbst als zentralen Ablageort, was die Aufräumarbeiten für Github zu einem Kampf gegen Windmühlen macht, da ständig neue Codeverzeichnisse erstellt werden. Am Montagmittag waren es bereits über 27.800!
Die Taktik: Verwurmte Workflows und C&C-Server
Shai-Hulud 2.0 ist ziemlich raffiniert gebaut und nutzt mehrere Mechanismen, um sich festzusetzen:
- Backdoor per C&C: Mehrere Github-Workflows sind für das Abgreifen von Zugangsdaten zuständig und installieren eine Backdoor auf der infizierten Maschine. Gesteuert wird diese Backdoor über die Diskussions-Funktion in den infizierten Repositories, ein selbst-gehosteter Command&Control-Server (C&C) direkt auf Github!
- Der „Code Formatter“: Ein zweiter Workflow mit dem harmlos klingenden Namen „Code Formatter“ sucht nach Secrets des angegriffenen Github-Kontos und lädt diese dann im JSON-Format hoch.
- Cross-Plattform: Der Wurm ist nicht wählerisch und scheint mit angepasstem Schadcode Linux, Windows und macOS zu unterstützen.
Der Zeitpunkt ist übrigens bemerkenswert: Der Angriff kommt nur wenige Tage, bevor npm am 9. Dezember „classic tokens“ zur Authentifizierung abschaffen will. Die Entwickler von Sha1-Hulud wollten wohl noch einmal groß absahnen, bevor diese Sicherheitsänderung greift.
Sofortmaßnahmen: Was du jetzt tun musst
Die Aufräumarbeiten sind in vollem Gange, aber jeder muss jetzt wachsam sein und handeln! Wiz, Koi und Aikido haben die Bedrohung schnell gemeldet.
1. Prüfen und Entsorgen
- Checke deine Infrastruktur: Überprüfe deine gesamte Entwicklungs-Infrastruktur auf verdächtige Anzeichen und vor allem auf die Nutzung der unten stehenden, bekannt infizierten Pakete.
- SOFORT entsorgen: Falls du eines der Pakete nutzt: Entsorge es umgehend aus deinem Projekt.
- Updates aus: Deaktiviere automatische Paketupdates, bis die Lage sich beruhigt hat.
2. Alles rotieren (WICHTIG!)
Wenn du den kleinsten Verdacht einer Infektion hast oder ein betroffenes Paket genutzt hast, ist das hier absolut kritisch:
- Rotiere alle Zugangsdaten! Das gilt nicht nur für Github und npm, sondern auch für Accounts bei Hyperscalern wie GCP, AWS und Azure. Alle Secrets müssen neu!
Die Spezialisten sind bei der Attribution noch vorsichtig, aber die Methoden ähneln dem Vorgänger. Es ist Zeit, die Schilde hochzufahren!
Liste der betroffenen Pakete (Auswahl & Wichtigste)
Damit du schnell prüfen kannst, ob du betroffen bist, hier eine Auswahl der prominenten und wichtigsten infizierten Pakete, wie sie am Montagnachmittag gemeldet wurden:
- @asyncapi/ (viele Pakete betroffen)
- @ensdomains/ (fast alle Pakete betroffen!)
- @posthog/ (viele Pakete betroffen!)
- @postman/ (viele Pakete betroffen!)
- @trigo/ (viele Pakete betroffen!)
- @zapier/ (viele Pakete betroffen, inkl.
zapier-platform-cli) go-templateposthog-js- …und leider viele, viele mehr!
Die vollständige Liste ist riesig! Schau sie dir unbedingt an, wenn du eine der genannten Technologien nutzt:
Link zu koi.ai, alternativ Link zu aikido.dev um sicherzugehen, aber die bisher wichtigsten sind oben genannt. Du solltest deine Abhängigkeiten selbst mit der offiziellen, aktuellen Liste abgleichen!
Gegenmaßnahmen
TL:DR
Shai-Hulud 2.0 Notfall-Checkliste für Entwickler-Teams
Diese Schritte sind kritisch, um eine laufende Infektion zu stoppen und weiteren Schaden zu verhindern.
I. Erkennung & Isolation
| Aktion | Details |
| Prüfen aller Abhängigkeiten | Gleicht die aktuell verwendeten npm Pakete mit der vollständigen Liste der infizierten Pakete ab (insbesondere go-template, AsyncAPI, ENS, Postman, Zapier Pakete). |
| Infizierte Pakete isolieren | Alle infizierten Pakete sofort aus den Projektabhängigkeiten entfernen. |
| Automatische Updates stoppen | Deaktiviert vorübergehend alle automatischen Paketupdates, um eine Re-Infektion zu verhindern. |
| System-Scan durchführen | Führt Virenscans auf den Entwicklungsmaschinen durch, da der Wurm Backdoors installiert. |
II. Kritische Rotation von Zugangsdaten (Secrets)
Annahme: Geht davon aus, dass alle Secrets, die von einer infizierten Maschine oder in einem infizierten Repository genutzt wurden, kompromittiert sind.
| Plattform/Service | Was rotieren? |
| npm | Alle npm-Token der Teammitglieder, insbesondere die Publish-Tokens. |
| GitHub/GitLab/Bitbucket | Alle Personal Access Tokens (PATs) und SSH-Schlüssel der betroffenen Nutzer. |
| CI/CD-Tools | Alle Secrets, die in Workflows oder Pipelines verwendet werden (GitHub Actions Secrets, Jenkins, GitLab CI-Variablen etc.). |
| Cloud-Anbieter | Alle API-Keys, Access Keys, Secret Keys (z. B. AWS, GCP, Azure) müssen erneuert werden. |
| Interne Dienste | Alle Datenbank-Zugangsdaten, Slack-Tokens, oder andere interne API-Schlüssel, die auf den betroffenen Systemen gespeichert waren. |
III. System-Wiederherstellung & Prävention
| Aktion | Details |
| Systeme neu aufsetzen | Im Idealfall alle betroffenen Entwicklungsmaschinen neu aufsetzen, um sicherzugehen, dass die Backdoors entfernt sind. |
| Multi-Faktor-Authentifizierung (MFA) | Überprüft, ob MFA auf allen kritischen Konten (npm, GitHub, Cloud) aktiviert und erzwungen ist. |
| Least Privilege Prinzip | Stellt sicher, dass CI/CD-Tokens und persönliche Tokens nur die minimal notwendigen Rechte haben. |
| Quellen überwachen | Achtet auf offizielle Updates von npm, GitHub und den Sicherheitsforschern (Wiz, Koi, Aikido). |
Kommt euch bekannt vor? Murmeltiertag? Liegt daran, dass wir das ganze im September schon mal hatten. Immerhin endet dieser und ähnlicher Spuk spätestens nach dem 9. Dezember, wenn Github die angekündigten Sicherheitsmaßnahmen umsetzt.
Macht euer Team bereit, mit dieser Liste durchzustarten.
Bleibt sicher und checkt eure Deps! Das Wochenende mag vorbei sein, aber die Arbeit hört für Entwickler in der quasi dauerhaften Security-Krise nie auf.