Mini Shai-Hulud schlägt erneut zu: Supply-Chain-Angriff kompromittiert TanStack-, UiPath- und Mistral-AI-Pakete
Ein raffinierter Supply-Chain-Angriff, 'Mini Shai-Hulud' genannt, hat zahlreiche **npm**- und **PyPI**-Pakete kompromittiert, darunter solche von **TanStack**, **UiPath**, **Mistral AI**, **OpenSearch** und **Guardrails AI**. Der Angriff, der dem Bedrohungsakteur **TeamPCP** zugeschrieben wird, nutzt gekaperte GitHub Actions und OIDC-Token, um Malware zu verbreiten und sensible Anmeldeinformationen zu stehlen.

Die neueste Kampagne von **TeamPCP**, 'Mini Shai-Hulud', zeigt eine Weiterentwicklung der Taktiken bei Supply-Chain-Angriffen und beeinträchtigt die Integrität von Softwareentwicklungs-Ökosystemen.
### Anmeldedaten-Diebstahl und Umgehungstechniken
Die kompromittierten **npm**-Pakete wurden modifiziert, um eine obfuskierte JavaScript-Datei ('router_init.js') einzufügen. Dieses bösartige Skript profiliert die Ausführungsumgebung und setzt einen umfassenden Anmeldedaten-Dieb ein. Der Dieb zielt auf Cloud-Anbieter, Kryptowährungs-Wallets, KI-Tools, Messaging-Apps und CI-Systeme wie Github Actions ab. Berichte von **Aikido Security**, **Endor Labs**, **SafeDep**, **Socket**, **StepSecurity** und **Snyk** detaillieren den Angriff und stellen fest, dass exfiltrierte Daten an 'filev2.getsession[.]org' gesendet werden.
Die Angreifer nutzen die Session-Protocol-Infrastruktur, um wahrscheinlich die Erkennung zu umgehen, indem sie sich mit legitimen Datenverkehr des datenschutzorientierten Messaging-Dienstes vermischen. Als Backup werden die verschlüsselten Daten auch in von Angreifern kontrollierten Repositories unter dem Autorennamen '[email protected]' über die GitHub GraphQL API unter Verwendung gestohlener GitHub-Token committet.
### Persistenz und laterale Bewegung
Die Malware demonstriert Persistenz, indem sie Hooks in **Claude Code** und **Microsoft Visual Studio Code** (**VS Code**) einrichtet, um sicherzustellen, dass der Dieb bei jedem Start der IDEs erneut ausgeführt wird. Ein 'gh-token-monitor'-Dienst wird installiert, um GitHub-Token kontinuierlich zu überwachen und erneut zu exfiltrieren. Darüber hinaus werden bösartige GitHub Actions-Workflows injiziert, um Repository-Secrets in ein JSON-Objekt zu serialisieren und die Daten auf einen externen Server ('api.masscan[.]cloud') hochzuladen.
### Sich entwickelnde Infektionsvektoren
Im Gegensatz zu früheren Angriffen auf **SAP**-Pakete verfolgt diese Kampagne eine neue Strategie. Anstatt Preinstall-Hooks werden die bösartigen JavaScript-Dateien innerhalb des Paket-Tarballs aufgenommen, zusammen mit einer optionalen Abhängigkeit, die auf ein GitHub-gehostetes Paket verweist. Diese GitHub-Abhängigkeit enthält einen 'prepare'-Lifecycle-Hook, der die JavaScript-Payload unter Verwendung der **Bun**-Laufzeitumgebung ausführt.
Für **Mistral AI**-Pakete greift der Angriff auf den früheren Ansatz zurück, indem der Inhalt der 'package.json'-Datei durch einen Preinstall-Hook ersetzt wird, der 'node setup.mjs' aufruft, welches **Bun** herunterlädt und dieselbe JavaScript-Malware ausführt.
### CVE-2026-45321: Kritische Schwachstelle in TanStack
Die Kompromittierung der **TanStack**-Lieferkette wird als **CVE-2026-45321** verfolgt, mit einem kritischen CVSS-Score von 9,6 von 10,0. Der Vorfall betraf 42 Pakete und 84 Versionen im **TanStack**-Ökosystem.
**TanStack** verfolgte die Kompromittierung auf einen verketteten GitHub Actions-Angriff zurück, der den 'pull_request_target'-Trigger, das Vergiften des GitHub Actions-Caches und die Extraktion von OIDC-Token aus dem GitHub Actions-Runner-Prozess im Laufzeitspeicher umfasste. Laut **TanStack** wurden keine **npm**-Token gestohlen und der **npm**-Publish-Workflow selbst wurde nicht direkt kompromittiert.

