Description
On 2026-05-11, between approximately 19:20 and 19:26 UTC, 84 malicious versions across 42 @tanstack/* packages were published to the npm registry. The publishes were authenticated via the legitimate GitHub Actions OIDC trusted-publisher binding for TanStack/router, but the publish workflow itself was not modified. The attacker chained three known vulnerability classes — a pull_request_target "Pwn Request" misconfiguration, GitHub Actions cache poisoning across the fork↔base trust boundary, and runtime memory extraction of the OIDC token from the Actions runner process — to publish credential-stealing malware under a trusted identity. Each affected package received exactly two malicious versions, published a few minutes apart.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| @tanstack | arktype-adapter | 1.166.12, 1.166.15 | — |
| @tanstack | eslint-plugin-router | 1.161.9, 1.161.12 | — |
| @tanstack | eslint-plugin-start | 0.0.4, 0.0.7 | — |
| @tanstack | history | 1.161.9, 1.161.12 | — |
| @tanstack | nitro-v2-vite-plugin | 1.154.12, 1.154.15 | — |
| @tanstack | react-router | 1.169.5, 1.169.8 | — |
| @tanstack | react-router-devtools | 1.166.16, 1.166.19 | — |
| @tanstack | react-router-ssr-query | 1.166.15, 1.166.18 | — |
| @tanstack | react-start | 1.167.68, 1.167.71 | — |
| @tanstack | react-start-client | 1.166.51, 1.166.54 | — |
| @tanstack | react-start-rsc | 0.0.47, 0.0.50 | — |
| @tanstack | react-start-server | 1.166.55, 1.166.58 | — |
| @tanstack | router-cli | 1.166.46, 1.166.49 | — |
| @tanstack | router-core | 1.169.5, 1.169.8 | — |
| @tanstack | router-devtools | 1.166.16, 1.166.19 | — |
| @tanstack | router-devtools-core | 1.167.6, 1.167.9 | — |
| @tanstack | router-generator | 1.166.45, 1.166.48 | — |
| @tanstack | router-plugin | 1.167.38, 1.167.41 | — |
| @tanstack | router-ssr-query-core | 1.168.3, 1.168.6 | — |
| @tanstack | router-utils | 1.161.11, 1.161.14 | — |
| @tanstack | outer-vite-plugin | 1.166.53, 1.166.56 | — |
| @tanstack | solid-router | 1.169.5, 1.169.8 | — |
| @tanstack | solid-router-devtools | 1.166.16, 1.166.19 | — |
| @tanstack | solid-router-ssr-query | 1.166.15, 1.166.18 | — |
| @tanstack | solid-start | 1.167.65, 1.167.68 | — |
| @tanstack | solid-start-client | 1.166.50, 1.166.53 | — |
| @tanstack | solid-start-server | 1.166.54, 1.166.57 | — |
| @tanstack | start-client-core | 1.168.5, 1.168.8 | — |
| @tanstack | start-fn-stubs | 1.161.9, 1.161.12 | — |
| @tanstack | start-plugin-core | 1.169.23, 1.169.26 | — |
| @tanstack | start-server-core | 1.167.33, 1.167.36 | — |
| @tanstack | start-static-server-functions | 1.166.44, 1.166.47 | — |
| @tanstack | start-storage-context | 1.166.38, 1.166.41 | — |
| @tanstack | valibot-adapter | 1.166.12, 1.166.15 | — |
| @tanstack | virtual-file-routes | 1.161.10, 1.161.13 | — |
| @tanstack | vue-router | 1.169.5, 1.169.8 | — |
| @tanstack | vue-router-devtools | 1.166.16, 1.166.19 | — |
| @tanstack | vue-router-ssr-query | 1.166.15, 1.166.18 | — |
| @tanstack | vue-start | 1.167.61, 1.167.64 | — |
| @tanstack | vue-start-client | 1.166.46, 1.166.49 | — |
| @tanstack | vue-start-server | 1.166.50, 1.166.53 | — |
| @tanstack | zod-adapter | 1.166.12, 1.166.15 | — |
Public exploits
Exploit or proof-of-concept code for this vulnerability is publicly available, which lowers the bar for attackers. Treat it as a reason to patch sooner.
GitHub 12 repositories · most starred shown
-
Intrudify/mini-shai-hulud-scanner ★ 3 · May 13, 2026
Scanner for the Mini Shai-Hulud npm/PyPI supply chain worm (NHS CC-4781 · CVE-2026-45321). Detects gh-token-monitor persistence, payload artefacts, and attacker commits. Python, Bash, PowerShell.
-
fabriziosalmi/tanstack-compromise-checker ★ 2 · May 16, 2026
Shell script to detect TanStack npm supply chain attack indicators (CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx)
-
nkopylov/tanscript-exploit-check ★ 1 · May 18, 2026
IOC checker for the TanStack/Mini Shai-Hulud npm supply chain attack (CVE-2026-45321)
-
shayr1/shai-hulud-scan ★ 1 · May 12, 2026
Claude Code skill to scan machines for Mini Shai-Hulud (CVE-2026-45321) supply chain worm IOCs
-
qi-scape/scan-shai-hulud ★ 1 · May 12, 2026
Detect CVE-2026-45321 Mini Shai-Hulud supply chain compromise — scans for 170 npm + 2 PyPI poisoned packages across TanStack, Mistral AI, UiPath, OpenSearch, Guardrails AI
-
prashanthnataraj/mini-shai-hulud-detector ★ 0 · May 20, 2026
One-command scanner for the Mini Shai-Hulud npm supply-chain worm (CVE-2026-45321). Detect before rotating tokens.
-
digi4care/shai-scan ★ 0 · May 16, 2026
Zero-dependency CLI scanner for npm/PyPI supply chain compromises. Detects compromised packages in lockfiles and system-level IOCs from attacks like Mini Shai-Hulud (CVE-2026-45321).
-
Caixa-git/tanstack-shield ★ 0 · May 12, 2026
🛡️ One-command scanner for CVE-2026-45321 — TanStack npm supply-chain attack
-
Yomisana/are-you-get-tanstack-attack ★ 0 · May 12, 2026
Are you get Tanstack Supply chain attack attack of 5/11? CVE-2026-45321 / GHSA-g7cv-rxg3-hmpx
-
ry-allan/tanstack-compromise-checker ★ 0 · May 12, 2026
Detects CVE-2026-45321 (TanStack supply chain compromise) and Mini Shai-Hulud worm artifacts. Scans node_modules, lockfiles, persistence hooks (Claude Code, VS Code, systemd, LaunchAgent), GitHub wor…
Sources: PoC-in-GitHub, Metasploit Framework, Exploit-DB — updated daily. Only links are listed; no exploit code is hosted here.
Affected packages
References
- https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx
- https://github.com/TanStack/router/issues/7383
- https://tanstack.com/blog/npm-supply-chain-compromise-postmortem
- https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem