Eine neue Welle von Shai-hulud-Malware missbraucht unauffällig vertrauenswürdige npm-Pakete, um Multi-Cloud-Geheimnisse zu stehlen und Entwicklerökosysteme in großem Maßstab mit Hintertüren zu versehen.
Die Kampagne mit dem Namen Shai-hulud 2.0 automatisiert den Diebstahl von Zugangsdaten und die Kompromittierung der Software-Lieferkette auf eine Weise, deren Auswirkungen weit über einen einzelnen Maintainer oder ein einzelnes Projekt hinausreichen könnten.
Die Malware sei „… in der Lage, Zugangsdaten und Geheimnisse von großen Cloud-Plattformen und Entwicklerdiensten zu stehlen und gleichzeitig die Installation von Hintertüren in von Opfern verwalteten npm-Paketen zu automatisieren“, sagten die Forscher von Trend Micro.
Der Angriff im Detail
Shai-hulud 2.0 verbreitet sich über ein bösartiges npm-Paket, das den Preinstall-Lifecycle-Hook missbraucht und seine Ausführung auslöst, sobald das Opfer npm install ausführt.
Der Angreifer verändert die Datei package.json, sodass der Installationsprozess setup_bun.js startet – ein Loader-Skript, das für die Vorbereitung der Umgebung zuständig ist.
Dieser Loader prüft zunächst, ob die Bun-JavaScript-Laufzeitumgebung installiert ist, und installiert sie andernfalls unbemerkt mithilfe des offiziellen Installationsskripts von bun.sh – dadurch wirkt die Aktivität legitim.
Nach der Installation lädt er den System-PATH neu und verwendet Bun, um die Haupt-Payload bun_environment.js auszuführen.
Sobald die Payload läuft, untersucht die Malware ihre Ausführungsumgebung, um festzustellen, wie aggressiv sie vorgehen kann.
In CI/CD-Pipelines wird sie sofort ausgeführt, um den Zugriff auf Build-Geheimnisse zu maximieren. Auf Entwicklerarbeitsplätzen geht Shai-hulud 2.0 dagegen unauffälliger vor.
Sie startet einen losgelösten Hintergrundprozess, sodass der Befehl npm install normal abgeschlossen wird und der Diebstahl von Zugangsdaten sowie die Kompromittierung des Systems unbemerkt fortgesetzt werden können.
Anschließend startet die Payload eine umfassende Phase zum Abgreifen von Zugangsdaten. Sie extrahiert npm-Token aus .npmrc-Dateien und überprüft sie über die npm-API whoami.
Sie sammelt GitHub-Zugangsdaten und nutzt sie, um ein neues, vom Angreifer kontrolliertes Repository zu erstellen und einen selbst gehosteten GitHub-Actions-Runner zu registrieren – dadurch entsteht ein verdeckter Command-and-Control-Kanal (C2).
Die Malware durchsucht außerdem Umgebungsvariablen und Cloud-Konfigurationsdateien nach AWS-, GCP- und Azure-Zugangsdaten und verwendet diese anschließend, um AWS Secrets Manager, GCP Secret Manager und Azure Key Vault nach allen verfügbaren Geheimnissen abzufragen.
Um die Kompromittierung zu vertiefen, lädt sie automatisch TruffleHog herunter und führt es aus, um das Dateisystem des Opfers nach fest einkodierten Geheimnissen wie API-Schlüsseln, Token und vertraulichen Konfigurationszeichenfolgen zu durchsuchen.
Wenn es Shai-hulud 2.0 nicht gelingt, gültige npm- oder GitHub-Token zu erlangen – also der Angreifer Daten nicht effektiv verbreiten oder exfiltrieren kann –, geht die Malware zu destruktivem Verhalten über.
In diesen Fällen versucht die Malware, das Home-Verzeichnis des Opfers vollständig zu löschen, wodurch aus einer erfolglosen Kompromittierung ein datenzerstörender Vorfall wird.
So versieht Shai-hulud 2.0 npm-Pakete in großem Maßstab mit Hintertüren
Eine der gefährlichsten Fähigkeiten von Shai-hulud 2.0 ist sein vollständig automatisiertes System zum Einbau von Hintertüren in npm-Pakete, das eine schnelle, wurmartige Verbreitung über die Software-Lieferkette ermöglicht.
Die Malware beginnt damit, alle npm-Pakete aufzulisten, die vom kompromittierten Entwicklerkonto verwaltet werden. Dazu fragt sie die npm-Registry ab und priorisiert die Pakete mit den höchsten Downloadzahlen, um die Auswirkungen auf nachgelagerte Nutzer zu maximieren.
Nachdem sie ihre Ziele identifiziert hat, lädt sie das Tarball jedes Pakets herunter, entpackt dessen Inhalt und fügt ein bösartiges Preinstall-Skript ein, das dieselbe Infektionskette mit setup_bun.js und bun_environment.js auslöst wie bei der ursprünglichen Kompromittierung.
Dadurch führt jeder Entwickler, der das aktualisierte Paket installiert, unbewusst die Malware aus, noch bevor der legitime Code des Pakets überhaupt startet.
Sobald die Änderungen abgeschlossen sind, packt Shai-hulud 2.0 das veränderte Modul neu und veröffentlicht es mit dem Authentifizierungstoken des Opfers erneut in der npm-Registry – dadurch wirkt das Update legitim und vertrauenswürdig.
Um keinen Verdacht zu erregen, erhöht die Malware die Versionsnummer lediglich um eine Patch-Stufe und ahmt damit eine routinemäßige Fehlerbehebung oder Wartungsveröffentlichung nach.
So entsteht ein nahtloser Verteilungsmechanismus: Nachgelagerte Nutzer oder CI-Pipelines laden die neue Version automatisch herunter und lösen dadurch unbemerkt die Infektion aus.
Da jeder neu infizierte Maintainer seine eigenen Pakete automatisch verändern und erneut veröffentlichen lassen kann, erhält die Malware wurmartige Eigenschaften.
Jedes kompromittierte Konto wird zu einem neuen Verbreitungsknoten. Dadurch kann sich Shai-hulud 2.0 exponentiell über das npm-Ökosystem ausbreiten und potenziell über vertrauenswürdige Paket-Updates Tausende Entwickler, Anwendungen und Organisationen erreichen.
So schützen Sie sich vor Supply-Chain-Angriffen nach dem Muster von Shai-hulud
Shai-hulud 2.0 zeigt, wie ein einziges kompromittiertes Maintainer-Konto weitreichendes Einschleusen von Hintertüren in Pakete, den Diebstahl von Cloud-Geheimnissen und das Eindringen in CI/CD-Systeme auslösen kann.
Die folgenden Maßnahmen helfen, die Angriffsfläche zu verringern und die Widerstandsfähigkeit gegen diese Art von Kampagne zu erhöhen.
- Erzwingen Sie phishing-resistente MFA, Hardwareschlüssel und das Prinzip der geringsten Rechte beim Zugriff für alle npm-, GitHub- und Cloud-Identitäten.
- Überwachen Sie auf nicht autorisierte GitHub-Actions-Workflows, selbst gehostete Runner, ungewöhnliche Repository-Erstellungen und weitreichende Berechtigungsbereiche von Workflow-Token.
- Beschränken und rotieren Sie Zugriffstoken, Geheimnisse und Cloud-Zugangsdaten regelmäßig und minimieren Sie die Menge vertraulicher Daten, die in Umgebungsvariablen oder Konfigurationsdateien gespeichert werden.
- Prüfen Sie npm-Pakete auf plötzliche Änderungen an Lifecycle-Hooks, hinzugefügte Installer oder bösartige Preinstall-Skripte und führen Sie für kritische Pakete eine interne Allowlist.
- Überwachen Sie Cloud-Geheimnismanager auf ungewöhnliche Auflistungen, regionsübergreifende Abfragen oder massenhaften Zugriff auf Geheimnisse, die auf eine Kompromittierung hindeuten können.
- Härten Sie Entwickler- und CI/CD-Umgebungen mit EDR, der Überwachung von Skriptausführungen und einer strengen Prüfung von Änderungen an package.json oder Workflows.
- Segmentieren Sie Entwickler-, CI/CD- und Cloud-Rollen, um laterale Bewegungen zu begrenzen und den Schadensradius zu verringern, falls ein Maintainer- oder Maschinenkonto kompromittiert wird.
Wie Shai-hulud 2.0 zeigt, zielen Angreifer zunehmend auf das verbindende Gewebe moderner Entwicklung – Identitäten, Automatisierung und Paketökosysteme – statt auf einzelne Schwachstellen.
Die wachsende Bedrohung moderner Software-Pipelines
Shai-hulud 2.0 erinnert eindringlich daran, dass moderne Angreifer nicht mehr nur auf Endpunkte zielen – sie greifen das Zentrum der Softwareentwicklung und -bereitstellung an: Entwickleridentitäten, Automatisierungspipelines und Cloud-Speicher für Geheimnisse.
Die Lehre ist eindeutig: Sicherheit der Software-Lieferkette besteht nicht nur im Scannen von Abhängigkeiten. Es geht darum zu erkennen, dass jeder vertrauenswürdige Maintainer oder jedes vertrauenswürdige Paket über Nacht zu einem vom Angreifer kontrollierten Verteilungskanal werden kann.
Da Kampagnen wie Shai-hulud immer stärker automatisiert und aggressiver werden, riskieren Organisationen, die Entwickleridentitäten nicht absichern und ihre CI/CD-Infrastruktur nicht härten, dass eine einzige npm-Installation zum Einstiegspunkt für eine vollständige Cloud-Kompromittierung wird.
Und deshalb ist Zero Trust, mit seinem Fokus auf strikter Validierung statt auf blindem Vertrauen, für die Abwehr von Angriffen auf die Software-Lieferkette zunehmend unverzichtbar.





