Vulnerability details
CVE-2026-45321
Actively exploitedMalware in 42 @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys
Official 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.
CVSS scores
| Score | Version | Source | Vector |
|---|---|---|---|
| 9.6Critical | 3.1 | CVEProject cvelistV5 (CNA) (GitHub_M) | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H |
Affected products
| Vendor | Product | Versions | Source |
|---|---|---|---|
| TanStack | arktype-adapter | 1.166.12 | CVEProject cvelistV5 (CNA) |
| TanStack | arktype-adapter | 1.166.15 | CVEProject cvelistV5 (CNA) |
| TanStack | eslint-plugin-router | 1.161.12 | CVEProject cvelistV5 (CNA) |
| TanStack | eslint-plugin-router | 1.161.9 | CVEProject cvelistV5 (CNA) |
| TanStack | eslint-plugin-start | 0.0.4 | CVEProject cvelistV5 (CNA) |
| TanStack | eslint-plugin-start | 0.0.7 | CVEProject cvelistV5 (CNA) |
| TanStack | history | 1.161.12 | CVEProject cvelistV5 (CNA) |
| TanStack | history | 1.161.9 | CVEProject cvelistV5 (CNA) |
| TanStack | nitro-v2-vite-plugin | 1.154.12 | CVEProject cvelistV5 (CNA) |
| TanStack | nitro-v2-vite-plugin | 1.154.15 | CVEProject cvelistV5 (CNA) |
| TanStack | outer-vite-plugin | 1.166.53 | CVEProject cvelistV5 (CNA) |
| TanStack | outer-vite-plugin | 1.166.56 | CVEProject cvelistV5 (CNA) |
| TanStack | react-router | 1.169.5 | CVEProject cvelistV5 (CNA) |
| TanStack | react-router | 1.169.8 | CVEProject cvelistV5 (CNA) |
| TanStack | react-router-devtools | 1.166.16 | CVEProject cvelistV5 (CNA) |
| TanStack | react-router-devtools | 1.166.19 | CVEProject cvelistV5 (CNA) |
| TanStack | react-router-ssr-query | 1.166.15 | CVEProject cvelistV5 (CNA) |
| TanStack | react-router-ssr-query | 1.166.18 | CVEProject cvelistV5 (CNA) |
| TanStack | react-start | 1.167.68 | CVEProject cvelistV5 (CNA) |
| TanStack | react-start | 1.167.71 | CVEProject cvelistV5 (CNA) |
| TanStack | react-start-client | 1.166.51 | CVEProject cvelistV5 (CNA) |
| TanStack | react-start-client | 1.166.54 | CVEProject cvelistV5 (CNA) |
| TanStack | react-start-rsc | 0.0.47 | CVEProject cvelistV5 (CNA) |
| TanStack | react-start-rsc | 0.0.50 | CVEProject cvelistV5 (CNA) |
| TanStack | react-start-server | 1.166.55 | CVEProject cvelistV5 (CNA) |
| TanStack | react-start-server | 1.166.58 | CVEProject cvelistV5 (CNA) |
| TanStack | router-cli | 1.166.46 | CVEProject cvelistV5 (CNA) |
| TanStack | router-cli | 1.166.49 | CVEProject cvelistV5 (CNA) |
| TanStack | router-core | 1.169.5 | CVEProject cvelistV5 (CNA) |
| TanStack | router-core | 1.169.8 | CVEProject cvelistV5 (CNA) |
| TanStack | router-devtools | 1.166.16 | CVEProject cvelistV5 (CNA) |
| TanStack | router-devtools | 1.166.19 | CVEProject cvelistV5 (CNA) |
| TanStack | router-devtools-core | 1.167.6 | CVEProject cvelistV5 (CNA) |
| TanStack | router-devtools-core | 1.167.9 | CVEProject cvelistV5 (CNA) |
| TanStack | router-generator | 1.166.45 | CVEProject cvelistV5 (CNA) |
| TanStack | router-generator | 1.166.48 | CVEProject cvelistV5 (CNA) |
| TanStack | router-plugin | 1.167.38 | CVEProject cvelistV5 (CNA) |
| TanStack | router-plugin | 1.167.41 | CVEProject cvelistV5 (CNA) |
| TanStack | router-ssr-query-core | 1.168.3 | CVEProject cvelistV5 (CNA) |
| TanStack | router-ssr-query-core | 1.168.6 | CVEProject cvelistV5 (CNA) |
| TanStack | router-utils | 1.161.11 | CVEProject cvelistV5 (CNA) |
| TanStack | router-utils | 1.161.14 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-router | 1.169.5 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-router | 1.169.8 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-router-devtools | 1.166.16 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-router-devtools | 1.166.19 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-router-ssr-query | 1.166.15 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-router-ssr-query | 1.166.18 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-start | 1.167.65 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-start | 1.167.68 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-start-client | 1.166.50 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-start-client | 1.166.53 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-start-server | 1.166.54 | CVEProject cvelistV5 (CNA) |
| TanStack | solid-start-server | 1.166.57 | CVEProject cvelistV5 (CNA) |
| TanStack | start-client-core | 1.168.5 | CVEProject cvelistV5 (CNA) |
| TanStack | start-client-core | 1.168.8 | CVEProject cvelistV5 (CNA) |
| TanStack | start-fn-stubs | 1.161.12 | CVEProject cvelistV5 (CNA) |
| TanStack | start-fn-stubs | 1.161.9 | CVEProject cvelistV5 (CNA) |
| TanStack | start-plugin-core | 1.169.23 | CVEProject cvelistV5 (CNA) |
| TanStack | start-plugin-core | 1.169.26 | CVEProject cvelistV5 (CNA) |
| TanStack | start-server-core | 1.167.33 | CVEProject cvelistV5 (CNA) |
| TanStack | start-server-core | 1.167.36 | CVEProject cvelistV5 (CNA) |
| TanStack | start-static-server-functions | 1.166.44 | CVEProject cvelistV5 (CNA) |
| TanStack | start-static-server-functions | 1.166.47 | CVEProject cvelistV5 (CNA) |
| TanStack | start-storage-context | 1.166.38 | CVEProject cvelistV5 (CNA) |
| TanStack | start-storage-context | 1.166.41 | CVEProject cvelistV5 (CNA) |
| TanStack | valibot-adapter | 1.166.12 | CVEProject cvelistV5 (CNA) |
| TanStack | valibot-adapter | 1.166.15 | CVEProject cvelistV5 (CNA) |
| TanStack | virtual-file-routes | 1.161.10 | CVEProject cvelistV5 (CNA) |
| TanStack | virtual-file-routes | 1.161.13 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-router | 1.169.5 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-router | 1.169.8 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-router-devtools | 1.166.16 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-router-devtools | 1.166.19 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-router-ssr-query | 1.166.15 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-router-ssr-query | 1.166.18 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-start | 1.167.61 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-start | 1.167.64 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-start-client | 1.166.46 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-start-client | 1.166.49 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-start-server | 1.166.50 | CVEProject cvelistV5 (CNA) |
| TanStack | vue-start-server | 1.166.53 | CVEProject cvelistV5 (CNA) |
| TanStack | zod-adapter | 1.166.12 | CVEProject cvelistV5 (CNA) |
| TanStack | zod-adapter | 1.166.15 | CVEProject cvelistV5 (CNA) |
References and advisories
5- https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx x_refsource_CONFIRM
- https://github.com/TanStack/router/issues/7383 x_refsource_MISC
- https://tanstack.com/blog/npm-supply-chain-compromise-postmortem x_refsource_MISC
- https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem x_refsource_MISC
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-45321 government-resource
Details
- Published
- 2026-05-12
- Last updated
- 2026-08-04
- State
- Published
- Assigner (CNA)
- GitHub_M
- Kolun priority
- 77 · High
CISA KEV catalog
- Date added
- 2026-05-27
- Due date
- 2026-06-10
- Used in ransomware
- Yes
Exploit prediction (EPSS)
SSVC assessment (CISA)
- Automatable
- No
- Exploitation
- Active
- Technical impact
- Total
Weaknesses (CWE)
- CWE-506Embedded Malicious Code