Shai-Hulud-Welle 2: TanStack-Pakete mit gültiger Signatur kompromittiert
KI-generiert mit ChatGPT
Der Angriff auf TanStack dauerte nur wenige Minuten. Am 11. Mai 2026 veröffentlichten Angreifer 84 bösartige Versionen in 42 TanStack-Paketen. Nach deutscher Zeit lag das Angriffsfenster zwischen 21:20 und 21:26 Uhr. Besonders brisant ist, dass die Pakete trotzdem eine gültige SLSA-Build-Level-3-Provenance trugen. Wer in diesem Zeitraum Pakete installiert hat, sollte den betroffenen Host als kompromittiert behandeln.
Damit erreicht die Shai-Hulud-Welle eine neue Eskalationsstufe. Die Kampagne wird inzwischen unter CVE-2026-45321 geführt und ist mit einem CVSS-Score von 9,6 als kritisch eingestuft. CVE ist das zentrale Verzeichnis für öffentlich dokumentierte IT-Sicherheitslücken. StepSecurity ordnet die Aktivität TeamPCP zu. Laut Snyk soll sich TeamPCP öffentlich zu dem Angriff bekannt haben.
84 Versionen in sechs Minuten
Das Paket @tanstack/react-router hat laut Snyk mehr als 12,7 Millionen Downloads pro Woche. Es ist ein Standard-Baustein moderner React-Anwendungen. Auch andere TanStack-Pakete waren betroffen. Die Familien @tanstack/query, @tanstack/table, @tanstack/form, @tanstack/virtual und @tanstack/store blieben sauber.
Innerhalb von 48 Stunden stieg die Zahl der kompromittierten Pakete deutlich an. Nach Zahlen von OX Security sind inzwischen rund 170 Pakete in npm und PyPI betroffen. Die kumulative Download-Zahl der vergifteten Pakete liegt bei 518 Millionen. Auf PyPI sind die Pakete mistralai 2.4.6 und guardrails-ai 0.10.1 kompromittiert. In npm trifft es zusätzlich Pakete von UiPath und OpenSearch.
Wie der Angriff funktioniert
Der TanStack-Postmortem zeichnet eine dreistufige Angriffskette nach. Ausgangspunkt war ein GitHub-Actions-Workflow mit dem riskanten Trigger pull_request_target. Der Angreifer nutzte einen Fork, um den Cache von GitHub Actions zu vergiften. Danach lasen eingeschleuste Binaries den OIDC-Token aus dem Speicher des Runners aus. OIDC ist ein tokenbasiertes Authentifizierungsverfahren.
Der Fork lag unter dem Account zblgg mit der Bezeichnung zblgg/configuration. Damit tauchte dieser nicht in den üblichen Fork-Listen auf. Ein bösartiger Commit lief unter der gefälschten Identität claude <claude@users.noreply.github.com>. Besagte E-Mail-Adresse imitiert die GitHub-App von Claude Code. Das ist nicht der einzige Fall, in dem gefälschte Repositories rund um Claude Code als Vehikel für Schadcode dienen.
Warum SLSA-Provenance nicht hilft
SLSA steht für Supply-chain Levels for Software Artifacts. Build Level 3 verlangt einen gehärteten Runner und eine kryptografisch signierte Provenance über Sigstore. Gemeint ist ein maschinenlesbarer Herkunftsnachweis, der dokumentiert, wie und wo ein Softwarepaket gebaut wurde.
Snyk fasst den Kern sinngemäß so zusammen: Die Provenance bestätigt, welche Pipeline das Artefakt erzeugt hat. Sie bestätigt nicht, dass die Pipeline wie vorgesehen gearbeitet hat. Wenn ein Build-Schritt kompromittiert ist, produziert dieser valide signierte, aber bösartige Pakete. Nach Angaben von StepSecurity ist dies der erste dokumentierte Fall in npm, bei dem bösartige Pakete trotz gültiger SLSA-Provenance veröffentlicht wurden.
Microsoft Threat Intelligence weist auf einen weiteren Punkt hin. Das mistralai-PyPI-Paket aktiviert seinen Schadcode erst beim Import, nicht beim Install. Die Payload imitiert dabei eine Datei aus Hugging Face Transformers. Der Trick umgeht statische Install-Scanner. Auch der Fall LiteLLM hat gezeigt, wie Supply-Chain-Angriffe ausgerechnet KI-Pakete treffen.
Was Entwickler jetzt tun müssen
Wiz und Snyk raten dazu, Hosts mit Installationen im betroffenen Zeitfenster als kompromittiert zu behandeln. Besonders kritisch ist laut Wiz der Daemon gh-token-monitor. Dieser kontaktiert GitHub alle 60 Sekunden. Sobald der vom Angreifer genutzte Token widerrufen wird, versucht der Daemon, das Home-Verzeichnis zu löschen. Vor einer Token-Rotation sollte der betroffene Host daher zunächst isoliert werden.
Als IOC dokumentiert Wiz unter anderem die typosquatted Domain git-tanstack.com. Besagte Domain dient als drittes Exfiltrations-Ziel. Daneben nutzt der Wurm den Session-Messenger und GitHub-Repositories, die mit gestohlenen Tokens angelegt wurden. Diese Repositories enthalten den String „Shai-Hulud: Here We Go Again“.
Zudem weist Wiz auf eine wichtige Einschränkung hin. In den betroffenen npm-Versionen von @uipath/*– und @mistralai/* enthält der Payload einen Fehler, der die Ausführung verhindert. Eine spätere Variante behebt diesen Fehler jedoch.
Wer CI/CD-Pipelines mit Publish-Rechten betreibt, sollte einen Audit der eigenen GitHub-Actions-Workflows ansetzen. Insbesondere pull_request_target und Workflows mit id-token: write gilt es zu prüfen.
Server, KI-Modelle und Recherche kosten Geld. ClawNews ist unabhängig — hilf mit, dass das so bleibt.

