
IOC-Checker für den TanStack/Mini Shai-Hulud npm-Lieferkettenangriff (CVE-2026-45321)
curl -fsSL https://raw.githubusercontent.com/nkopylov/tanscript-exploit-check/main/check-tanstack-exploit.sh | bash
Oder klonen und lokal ausführen:
git clone https://github.com/nkopylov/tanscript-exploit-check.git
cd tanscript-exploit-check
./check-tanstack-exploit.sh [Projektverzeichnis ...]
Dieser Checker deckt zwei Wellen der Mini-Shai-Hulud-Supply-Chain-Angriffskampagne von TeamPCP ab:
Am 11. Mai 2026 (19:20–19:26 UTC) veröffentlichte ein Angreifer 84 bösartige Versionen über 42 @tanstack/* npm-Pakete in einem 6-Minuten-Fenster. Der Angriff traf auch Pakete von Mistral AI, UiPath, OpenSearch und anderen – insgesamt über 170 Pakete über npm und PyPI.
Es wurden keine Anmeldedaten von Maintainern gestohlen. Der Angreifer nutzte die CI/CD-Vertrauenskette selbst aus, und zwar über einen 3-stufigen Angriff:
pull_request_target-Exploit – Ein Wegwerf-GitHub-Fork eröffnete einen PR, der Angreifercode im Sicherheitskontext des Basis-Repositorys ausführteAm 19. Mai 2026 (01:39–02:06 UTC) veröffentlichte das kompromittierte npm-Konto atool ([email protected]) 637 bösartige Versionen über 314 Pakete in zwei automatisierten Wellen. Zu den stark betroffenen Zielen gehören:
size-sensor (4,2 Mio. Downloads/Monat)echarts-for-react (3,8 Mio. Downloads/Monat)@antv/scale (2,2 Mio. Downloads/Monat)timeago.js (1,15 Mio. Downloads/Monat)@antv/*- und andere PaketeDiese Welle verwendete eine Bun-basierte Payload (498 KB index.js), ausgelöst über "preinstall": "bun run index.js", mit einer zweiten Stufe, die in impostor-Commits versteckt war, die über den Fork-Objekt-Sharing-Exploit in das GitHub-Repo antvis/G2 gepusht wurden.
Beide Wellen verwenden dieselbe „Mini Shai-Hulud“-Toolkit-Familie:
gh-token-monitor (Welle 1) und kitty-monitor (Welle 2) Daemons via LaunchAgent/systemd; Hooks in .claude/settings.json und .vscode/tasks.jsontoJSON(secrets) ausgibt, npm OIDC-Token-Austauschrm -rf ~/ falls GitHub-Token widerrufen wird, während der Daemon aktiv istfiredalazer, RSA-PSS-signierte Befehle| # | Prüfung | Beschreibung |
|---|---|---|
| 1 | Totmannschalter | Persistenz-Daemons: gh-token-monitor (Welle 1), kitty-monitor (Welle 2) |
| 2 | Bösartige Prozesse | Bekannte Angreifer-Prozessnamen (beide Wellen) |
| 3 | Payload-Dateien | Bekannte bösartige Dateien nach Name und SHA-256-Hash (4 Hashes) |
| 4 | Claude Code Hooks | Injizierte Hooks in .claude/settings.json + generische SessionStart-Heuristik |
| 5 | VS Code Tasks | Injizierte Tasks in .vscode/tasks.json + generische runOn: folderOpen-Heuristik |
| 6 | GitHub Actions | toJSON(secrets) in jedem Workflow + pull_request_target-Warnung |
| 7 | npm Lockfiles | Kompromittierte Paketversionen in Lockfiles |
| 8 | optionalDependencies | Bösartiges @tanstack/setup und @antv/setup + 4 Impostor-Commit-SHAs |
| 9 | Netzwerkverbindungen | Aktive Verbindungen zur C2-Infrastruktur (5 Domains/IPs) |
| 10 | DNS-Cache | Frühere Auflösung von Angreifer-Domains (4 Domains) |
| 11 | Git-Branches | Dune-thematisiertes Branch-Namensmuster des Angreifers |
| 12 | Lebenszyklus-Skripte | Heuristik: bun run in preinstall/postinstall (installierte Pakete) |
| 13 | Dead-Drop C2 | firedalazer-Schlüsselwort und „Shai-Hulud“-Marker in der Git-Historie |
| 14 | GitHub-Abhängigkeiten | Heuristik: github:-Abhängigkeiten, die auf Commit-SHA in optionalDeps festgepinnt sind |
Nur @tanstack/router* und @tanstack/start* waren betroffen. NICHT betroffen: @tanstack/query*, @tanstack/table*, @tanstack/form*, @tanstack/virtual*, @tanstack/store.
| Paket | Bösartige Versionen | Erste sichere Version |
|---|---|---|
@tanstack/react-router | 1.169.5, 1.169.8 | 1.169.9 |
@tanstack/router-core | 1.169.5, 1.169.8 | 1.169.9 |
@tanstack/vue-router | 1.169.5, 1.169.8 | 1.169.9 |
@tanstack/solid-router | 1.169.5, 1.169.8 | 1.169.9 |
@tanstack/react-start | 1.167.68, 1.167.71 | 1.167.72 |
@tanstack/router-plugin | 1.167.38, 1.167.41 | 1.167.42 |
Siehe die vollständige Sicherheitswarnung für alle 42 Pakete.
Alle vom npm-Benutzer atool ([email protected]) veröffentlichten Pakete erhielten am 19. Mai 2026 bösartige Versionen. Zu den stark betroffenen Paketen gehören:
| Paket | Monatliche Downloads |
|---|---|
size-sensor | 4,2 Mio. |
echarts-for-react | 3,8 Mio. |
@antv/scale | 2,2 Mio. |
timeago.js | 1,15 Mio. |
Plus 310+ Pakete hauptsächlich im @antv/*-Scope (@antv/g2, @antv/g6, @antv/l7, @antv/s2, @antv/x6, @antv/f2, usw.), ai-figure, timeago-react, jest-canvas-mock, jest-date-mock und andere.
Siehe den SafeDep-Bericht für die vollständige Liste.
KRITISCH: Deaktivieren Sie den Totmannschalter, BEVOR Sie Token widerrufen. Die Malware löscht
$HOME, wenn Token widerrufen werden, während der Daemon aktiv ist.
gh-token-monitor UND kitty-monitor) und entfernen Sie LaunchAgent/systemd-Dienste.claude/router_runtime.js, .vscode/setup.mjs, ~/.local/share/kitty/cat.py, /var/tmp/.gh_update_state, usw.)node_modules und Lockfiles, installieren Sie neu mit --ignore-scriptsapi.masscan.cloud, filev2.getsession.org, git-tanstack.com, t.m-kosche.com)