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.

Project Subscriptions

Vendors Products
Tanstack Subscribe
Arktype-adapter Subscribe
Eslint-plugin-router Subscribe
Eslint-plugin-start Subscribe
History Subscribe
Nitro-v2-vite-plugin Subscribe
Outer-vite-plugin Subscribe
React-router Subscribe
React-router-devtools Subscribe
React-router-ssr-query Subscribe
React-start Subscribe
React-start-client Subscribe
React-start-rsc Subscribe
React-start-server Subscribe
Router-cli Subscribe
Router-core Subscribe
Router-devtools Subscribe
Router-devtools-core Subscribe
Router-generator Subscribe
Router-plugin Subscribe
Router-ssr-query-core Subscribe
Router-utils Subscribe
Solid-router Subscribe
Solid-router-devtools Subscribe
Solid-router-ssr-query Subscribe
Solid-start Subscribe
Solid-start-client Subscribe
Solid-start-server Subscribe
Start-client-core Subscribe
Start-fn-stubs Subscribe
Start-plugin-core Subscribe
Start-server-core Subscribe
Start-static-server-functions Subscribe
Start-storage-context Subscribe
Tanstack\/arktype-adapter Subscribe
Tanstack\/eslint-plugin-router Subscribe
Tanstack\/eslint-plugin-start Subscribe
Tanstack\/history Subscribe
Tanstack\/nitro-v2-vite-plugin Subscribe
Tanstack\/react-router Subscribe
Tanstack\/react-router-devtools Subscribe
Tanstack\/react-router-ssr-query Subscribe
Tanstack\/react-start Subscribe
Tanstack\/react-start-client Subscribe
Tanstack\/react-start-rsc Subscribe
Tanstack\/react-start-server Subscribe
Tanstack\/router-cli Subscribe
Tanstack\/router-core Subscribe
Tanstack\/router-devtools Subscribe
Tanstack\/router-devtools-core Subscribe
Tanstack\/router-generator Subscribe
Tanstack\/router-plugin Subscribe
Tanstack\/router-ssr-query-core Subscribe
Tanstack\/router-utils Subscribe
Tanstack\/router-vite-plugin Subscribe
Tanstack\/solid-router Subscribe
Tanstack\/solid-router-devtools Subscribe
Tanstack\/solid-router-ssr-query Subscribe
Tanstack\/solid-start Subscribe
Tanstack\/solid-start-client Subscribe
Tanstack\/solid-start-server Subscribe
Tanstack\/start-client-core Subscribe
Tanstack\/start-fn-stubs Subscribe
Tanstack\/start-plugin-core Subscribe
Tanstack\/start-server-core Subscribe
Tanstack\/start-static-server-functions Subscribe
Tanstack\/start-storage-context Subscribe
Tanstack\/valibot-adapter Subscribe
Tanstack\/virtual-file-routes Subscribe
Tanstack\/vue-router Subscribe
Tanstack\/vue-router-devtools Subscribe
Tanstack\/vue-router-ssr-query Subscribe
Tanstack\/vue-start Subscribe
Tanstack\/vue-start-client Subscribe
Tanstack\/vue-start-server Subscribe
Tanstack\/zod-adapter Subscribe
Valibot-adapter Subscribe
Virtual-file-routes Subscribe
Vue-router Subscribe
Vue-router-devtools Subscribe
Vue-router-ssr-query Subscribe
Vue-start Subscribe
Vue-start-client Subscribe
Vue-start-server Subscribe
Zod-adapter Subscribe
Advisories
Source ID Title
Github GHSA Github GHSA GHSA-g7cv-rxg3-hmpx Malware in @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys
Fixes

Solution

No solution given by the vendor.


Workaround

No workaround given by the vendor.

History

Thu, 14 May 2026 17:15:00 +0000

Type Values Removed Values Added
First Time appeared Tanstack tanstack\/arktype-adapter
Tanstack tanstack\/eslint-plugin-router
Tanstack tanstack\/eslint-plugin-start
Tanstack tanstack\/history
Tanstack tanstack\/nitro-v2-vite-plugin
Tanstack tanstack\/react-router
Tanstack tanstack\/react-router-devtools
Tanstack tanstack\/react-router-ssr-query
Tanstack tanstack\/react-start
Tanstack tanstack\/react-start-client
Tanstack tanstack\/react-start-rsc
Tanstack tanstack\/react-start-server
Tanstack tanstack\/router-cli
Tanstack tanstack\/router-core
Tanstack tanstack\/router-devtools
Tanstack tanstack\/router-devtools-core
Tanstack tanstack\/router-generator
Tanstack tanstack\/router-plugin
Tanstack tanstack\/router-ssr-query-core
Tanstack tanstack\/router-utils
Tanstack tanstack\/router-vite-plugin
Tanstack tanstack\/solid-router
Tanstack tanstack\/solid-router-devtools
Tanstack tanstack\/solid-router-ssr-query
Tanstack tanstack\/solid-start
Tanstack tanstack\/solid-start-client
Tanstack tanstack\/solid-start-server
Tanstack tanstack\/start-client-core
Tanstack tanstack\/start-fn-stubs
Tanstack tanstack\/start-plugin-core
Tanstack tanstack\/start-server-core
Tanstack tanstack\/start-static-server-functions
Tanstack tanstack\/start-storage-context
Tanstack tanstack\/valibot-adapter
Tanstack tanstack\/virtual-file-routes
Tanstack tanstack\/vue-router
Tanstack tanstack\/vue-router-devtools
Tanstack tanstack\/vue-router-ssr-query
Tanstack tanstack\/vue-start
Tanstack tanstack\/vue-start-client
Tanstack tanstack\/vue-start-server
Tanstack tanstack\/zod-adapter
CPEs 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.12:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/eslint-plugin-router:1.161.9:*:*:*:*: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.12:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/history:1.161.9:*:*:*:*: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:*:*
cpe:2.3:a:tanstack:tanstack\/react-router-devtools:1.166.16:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-router-devtools:1.166.19:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-router-ssr-query:1.166.15:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-router-ssr-query:1.166.18:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-router:1.169.5:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-router:1.169.8:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-start-client:1.166.51:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-start-client:1.166.54:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-start-rsc:0.0.47:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-start-rsc:0.0.50:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-start-server:1.166.55:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-start-server:1.166.58:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-start:1.167.68:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/react-start:1.167.71:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-cli:1.166.46:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-cli:1.166.49:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-core:1.169.5:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-core:1.169.8:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-devtools-core:1.167.6:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-devtools-core:1.167.9:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-devtools:1.166.16:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-devtools:1.166.19:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-generator:1.166.45:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-generator:1.166.48:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-plugin:1.167.38:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-plugin:1.167.41:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-ssr-query-core:1.168.3:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-ssr-query-core:1.168.6:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-utils:1.161.11:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-utils:1.161.14:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-vite-plugin:1.166.53:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/router-vite-plugin:1.166.56:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-router-devtools:1.166.16:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-router-devtools:1.166.19:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-router-ssr-query:1.166.15:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-router-ssr-query:1.166.18:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-router:1.169.5:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-router:1.169.8:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-start-client:1.166.50:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-start-client:1.166.53:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-start-server:1.166.54:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-start-server:1.166.57:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-start:1.167.65:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/solid-start:1.167.68:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-client-core:1.168.5:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-client-core:1.168.8:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-fn-stubs:1.161.12:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-fn-stubs:1.161.9:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-plugin-core:1.169.23:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-plugin-core:1.169.26:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-server-core:1.167.33:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-server-core:1.167.36:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-static-server-functions:1.166.44:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-static-server-functions:1.166.47:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-storage-context:1.166.38:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/start-storage-context:1.166.41:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/valibot-adapter:1.166.12:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/valibot-adapter:1.166.15:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/virtual-file-routes:1.161.10:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/virtual-file-routes:1.161.13:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-router-devtools:1.166.16:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-router-devtools:1.166.19:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-router-ssr-query:1.166.15:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-router-ssr-query:1.166.18:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-router:1.169.5:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-router:1.169.8:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-start-client:1.166.46:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-start-client:1.166.49:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-start-server:1.166.50:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-start-server:1.166.53:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-start:1.167.61:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/vue-start:1.167.64:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/zod-adapter:1.166.12:*:*:*:*:node.js:*:*
cpe:2.3:a:tanstack:tanstack\/zod-adapter:1.166.15:*:*:*:*:node.js:*:*
Vendors & Products Tanstack tanstack\/arktype-adapter
Tanstack tanstack\/eslint-plugin-router
Tanstack tanstack\/eslint-plugin-start
Tanstack tanstack\/history
Tanstack tanstack\/nitro-v2-vite-plugin
Tanstack tanstack\/react-router
Tanstack tanstack\/react-router-devtools
Tanstack tanstack\/react-router-ssr-query
Tanstack tanstack\/react-start
Tanstack tanstack\/react-start-client
Tanstack tanstack\/react-start-rsc
Tanstack tanstack\/react-start-server
Tanstack tanstack\/router-cli
Tanstack tanstack\/router-core
Tanstack tanstack\/router-devtools
Tanstack tanstack\/router-devtools-core
Tanstack tanstack\/router-generator
Tanstack tanstack\/router-plugin
Tanstack tanstack\/router-ssr-query-core
Tanstack tanstack\/router-utils
Tanstack tanstack\/router-vite-plugin
Tanstack tanstack\/solid-router
Tanstack tanstack\/solid-router-devtools
Tanstack tanstack\/solid-router-ssr-query
Tanstack tanstack\/solid-start
Tanstack tanstack\/solid-start-client
Tanstack tanstack\/solid-start-server
Tanstack tanstack\/start-client-core
Tanstack tanstack\/start-fn-stubs
Tanstack tanstack\/start-plugin-core
Tanstack tanstack\/start-server-core
Tanstack tanstack\/start-static-server-functions
Tanstack tanstack\/start-storage-context
Tanstack tanstack\/valibot-adapter
Tanstack tanstack\/virtual-file-routes
Tanstack tanstack\/vue-router
Tanstack tanstack\/vue-router-devtools
Tanstack tanstack\/vue-router-ssr-query
Tanstack tanstack\/vue-start
Tanstack tanstack\/vue-start-client
Tanstack tanstack\/vue-start-server
Tanstack tanstack\/zod-adapter

Tue, 12 May 2026 16:00:00 +0000


Tue, 12 May 2026 14:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Tue, 12 May 2026 10:45:00 +0000

Type Values Removed Values Added
First Time appeared Tanstack
Tanstack arktype-adapter
Tanstack eslint-plugin-router
Tanstack eslint-plugin-start
Tanstack history
Tanstack nitro-v2-vite-plugin
Tanstack outer-vite-plugin
Tanstack react-router
Tanstack react-router-devtools
Tanstack react-router-ssr-query
Tanstack react-start
Tanstack react-start-client
Tanstack react-start-rsc
Tanstack react-start-server
Tanstack router-cli
Tanstack router-core
Tanstack router-devtools
Tanstack router-devtools-core
Tanstack router-generator
Tanstack router-plugin
Tanstack router-ssr-query-core
Tanstack router-utils
Tanstack solid-router
Tanstack solid-router-devtools
Tanstack solid-router-ssr-query
Tanstack solid-start
Tanstack solid-start-client
Tanstack solid-start-server
Tanstack start-client-core
Tanstack start-fn-stubs
Tanstack start-plugin-core
Tanstack start-server-core
Tanstack start-static-server-functions
Tanstack start-storage-context
Tanstack valibot-adapter
Tanstack virtual-file-routes
Tanstack vue-router
Tanstack vue-router-devtools
Tanstack vue-router-ssr-query
Tanstack vue-start
Tanstack vue-start-client
Tanstack vue-start-server
Tanstack zod-adapter
Vendors & Products Tanstack
Tanstack arktype-adapter
Tanstack eslint-plugin-router
Tanstack eslint-plugin-start
Tanstack history
Tanstack nitro-v2-vite-plugin
Tanstack outer-vite-plugin
Tanstack react-router
Tanstack react-router-devtools
Tanstack react-router-ssr-query
Tanstack react-start
Tanstack react-start-client
Tanstack react-start-rsc
Tanstack react-start-server
Tanstack router-cli
Tanstack router-core
Tanstack router-devtools
Tanstack router-devtools-core
Tanstack router-generator
Tanstack router-plugin
Tanstack router-ssr-query-core
Tanstack router-utils
Tanstack solid-router
Tanstack solid-router-devtools
Tanstack solid-router-ssr-query
Tanstack solid-start
Tanstack solid-start-client
Tanstack solid-start-server
Tanstack start-client-core
Tanstack start-fn-stubs
Tanstack start-plugin-core
Tanstack start-server-core
Tanstack start-static-server-functions
Tanstack start-storage-context
Tanstack valibot-adapter
Tanstack virtual-file-routes
Tanstack vue-router
Tanstack vue-router-devtools
Tanstack vue-router-ssr-query
Tanstack vue-start
Tanstack vue-start-client
Tanstack vue-start-server
Tanstack zod-adapter

Tue, 12 May 2026 01:15:00 +0000

Type Values Removed Values Added
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.
Title Malware in 42 @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys
Weaknesses CWE-506
References
Metrics cvssV3_1

{'score': 9.6, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H'}


Projects

Sign in to view the affected projects.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-05-12T15:16:17.354Z

Reserved: 2026-05-11T20:50:30.539Z

Link: CVE-2026-45321

cve-icon Vulnrichment

Updated: 2026-05-12T13:21:29.648Z

cve-icon NVD

Status : Analyzed

Published: 2026-05-12T01:16:46.820

Modified: 2026-05-14T17:05:28.793

Link: CVE-2026-45321

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-12T09:22:12Z

Weaknesses