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
Why It Matters
Analysis dossierWhy It Matters
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.
Immediate Attention
Yes
Unknown
Risk basis: CISA KEV exploitation signal; Microsoft or Microsoft-managed product relevance; CRITICAL severity; Known exploitation signal from CISA KEV or ransomware metadata
Affected Products & Remediation
40 source-backed products- tanstack tanstack\/arktype-adapter · 1.166.12; 1.166.15 · NVD CPE · Source
- tanstack tanstack\/eslint-plugin-router · 1.161.9; 1.161.12 · NVD CPE · Source
- tanstack tanstack\/eslint-plugin-start · 0.0.4; 0.0.7 · NVD CPE · Source
- tanstack tanstack\/history · 1.161.9; 1.161.12 · NVD CPE · Source
- tanstack tanstack\/nitro-v2-vite-plugin · 1.154.12; 1.154.15 · NVD CPE · Source
- tanstack tanstack\/react-router · 1.169.5; 1.169.8 · NVD CPE · Source
- tanstack tanstack\/react-router-devtools · 1.166.16; 1.166.19 · NVD CPE · Source
- tanstack tanstack\/react-router-ssr-query · 1.166.15; 1.166.18 · NVD CPE · Source
- tanstack tanstack\/react-start · 1.167.68; 1.167.71 · NVD CPE · Source
- tanstack tanstack\/react-start-client · 1.166.51; 1.166.54 · NVD CPE · Source
- tanstack tanstack\/react-start-rsc · 0.0.47; 0.0.50 · NVD CPE · Source
- tanstack tanstack\/react-start-server · 1.166.55; 1.166.58 · NVD CPE · Source
- tanstack tanstack\/router-cli · 1.166.46; 1.166.49 · NVD CPE · Source
- tanstack tanstack\/router-core · 1.169.5; 1.169.8 · NVD CPE · Source
- tanstack tanstack\/router-devtools · 1.166.16; 1.166.19 · NVD CPE · Source
- tanstack tanstack\/router-devtools-core · 1.167.6; 1.167.9 · NVD CPE · Source
- tanstack tanstack\/router-generator · 1.166.45; 1.166.48 · NVD CPE · Source
- tanstack tanstack\/router-plugin · 1.167.38; 1.167.41 · NVD CPE · Source
- tanstack tanstack\/router-ssr-query-core · 1.168.3; 1.168.6 · NVD CPE · Source
- tanstack tanstack\/router-utils · 1.161.11; 1.161.14 · NVD CPE · Source
- tanstack tanstack\/router-vite-plugin · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/solid-router · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/solid-router-devtools · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/solid-router-ssr-query · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/solid-start · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/solid-start-client · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/solid-start-server · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/start-client-core · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/start-fn-stubs · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/start-plugin-core · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/start-server-core · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/start-static-server-functions · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/start-storage-context · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/valibot-adapter · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/virtual-file-routes · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/vue-router · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/vue-router-devtools · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/vue-router-ssr-query · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/vue-start · version range not provided by source · NVD CPE · Source
- tanstack tanstack\/vue-start-client · version range not provided by source · NVD CPE · Source
Vendor or catalog guidance (source)
- CISA KEV: Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
Known exploitation (source facts)
Only what a source states. Unknown means no source has said either way; it is not "not exploited".
- CISA KEV
- Listed
- Exploited (source statement)
- Yes
- Publicly disclosed (source)
- Unknown
CISA required action: Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
Suggested hunting (rule-based inference)
SecOps Signal recommendation (rule-based inference). These steps are hunting hypotheses from the vulnerability class; they do not state or imply that exploitation occurred here or anywhere.
Matched kev-network-exposure (CVSS AV:N, CISA KEV Listed); user-interaction-client (CVSS AV:N, CVSS UI:R)
Exposure
- Identify assets with the exact CVE and confirm the affected product/version against the advisory.Telemetry: DeviceTvmSoftwareVulnerabilities · KEV listing raises urgency, but inventory is needed to establish local exposure. · Rule kev-network-exposure
- Identify endpoints reporting this CVE, especially those used for email and web browsing.Telemetry: DeviceTvmSoftwareVulnerabilities · A network vector that needs user interaction points at user-facing client software. · Rule user-interaction-client
Exploitation evidence
- Review relevant edge or application access logs for unusual requests around the advisory window.Telemetry: CommonSecurityLog · Log review is a hunting hypothesis; KEV listing alone does not show local exploitation. · Rule kev-network-exposure
Show more (2)
Exploitation evidence
- Review unusual child processes started by the affected client application on affected endpoints.Telemetry: DeviceProcessEvents · Hunting hypothesis from the CVSS vector; it does not show that exploitation occurred. · Rule user-interaction-client
Response
- Recheck the affected assets after the source-stated mitigation or update is applied.Telemetry: DeviceTvmSoftwareVulnerabilities · A follow-up inventory check verifies local remediation. · Rule kev-network-exposure
CISA KEV Record
Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
Change History & Source Data
— No recorded material change
- CNA / source
- security-advisories@github.com
- Record status · verification
- UPDATED · CISA KEV confirmed
- CPE
- cpe:2.3:a:tanstack:tanstack\/arktype-adapter:1.166.12:*:*:*:*:node.js:*:*, cpe:2.3:a:tanstack:tanstack\/arktype-adapter:1.166.15:*:*:*:*:node.js:*:*, cpe:2.3:a:tanstack:tanstack\/eslint-plugin-router:1.161.9:*:*:*:*:node.js:*:*, cpe:2.3:a:tanstack:tanstack\/eslint-plugin-router:1.161.12:*:*:*:*:node.js:*:*, cpe:2.3:a:tanstack:tanstack\/eslint-plugin-start:0.0.4:*:*:*:*:node.js:*:*, cpe:2.3:a:tanstack:tanstack\/eslint-plugin-start:0.0.7:*:*:*:*:node.js:*:*, cpe:2.3:a:tanstack:tanstack\/history:1.161.9:*:*:*:*:node.js:*:*, cpe:2.3:a:tanstack:tanstack\/history:1.161.12:*:*:*:*:node.js:*:*, cpe:2.3:a:tanstack:tanstack\/nitro-v2-vite-plugin:1.154.12:*:*:*:*:node.js:*:*, cpe:2.3:a:tanstack:tanstack\/nitro-v2-vite-plugin:1.154.15:*:*:*:*:node.js:*:*
Evidence & Provenance
Linked by the query's stored exact CVE association. Review required tables and validation status before use.
DeviceTvmSoftwareVulnerabilities| where CveId == "CVE-2026-45321"| project DeviceId, DeviceName, OSPlatform, OSVersion, SoftwareVendor, SoftwareName, SoftwareVersion, CveId, VulnerabilitySeverityLevel, RecommendedSecurityUpdate, RecommendedSecurityUpdateId| sort by VulnerabilitySeverityLevel desc