Heute Morgen wurden wir auf einen groß angelegten Angriff auf npm aufmerksam gemacht. Es scheint sich um dieselben Angreifer zu handeln, die auch hinter dem Nx-Angriff vom 27. August 2025 stecken. Dies wurde ursprünglich veröffentlicht von Socket und StepSecurity veröffentlicht, die feststellten, dass 40 Pakete kompromittiert worden waren. Seitdem wurden weitere 147 Pakete mit Malware infiziert, darunter auch Pakete von CrowdStrike.
Das Ausmaß, der Umfang und die Auswirkungen dieses Angriffs sind erheblich. Die Angreifer verwenden weitgehend dieselbe Vorgehensweise wie beim ursprünglichen Angriff, haben diese jedoch weiterentwickelt. Sie haben daraus einen vollständigen Wurm gemacht, der folgende Aktionen automatisch ausführt:
- secrets stehlen secrets öffentlich auf GitHub veröffentlichen
- Führen Sie trufflehog aus und fragen Sie Cloud -Endpunkte ab, um secrets zu sammeln.
- Versuchen Sie, eine neue GitHub-Aktion mit einem Mechanismus zur Datenextraktion über Webhook[.]site zu erstellen.
- Durchlaufen Sie die Repositorys auf GitHub, auf die ein Benutzer Zugriff hat, und machen Sie sie öffentlich zugänglich.
Seit unserer ersten Warnung heute Morgen haben wir die folgenden zusätzlichen Verhaltensweisen und wichtigen Details bestätigt. Für diejenigen, die es nicht wissen: Shai Hulud ist der Name des Wurms in der Dune-Reihe. Ein klarer Hinweis auf die Absicht der Angreifer.

Um zu vermeiden, dass Sie durch solche Pakete kompromittiert werden, sehen Sie sich Aikido Safe-Chain an!
Was der Wurm tut
- Harvest: Durchsucht den Host und die CI-Umgebung nach secrets process.env, Scannen mit TruffleHog und Cloud-Metadaten-Endpunkte (AWS/GCP), die Instanz-/Dienst-Anmeldedaten zurückgeben.
- Exfiltrate (1) – GitHub-Repo: Erstellt ein Repo namens Shai-Hulud unter dem kompromittierten Konto und überträgt einen JSON-Dump mit Systeminformationen, Umgebungsvariablen und gesammelten secrets.
- Exfiltrieren (2) — GitHub Actions → Webhook: einen Workflow löschen
.github/Workflows/shai-hulud-Workflow.ymldas serialisiert${{ toJSON(secrets) }}, sendet sie an einen AngreiferWebhook[.]siteURL und schreibt eine doppelte Base64-Kopie in die Aktionsprotokolle. - Verbreiten: Verwendet alle gefundenen gültigen npm-Tokens, um Pakete, die der kompromittierte Maintainer kontrolliert, aufzulisten und zu aktualisieren (Verbreitung in der Lieferkette).
- Verstärken: Durchläuft die zugänglichen Repositorys des Opfers, macht sie öffentlich oder fügt den Workflow/Zweig hinzu, der weitere Ausführungen und Lecks auslöst.
Verrat von secrets
Wie beim ursprünglichen Nx-Angriff beobachten wir auch hier, dass die Angreifer einen Smash-and-Grab-Angriff durchführen. Die bösartige Payload veröffentlicht sowohl ein „Shai-Hulud”-Repository mit gestohlenen Anmeldedaten/Tokens als auch ein GitHub-Konto und macht private Repositorys öffentlich:


Selbstverbreitung durch npm
Eines der auffälligsten Merkmale dieses Angriffs ist, dass er sich wie ein echter Wurm verhält. Anstatt sich auf ein einziges infiziertes Paket zu verlassen, um sich zu verbreiten, ist der Code so konzipiert, dass er sich selbst in anderen npm-Paketen, die dem kompromittierten Maintainer gehören, erneut veröffentlicht.
So funktioniert die Wurm-Logik:
- Laden Sie ein Ziel-Tarball herunter – es ruft eine vorhandene Paketversion aus der npm-Registrierung ab.
- Ändern
package.json– Der Wurm erhöht die Patch-Version (z. B.1.2.3 → 1.2.4) und fügt einen neuen Lebenszyklus-Hook ein (Nach der Installation) - Kopiere seine eigene Nutzlast – das laufende Skript (
process.argv[1]) wird in den Tarball geschrieben alsbundle.jsDadurch wird sichergestellt, dass jeder Code, der ein Paket infiziert hat, nun auch im nächsten Paket vorhanden ist. - Veröffentlichen Sie das mit einem Trojaner infizierte Paket erneut – das modifizierte Tarball-Archiv wird mit gzip komprimiert und mit den Anmeldedaten des Maintainers zurück an npm übertragen.
Dieser Zyklus ermöglicht es der Malware, kontinuierlich jedes Paket zu infizieren, auf das ein Maintainer Zugriff hat. Jedes veröffentlichte Paket wird zu einem neuen Verbreitungsvektor: Sobald jemand es installiert, wird der Wurm ausgeführt, repliziert sich und dringt weiter in das Ökosystem vor.
Kurz gesagt: Der Angreifer muss Pakete nicht manuell anvisieren. Sobald eine einzige Umgebung kompromittiert ist, verbreitet sich der Wurm automatisch, indem er sich die Veröffentlichungsrechte des Betreuers zunutze macht.
Für eine vollständige Aufschlüsselung der Malware empfehlen wir Ihnen, den Beitrag von getsafety zu lesen.
Beeinträchtigte Pakete
Die Geschichte entwickelt sich weiter…
Sanierungsempfehlung
- Überprüfen Sie die von Ihnen verwendeten Versionen.
- Leeren Sie Ihren npm-Cache.
- Installieren Sie alle Pakete in Ihrem Repository neu.
- Stellen Sie sicher, dass Sie eine Paket-Lock-Datei verwenden und fixierte Versionen verwenden.
Wie Sie anhand von Aikido feststellen können, ob Sie betroffen sind:
Wenn Sie Aikido , überprüfen Sie Ihren zentralen Feed und filtern Sie nach Malware-Problemen. Die Schwachstelle wird im Feed als kritisches Problem mit einer Bewertung von 100/100 angezeigt. Tipp: Aikido Ihre Repositories jede Nacht Aikido , wir empfehlen jedoch, zusätzlich eine vollständige erneute Überprüfung durchzuführen.
Wenn Sie noch kein Aikido sind, richten Sie ein Konto ein und verbinden Sie Ihre Repositorys. Unsere proprietäre Malware-Abdeckung ist im kostenlosen Tarif enthalten (keine Kreditkarte erforderlich).
Für zukünftigen Schutz sollten Sie die Verwendung von Aikido (Open Source) in Betracht ziehen, einem sicheren Wrapper für npm, npx, yarn... Safechain fügt sich in Ihre aktuellen Arbeitsabläufe ein und funktioniert, indem es npm-, npx-, yarn-, pnpm- und pnpx-Befehle abfängt und die Pakete vor der Installation auf Malware überprüft. Aikido – Open Sources Bedrohungsaufklärung. Stoppen Sie Bedrohungen, bevor sie Ihren Rechner befallen.
Sichern Sie Ihre Software jetzt.



.avif)
