CVE-2026-45321
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 3.1
- 9.6
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H - EPSS
- 3.3% chance of exploitation in the next 30 days; higher than 88% of CVEs (scores of 2026-10-26)
- CISA KEV
- listed 2026-05-27, due 2026-06-10, known ransomware use
- CWE
- CWE-506
- Published
- Modified
- Record from
- the NVD, synced
Affected
- abhishake1:supersurkhet\/cli
- abhishake1:supersurkhet\/sdk
- abhishake1:taskflow-corp\/cli
- agentworkhq:agentwork-cli
- antoinebcx:ml-toolkit-ts
- antoinebcx:ml-toolkit-ts\/preprocessing
- antoinebcx:ml-toolkit-ts\/xgboost
- beproduct:beproduct\/nestjs-auth
- christianalares:git-git-git
- christianalares:git_branch_selector
- christianalares:nextmove-mcp
- christianalares:tolka\/cli
- dirigible:dirigible-ai\/sdk
- guardrailsai:guardrails_ai
- kilbot:tallyui\/components
- kilbot:tallyui\/connector-medusa
- kilbot:tallyui\/connector-shopify
- kilbot:tallyui\/connector-vendure
- kilbot:tallyui\/connector-woocommerce
- kilbot:tallyui\/core
- kilbot:tallyui\/database
- kilbot:tallyui\/pos
- kilbot:tallyui\/storage-sqlite
- kilbot:tallyui\/theme
- linuxfoundation:opensearch
- matheuspergoli:draftauth\/client
- matheuspergoli:draftauth\/core
- matheuspergoli:draftlab\/auth
- matheuspergoli:draftlab\/auth-router
- matheuspergoli:draftlab\/db
- matheuspergoli:simple_type-safe_actions
- mesa:mesadev\/rest
- mesa:mesadev\/saguaro
- mesa:mesadev\/sdk
- mistral:mistralai
- mistral:mistralai\/mistralai
- mistral:mistralai\/mistralai-azure
- mistral:mistralai\/mistralai-gcp
- multiagentcognition:cmux-agent-mcp
- neilcochran:cross-stitch
- neilcochran:squawk\/airports
- neilcochran:squawk\/airspace
- neilcochran:squawk\/airspace-data
- neilcochran:squawk\/airway-data
- neilcochran:squawk\/airways
- neilcochran:squawk\/fix-data
- neilcochran:squawk\/fixes
- neilcochran:squawk\/flight-math
- neilcochran:squawk\/flightplan
- neilcochran:squawk\/geo
Packages (OSV)
| Advisory | Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|---|
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/arktype-adapter | >=1.166.12 <1.166.16 | 1.166.16 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/eslint-plugin-router | >=1.161.9 <1.161.13 | 1.161.13 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/eslint-plugin-start | >=0.0.4 <0.0.8 | 0.0.8 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/history | >=1.161.9 <1.161.13 | 1.161.13 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/nitro-v2-vite-plugin | >=1.154.12 <1.154.16 | 1.154.16 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-router | >=1.169.5 <1.169.9 | 1.169.9 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-router-devtools | >=1.166.16 <1.166.20 | 1.166.20 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-router-ssr-query | >=1.166.15 <1.166.19 | 1.166.19 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-start | >=1.167.68 <1.167.72 | 1.167.72 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-start-client | >=1.166.51 <1.166.55 | 1.166.55 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-start-rsc | >=0.0.47 <0.0.51 | 0.0.51 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-start-server | >=1.166.55 <1.166.59 | 1.166.59 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-cli | >=1.166.46 <1.166.50 | 1.166.50 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-core | >=1.169.5 <1.169.9 | 1.169.9 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-devtools | >=1.166.16 <1.166.20 | 1.166.20 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-devtools-core | >=1.167.6 <1.167.10 | 1.167.10 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-generator | >=1.166.45 <1.166.49 | 1.166.49 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-plugin | >=1.167.38 <1.167.42 | 1.167.42 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-ssr-query-core | >=1.168.3 <1.168.7 | 1.168.7 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-utils | >=1.161.11 <1.161.15 | 1.161.15 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-vite-plugin | >=1.166.53 <1.166.57 | 1.166.57 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-router | >=1.169.5 <1.169.9 | 1.169.9 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-router-devtools | >=1.166.16 <1.166.20 | 1.166.20 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-router-ssr-query | >=1.166.15 <1.166.19 | 1.166.19 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-start | >=1.167.65 <1.167.69 | 1.167.69 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-start-client | >=1.166.50 <1.166.54 | 1.166.54 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-start-server | >=1.166.54 <1.166.58 | 1.166.58 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-client-core | >=1.168.5 <1.168.9 | 1.168.9 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-fn-stubs | >=1.161.9 <1.161.13 | 1.161.13 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-plugin-core | >=1.169.23 <1.169.27 | 1.169.27 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-server-core | >=1.167.33 <1.167.37 | 1.167.37 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-static-server-functions | >=1.166.44 <1.166.48 | 1.166.48 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-storage-context | >=1.166.38 <1.166.42 | 1.166.42 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/valibot-adapter | >=1.166.12 <1.166.16 | 1.166.16 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/virtual-file-routes | >=1.161.10 <1.161.14 | 1.161.14 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-router | >=1.169.5 <1.169.9 | 1.169.9 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-router-devtools | >=1.166.16 <1.166.20 | 1.166.20 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-router-ssr-query | >=1.166.15 <1.166.19 | 1.166.19 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-start | >=1.167.61 <1.167.65 | 1.167.65 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-start-client | >=1.166.46 <1.166.50 | 1.166.50 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-start-server | >=1.166.50 <1.166.54 | 1.166.54 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/zod-adapter | >=1.166.12 <1.166.16 | 1.166.16 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/arktype-adapter | >=1.166.15 <1.166.16 | 1.166.16 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/eslint-plugin-router | >=1.161.12 <1.161.13 | 1.161.13 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/eslint-plugin-start | >=0.0.7 <0.0.8 | 0.0.8 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/history | >=1.161.12 <1.161.13 | 1.161.13 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/nitro-v2-vite-plugin | >=1.154.15 <1.154.16 | 1.154.16 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-router | >=1.169.8 <1.169.9 | 1.169.9 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-router-devtools | >=1.166.19 <1.166.20 | 1.166.20 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-router-ssr-query | >=1.166.18 <1.166.19 | 1.166.19 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-start | >=1.167.71 <1.167.72 | 1.167.72 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-start-client | >=1.166.54 <1.166.55 | 1.166.55 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-start-rsc | >=0.0.50 <0.0.51 | 0.0.51 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/react-start-server | >=1.166.58 <1.166.59 | 1.166.59 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-cli | >=1.166.49 <1.166.50 | 1.166.50 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-core | >=1.169.8 <1.169.9 | 1.169.9 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-devtools | >=1.166.19 <1.166.20 | 1.166.20 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-devtools-core | >=1.167.9 <1.167.10 | 1.167.10 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-generator | >=1.166.48 <1.166.49 | 1.166.49 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-plugin | >=1.167.41 <1.167.42 | 1.167.42 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-ssr-query-core | >=1.168.6 <1.168.7 | 1.168.7 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-utils | >=1.161.14 <1.161.15 | 1.161.15 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/router-vite-plugin | >=1.166.56 <1.166.57 | 1.166.57 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-router | >=1.169.8 <1.169.9 | 1.169.9 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-router-devtools | >=1.166.19 <1.166.20 | 1.166.20 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-router-ssr-query | >=1.166.18 <1.166.19 | 1.166.19 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-start | >=1.167.68 <1.167.69 | 1.167.69 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-start-client | >=1.166.53 <1.166.54 | 1.166.54 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/solid-start-server | >=1.166.57 <1.166.58 | 1.166.58 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-client-core | >=1.168.8 <1.168.9 | 1.168.9 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-fn-stubs | >=1.161.12 <1.161.13 | 1.161.13 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-plugin-core | >=1.169.26 <1.169.27 | 1.169.27 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-server-core | >=1.167.36 <1.167.37 | 1.167.37 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-static-server-functions | >=1.166.47 <1.166.48 | 1.166.48 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/start-storage-context | >=1.166.41 <1.166.42 | 1.166.42 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/valibot-adapter | >=1.166.15 <1.166.16 | 1.166.16 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/virtual-file-routes | >=1.161.13 <1.161.14 | 1.161.14 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-router | >=1.169.8 <1.169.9 | 1.169.9 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-router-devtools | >=1.166.19 <1.166.20 | 1.166.20 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-router-ssr-query | >=1.166.18 <1.166.19 | 1.166.19 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-start | >=1.167.64 <1.167.65 | 1.167.65 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-start-client | >=1.166.49 <1.166.50 | 1.166.50 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/vue-start-server | >=1.166.53 <1.166.54 | 1.166.54 |
| GHSA-g7cv-rxg3-hmpx | npm | @tanstack/zod-adapter | >=1.166.15 <1.166.16 | 1.166.16 |
References
- https://github.com/TanStack/router/issues/7383
- https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx
- 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
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-45321