CVE-2026-45321
CRITICAL CISA KEVDescription
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 v3.1 Score
EPSS — Exploit Prediction
EPSS estimates the probability that this vulnerability will be exploited in the wild within the next 30 days. A higher score means more likely to be exploited.
CISA Known Exploited Vulnerability
This vulnerability is actively exploited in the wild.
Weakness Type (CWE)
Affected Products
| Vendor | Product |
|---|---|
| tanstack | tanstack\/arktype-adapter |
| tanstack | tanstack\/arktype-adapter |
| tanstack | tanstack\/eslint-plugin-router |
| tanstack | tanstack\/eslint-plugin-router |
| tanstack | tanstack\/eslint-plugin-start |
| tanstack | tanstack\/eslint-plugin-start |
| tanstack | tanstack\/history |
| tanstack | tanstack\/history |
| tanstack | tanstack\/nitro-v2-vite-plugin |
| tanstack | tanstack\/nitro-v2-vite-plugin |
| tanstack | tanstack\/react-router |
| tanstack | tanstack\/react-router |
| tanstack | tanstack\/react-router-devtools |
| tanstack | tanstack\/react-router-devtools |
| tanstack | tanstack\/react-router-ssr-query |
| tanstack | tanstack\/react-router-ssr-query |
| tanstack | tanstack\/react-start |
| tanstack | tanstack\/react-start |
| tanstack | tanstack\/react-start-client |
| tanstack | tanstack\/react-start-client |
| tanstack | tanstack\/react-start-rsc |
| tanstack | tanstack\/react-start-rsc |
| tanstack | tanstack\/react-start-server |
| tanstack | tanstack\/react-start-server |
| tanstack | tanstack\/router-cli |
| tanstack | tanstack\/router-cli |
| tanstack | tanstack\/router-core |
| tanstack | tanstack\/router-core |
| tanstack | tanstack\/router-devtools |
| tanstack | tanstack\/router-devtools |
| tanstack | tanstack\/router-devtools-core |
| tanstack | tanstack\/router-devtools-core |
| tanstack | tanstack\/router-generator |
| tanstack | tanstack\/router-generator |
| tanstack | tanstack\/router-plugin |
| tanstack | tanstack\/router-plugin |
| tanstack | tanstack\/router-ssr-query-core |
| tanstack | tanstack\/router-ssr-query-core |
| tanstack | tanstack\/router-utils |
| tanstack | tanstack\/router-utils |
| tanstack | tanstack\/router-vite-plugin |
| tanstack | tanstack\/router-vite-plugin |
| tanstack | tanstack\/solid-router |
| tanstack | tanstack\/solid-router |
| tanstack | tanstack\/solid-router-devtools |
| tanstack | tanstack\/solid-router-devtools |
| tanstack | tanstack\/solid-router-ssr-query |
| tanstack | tanstack\/solid-router-ssr-query |
| tanstack | tanstack\/solid-start |
| tanstack | tanstack\/solid-start |
| tanstack | tanstack\/solid-start-client |
| tanstack | tanstack\/solid-start-client |
| tanstack | tanstack\/solid-start-server |
| tanstack | tanstack\/solid-start-server |
| tanstack | tanstack\/start-client-core |
| tanstack | tanstack\/start-client-core |
| tanstack | tanstack\/start-fn-stubs |
| tanstack | tanstack\/start-fn-stubs |
| tanstack | tanstack\/start-plugin-core |
| tanstack | tanstack\/start-plugin-core |
| tanstack | tanstack\/start-server-core |
| tanstack | tanstack\/start-server-core |
| tanstack | tanstack\/start-static-server-functions |
| tanstack | tanstack\/start-static-server-functions |
| tanstack | tanstack\/start-storage-context |
| tanstack | tanstack\/start-storage-context |
| tanstack | tanstack\/valibot-adapter |
| tanstack | tanstack\/valibot-adapter |
| tanstack | tanstack\/virtual-file-routes |
| tanstack | tanstack\/virtual-file-routes |
| tanstack | tanstack\/vue-router |
| tanstack | tanstack\/vue-router |
| tanstack | tanstack\/vue-router-devtools |
| tanstack | tanstack\/vue-router-devtools |
| tanstack | tanstack\/vue-router-ssr-query |
| tanstack | tanstack\/vue-router-ssr-query |
| tanstack | tanstack\/vue-start |
| tanstack | tanstack\/vue-start |
| tanstack | tanstack\/vue-start-client |
| tanstack | tanstack\/vue-start-client |
| tanstack | tanstack\/vue-start-server |
| tanstack | tanstack\/vue-start-server |
| tanstack | tanstack\/zod-adapter |
| tanstack | tanstack\/zod-adapter |
References
Advisories & Patches
Exploits
Other References
Frequently Asked Questions
What is CVE-2026-45321? +
How severe is CVE-2026-45321? +
What products are affected by CVE-2026-45321? +
How do I check if I'm vulnerable to CVE-2026-45321? +
Related Vulnerabilities
DuckDB is an analytical in-process SQL database management system. On 08 September 2025, the DuckDB distribution for Node.js on npm …
Prebid.js is a free and open source library for publishers to quickly implement header bidding. NPM users of prebid 10.9.2 …
Prebid Universal Creative (PUC) is a JavaScript API to render multiple formats. Npm users of PUC 1.17.3 or PUC latest …
backlash parses collected strings with escapes. On 8 September 2025, the npm publishing account for backslash was taken over after …
simple-swizzle swizzles function arguments. On 8 September 2025, the npm publishing account for simple-swizzle was taken over after a phishing …
color-string is a parser and generator for CSS color strings. On 8 September 2025, the npm publishing account for color-string …