CVE-2026-45321
Malware in 42 @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys
- Published
- Updated
- Reserved
- Assigned by
- GitHub_M
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.
Exploited in the wild
CISA lists this vulnerability in its Known Exploited Vulnerabilities catalog as TanStack Unspecified Vulnerability.
- Added
- 27 May 2026
- Fix due (US federal)
- 10 Jun 2026
- Used by ransomware
- Known
Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
Scores
| Scored by | CVSS | Score | Vector |
|---|---|---|---|
| GitHub_MCNA (assigner) | 3.1 | Critical9.6 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H |
| NVDNVD · Analyzed | 3.1 | Critical9.6 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H |
- EPSS (exploitation in 30 days)
- 3.3% · top 12% of all CVEs (4 Nov 2026)
- CISA SSVC
- Exploitation: active · Automatable: no · Technical impact: total
The list uses the assigner's score when there is one, then CISA's, then NVD's: Critical 9.6.
Weakness
Affected products
- affected 1.166.12
- affected 1.166.15
@tanstack · eslint-plugin-router
- affected 1.161.9
- affected 1.161.12
@tanstack · eslint-plugin-start
- affected 0.0.4
- affected 0.0.7
- affected 1.161.9
- affected 1.161.12
@tanstack · nitro-v2-vite-plugin
- affected 1.154.12
- affected 1.154.15
- affected 1.169.5
- affected 1.169.8
@tanstack · react-router-devtools
- affected 1.166.16
- affected 1.166.19
@tanstack · react-router-ssr-query
- affected 1.166.15
- affected 1.166.18
- affected 1.167.68
- affected 1.167.71
@tanstack · react-start-client
- affected 1.166.51
- affected 1.166.54
- affected 0.0.47
- affected 0.0.50
@tanstack · react-start-server
- affected 1.166.55
- affected 1.166.58
- affected 1.166.46
- affected 1.166.49
- affected 1.169.5
- affected 1.169.8
- affected 1.166.16
- affected 1.166.19
@tanstack · router-devtools-core
- affected 1.167.6
- affected 1.167.9
- affected 1.166.45
- affected 1.166.48
- affected 1.167.38
- affected 1.167.41
@tanstack · router-ssr-query-core
- affected 1.168.3
- affected 1.168.6
- affected 1.161.11
- affected 1.161.14
- affected 1.166.53
- affected 1.166.56
- affected 1.169.5
- affected 1.169.8
@tanstack · solid-router-devtools
- affected 1.166.16
- affected 1.166.19
@tanstack · solid-router-ssr-query
- affected 1.166.15
- affected 1.166.18
- affected 1.167.65
- affected 1.167.68
@tanstack · solid-start-client
- affected 1.166.50
- affected 1.166.53
@tanstack · solid-start-server
- affected 1.166.54
- affected 1.166.57
- affected 1.168.5
- affected 1.168.8
- affected 1.161.9
- affected 1.161.12
- affected 1.169.23
- affected 1.169.26
- affected 1.167.33
- affected 1.167.36
@tanstack · start-static-server-functions
- affected 1.166.44
- affected 1.166.47
@tanstack · start-storage-context
- affected 1.166.38
- affected 1.166.41
- affected 1.166.12
- affected 1.166.15
@tanstack · virtual-file-routes
- affected 1.161.10
- affected 1.161.13
- affected 1.169.5
- affected 1.169.8
@tanstack · vue-router-devtools
- affected 1.166.16
- affected 1.166.19
@tanstack · vue-router-ssr-query
- affected 1.166.15
- affected 1.166.18
- affected 1.167.61
- affected 1.167.64
- affected 1.166.46
- affected 1.166.49
- affected 1.166.50
- affected 1.166.53
- affected 1.166.12
- affected 1.166.15
Affected packages
From reviewed advisories of the GitHub Advisory Database.
- npm@tanstack/arktype-adapterGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/eslint-plugin-routerGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/eslint-plugin-startGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/historyGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/nitro-v2-vite-pluginGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/react-routerGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/react-router-devtoolsGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/react-router-ssr-queryGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/react-startGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/react-start-clientGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/react-start-rscGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/react-start-serverGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/router-cliGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/router-coreGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/router-devtoolsGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/router-devtools-coreGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/router-generatorGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/router-pluginGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/router-ssr-query-coreGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/router-utilsGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/router-vite-pluginGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/solid-routerGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/solid-router-devtoolsGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/solid-router-ssr-queryGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/solid-startGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/solid-start-clientGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/solid-start-serverGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/start-client-coreGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/start-fn-stubsGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/start-plugin-coreGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/start-server-coreGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/start-static-server-functionsGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/start-storage-contextGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/valibot-adapterGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/virtual-file-routesGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/vue-routerGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/vue-router-devtoolsGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/vue-router-ssr-queryGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/vue-startGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/vue-start-clientGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/vue-start-serverGHSA-g7cv-rxg3-hmpx (opens in a new tab)
- npm@tanstack/zod-adapterGHSA-g7cv-rxg3-hmpx (opens in a new tab)
References (5)
- https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx (opens in a new tab)x_refsource_CONFIRM
- https://github.com/TanStack/router/issues/7383 (opens in a new tab)x_refsource_MISC
- https://tanstack.com/blog/npm-supply-chain-compromise-postmortem (opens in a new tab)x_refsource_MISC
- https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem (opens in a new tab)x_refsource_MISC
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-45321 (opens in a new tab)government-resource
Sources
The same CVE in the primary databases and aggregators, to check against.
- CVE.org record (opens in a new tab)
- CVE List JSON (GitHub) (opens in a new tab)
- NVD (opens in a new tab)
- CISA KEV catalog (opens in a new tab)
- FIRST EPSS (opens in a new tab)
- OSV.dev (opens in a new tab)
- GitHub Advisory GHSA-g7cv-rxg3-hmpx (opens in a new tab)
- CIRCL Vulnerability-Lookup (opens in a new tab)
Badge for a README or a ticket
[](https://trackcve.app/cve/CVE-2026-45321)Record last updated .