**StepSecurity**-Forscher Ashish Kurmi hob hervor, dass die bösartigen Versionen über die eigene GitHub Actions-Release-Pipeline des Projekts unter Verwendung gekaperter OIDC-Token veröffentlicht wurden. Bemerkenswerterweise tragen die kompromittierten Pakete gültige SLSA Build Level 3 Provenance-Attestierungen, was dies zum ersten dokumentierten npm-Wurm macht, der gültig attestierte bösartige Pakete erzeugt. Der Wurm hat sich seitdem über **TanStack** hinaus auf Pakete von **UiPath**, DraftLab und anderen Maintainern verbreitet.
### Missbrauch von Trusted Publishing und OIDC-Token
Der Angriff nutzt Trusted Publishing, was es Angreifer-kontrolliertem Code, der innerhalb eines Workflows ausgeführt wird, ermöglicht, seine OIDC-Berechtigungen zu nutzen, um während des Builds ein kurzlebiges Publish-Token zu prägen und es zur Veröffentlichung der Pakete zu verwenden, ohne ein **npm**-Token stehlen zu müssen. Der Wurm verbreitet sich, indem er ein veröffentlichbares **npm**-Token mit 'bypass_2fa' auf 'true' findet, Pakete aufzählt, die vom selben Maintainer veröffentlicht wurden, und ein GitHub OIDC-Token gegen ein Publish-Token pro Paket austauscht.
**Endor Labs**-Forscher Peyton Kennedy erklärte, dass der verwaiste Commit einen GitHub Actions-Workflow-Lauf gegen die legitime **TanStack/router**-Workflow-Oberfläche ausgelöst hat. Da die OIDC Trusted Publisher-Konfiguration des Repositories die Vertrauenswürdigkeit auf Repository-Ebene gewährte und nicht auf einen bestimmten geschützten Branch und eine bestimmte Workflow-Datei beschränkt war, konnte der durch diesen Commit ausgelöste Workflow-Lauf ein gültiges kurzlebiges **npm**-Publish-Token anfordern.
### Dead-Man's Switch und destruktive Payload
Eine neue Taktik, die in der obfuskierten JavaScript-Malware eingeführt wurde, ist die Installation eines Dead-Man's Switch. Dieser Switch verwendet ein Shell-Skript, um periodisch zu überprüfen, ob ein vom Malware erstelltes **npm**-Token durch Abfragen des Endpunkts 'api.github.com/user' alle 60 Sekunden widerrufen wird. Das Token wird als 'IfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner' beschrieben.
Wenn der Entwickler das Token aus seinem **npm**-Dashboard widerruft, löst das Skript eine destruktive Routine aus, die 'rm -rf ~/' auf der infizierten Maschine ausführt und diese effektiv in eine Wipe-Malware verwandelt. Entwicklern wird geraten, die **npm**-Token nicht zu widerrufen, bevor das System isoliert und abgebildet wurde.
### Breitere Auswirkungen und Verteidigungsstrategien
**Upwind**-Sicherheitsforschungsleiter Avital Harel betonte, dass diese Kampagne eine Verlagerung bei Supply-Chain-Angriffen hin zur identitätsgesteuerten Verbreitung über vertrauenswürdige CI/CD-Infrastrukturen widerspiegelt. Wenn Angreifer Zugriff auf Publishing-Workflows und Pipeline-Identitäten erhalten, wird der Software-Lieferprozess zum Verteilungsmechanismus. Die Abwehr dagegen erfordert eine verbesserte Verhaltenssichtbarkeit während der Installationen und Builds.
### Betroffene Pakete
Neben **TanStack** hat sich die Mini Shai-Hulud-Kampagne auf die folgenden Pakete ausgeweitet:
* [email protected] (PyPI)
* [email protected] (PyPI)
* @opensearch-project/[email protected], 3.6.2, 3.7.0 und 3.8.0
* @squawk/[email protected]
* @squawk/[email protected]
* @squawk/[email protected]
* @tallyui/[email protected], 1.0.2 und 1.0.3
* @tallyui/[email protected], 1.0.2 und 1.0.3
**OX Security** berichtet, dass der Vorfall über 170 Pakete in den **npm**- und **PyPI**-Registries betroffen hat, mit über 518 Millionen kumulativen Downloads. Über 400 Repositories mit gestohlenen Anmeldeinformationen wurden als Teil der Angriffswelle erstellt, die alle den String 'Shai-Hulud: Here We Go Again' enthielten.
Das von **Google** erworbene Wiz berichtete, dass die Payload gestohlene Anmeldeinformationen auch über einen dritten redundanten Kanal exfiltriert.