CVE-2026-45321: TanStack npm packages supply chain compromise via GitHub Actions OIDC hijacking

CVE-2026-45321 · Severity: critical · CVSS 9.6 · Exploited in the wild · Published 2026-05-12

Multiple popular TanStack JavaScript libraries were compromised via a supply chain attack, resulting in the publication of malicious versions to the npm registry. These malicious versions contain code that automatically steals sensitive information, including cloud credentials (AWS, GCP), GitHub tokens, and SSH keys, from any developer machine or server where they are installed. This could lead to full account takeovers, data breaches, and further spread of the malware to other software projects.

Technologies: @tanstack/start-server-core (npm), TanStack React Router. Vendors: npm, TanStack.

Quick answers

Is CVE-2026-45321 exploited in the wild?
Yes. CVE-2026-45321 is known to be exploited in the wild, first recorded on 27 May 2026. Treat it as urgent.
How severe is CVE-2026-45321?
Critical severity, with a CVSS score of 9.6, published 12 May 2026.
Which products and versions are affected?
@tanstack/arktype-adapter (npm) SEMVER:introduced=1.166.12,fixed=1.166.16; @tanstack/eslint-plugin-router (npm) SEMVER:introduced=1.161.9,fixed=1.161.13; @tanstack/eslint-plugin-start (npm) SEMVER:introduced=0.0.4,fixed=0.0.8; @tanstack/history (npm) SEMVER:introduced=1.161.9,fixed=1.161.13; and 47 more.
Is there a fix for CVE-2026-45321?
Yes. @tanstack/arktype-adapter (npm): upgrade to 1.166.16 or later; @tanstack/eslint-plugin-router (npm): upgrade to 1.161.13 or later; @tanstack/eslint-plugin-start (npm): upgrade to 0.0.8 or later; @tanstack/history (npm): upgrade to 1.161.13 or later; @tanstack/nitro-v2-vite-plugin (npm): upgrade to 1.154.16 or later; @tanstack/react-router (npm): upgrade to 1.169.9 or later; @tanstack/react-router-devtools (npm): upgrade to 1.166.20 or later; @tanstack/react-router-ssr-query (npm): upgrade to 1.166.19 or later; @tanstack/react-start (npm): upgrade to 1.167.72 or later; @tanstack/react-start-client (npm): upgrade to 1.166.55 or later; @tanstack/react-start-rsc (npm): upgrade to 0.0.51 or later; @tanstack/react-start-server (npm): upgrade to 1.166.59 or later; @tanstack/router-cli (npm): upgrade to 1.166.50 or later; @tanstack/router-core (npm): upgrade to 1.169.9 or later; @tanstack/router-devtools (npm): upgrade to 1.166.20 or later; @tanstack/router-devtools-core (npm): upgrade to 1.167.10 or later; @tanstack/router-generator (npm): upgrade to 1.166.49 or later; @tanstack/router-plugin (npm): upgrade to 1.167.42 or later; @tanstack/router-ssr-query-core (npm): upgrade to 1.168.7 or later; @tanstack/router-utils (npm): upgrade to 1.161.15 or later; @tanstack/router-vite-plugin (npm): upgrade to 1.166.57 or later; @tanstack/solid-router (npm): upgrade to 1.169.9 or later; @tanstack/solid-router-devtools (npm): upgrade to 1.166.20 or later; @tanstack/solid-router-ssr-query (npm): upgrade to 1.166.19 or later; @tanstack/solid-start (npm): upgrade to 1.167.69 or later; @tanstack/solid-start-client (npm): upgrade to 1.166.54 or later; @tanstack/solid-start-server (npm): upgrade to 1.166.58 or later; @tanstack/start-client-core (npm): upgrade to 1.168.9 or later; @tanstack/start-fn-stubs (npm): upgrade to 1.161.13 or later; @tanstack/start-plugin-core (npm): upgrade to 1.169.27 or later; @tanstack/start-server-core (npm): upgrade to 1.167.37 or later; @tanstack/start-static-server-functions (npm): upgrade to 1.166.48 or later; @tanstack/start-storage-context (npm): upgrade to 1.166.42 or later; @tanstack/valibot-adapter (npm): upgrade to 1.166.16 or later; @tanstack/virtual-file-routes (npm): upgrade to 1.161.14 or later; @tanstack/vue-router (npm): upgrade to 1.169.9 or later; @tanstack/vue-router-devtools (npm): upgrade to 1.166.20 or later; @tanstack/vue-router-ssr-query (npm): upgrade to 1.166.19 or later; @tanstack/vue-start (npm): upgrade to 1.167.65 or later; @tanstack/vue-start-client (npm): upgrade to 1.166.50 or later; @tanstack/vue-start-server (npm): upgrade to 1.166.54 or later; @tanstack/zod-adapter (npm): upgrade to 1.166.16 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-45321 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-45321?
Check whether you run @tanstack/arktype-adapter (npm), @tanstack/eslint-plugin-router (npm), @tanstack/eslint-plugin-start (npm) or one of the others listed at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @tanstack/arktype-adapter (npm): upgrade to 1.166.16 or later
    npm install @tanstack/arktype-adapter@1.166.16
  • @tanstack/eslint-plugin-router (npm): upgrade to 1.161.13 or later
    npm install @tanstack/eslint-plugin-router@1.161.13
  • @tanstack/eslint-plugin-start (npm): upgrade to 0.0.8 or later
    npm install @tanstack/eslint-plugin-start@0.0.8
  • @tanstack/history (npm): upgrade to 1.161.13 or later
    npm install @tanstack/history@1.161.13
  • @tanstack/nitro-v2-vite-plugin (npm): upgrade to 1.154.16 or later
    npm install @tanstack/nitro-v2-vite-plugin@1.154.16
  • @tanstack/react-router (npm): upgrade to 1.169.9 or later
    npm install @tanstack/react-router@1.169.9
  • @tanstack/react-router-devtools (npm): upgrade to 1.166.20 or later
    npm install @tanstack/react-router-devtools@1.166.20
  • @tanstack/react-router-ssr-query (npm): upgrade to 1.166.19 or later
    npm install @tanstack/react-router-ssr-query@1.166.19
  • @tanstack/react-start (npm): upgrade to 1.167.72 or later
    npm install @tanstack/react-start@1.167.72
  • @tanstack/react-start-client (npm): upgrade to 1.166.55 or later
    npm install @tanstack/react-start-client@1.166.55
  • @tanstack/react-start-rsc (npm): upgrade to 0.0.51 or later
    npm install @tanstack/react-start-rsc@0.0.51
  • @tanstack/react-start-server (npm): upgrade to 1.166.59 or later
    npm install @tanstack/react-start-server@1.166.59
  • @tanstack/router-cli (npm): upgrade to 1.166.50 or later
    npm install @tanstack/router-cli@1.166.50
  • @tanstack/router-core (npm): upgrade to 1.169.9 or later
    npm install @tanstack/router-core@1.169.9
  • @tanstack/router-devtools (npm): upgrade to 1.166.20 or later
    npm install @tanstack/router-devtools@1.166.20
  • @tanstack/router-devtools-core (npm): upgrade to 1.167.10 or later
    npm install @tanstack/router-devtools-core@1.167.10
  • @tanstack/router-generator (npm): upgrade to 1.166.49 or later
    npm install @tanstack/router-generator@1.166.49
  • @tanstack/router-plugin (npm): upgrade to 1.167.42 or later
    npm install @tanstack/router-plugin@1.167.42
  • @tanstack/router-ssr-query-core (npm): upgrade to 1.168.7 or later
    npm install @tanstack/router-ssr-query-core@1.168.7
  • @tanstack/router-utils (npm): upgrade to 1.161.15 or later
    npm install @tanstack/router-utils@1.161.15
  • @tanstack/router-vite-plugin (npm): upgrade to 1.166.57 or later
    npm install @tanstack/router-vite-plugin@1.166.57
  • @tanstack/solid-router (npm): upgrade to 1.169.9 or later
    npm install @tanstack/solid-router@1.169.9
  • @tanstack/solid-router-devtools (npm): upgrade to 1.166.20 or later
    npm install @tanstack/solid-router-devtools@1.166.20
  • @tanstack/solid-router-ssr-query (npm): upgrade to 1.166.19 or later
    npm install @tanstack/solid-router-ssr-query@1.166.19
  • @tanstack/solid-start (npm): upgrade to 1.167.69 or later
    npm install @tanstack/solid-start@1.167.69
  • @tanstack/solid-start-client (npm): upgrade to 1.166.54 or later
    npm install @tanstack/solid-start-client@1.166.54
  • @tanstack/solid-start-server (npm): upgrade to 1.166.58 or later
    npm install @tanstack/solid-start-server@1.166.58
  • @tanstack/start-client-core (npm): upgrade to 1.168.9 or later
    npm install @tanstack/start-client-core@1.168.9
  • @tanstack/start-fn-stubs (npm): upgrade to 1.161.13 or later
    npm install @tanstack/start-fn-stubs@1.161.13
  • @tanstack/start-plugin-core (npm): upgrade to 1.169.27 or later
    npm install @tanstack/start-plugin-core@1.169.27
  • @tanstack/start-server-core (npm): upgrade to 1.167.37 or later
    npm install @tanstack/start-server-core@1.167.37
  • @tanstack/start-static-server-functions (npm): upgrade to 1.166.48 or later
    npm install @tanstack/start-static-server-functions@1.166.48
  • @tanstack/start-storage-context (npm): upgrade to 1.166.42 or later
    npm install @tanstack/start-storage-context@1.166.42
  • @tanstack/valibot-adapter (npm): upgrade to 1.166.16 or later
    npm install @tanstack/valibot-adapter@1.166.16
  • @tanstack/virtual-file-routes (npm): upgrade to 1.161.14 or later
    npm install @tanstack/virtual-file-routes@1.161.14
  • @tanstack/vue-router (npm): upgrade to 1.169.9 or later
    npm install @tanstack/vue-router@1.169.9
  • @tanstack/vue-router-devtools (npm): upgrade to 1.166.20 or later
    npm install @tanstack/vue-router-devtools@1.166.20
  • @tanstack/vue-router-ssr-query (npm): upgrade to 1.166.19 or later
    npm install @tanstack/vue-router-ssr-query@1.166.19
  • @tanstack/vue-start (npm): upgrade to 1.167.65 or later
    npm install @tanstack/vue-start@1.167.65
  • @tanstack/vue-start-client (npm): upgrade to 1.166.50 or later
    npm install @tanstack/vue-start-client@1.166.50
  • @tanstack/vue-start-server (npm): upgrade to 1.166.54 or later
    npm install @tanstack/vue-start-server@1.166.54
  • @tanstack/zod-adapter (npm): upgrade to 1.166.16 or later
    npm install @tanstack/zod-adapter@1.166.16

Technical details

An attacker compromised the TanStack npm publishing pipeline by chaining a 'pull_request_target' misconfiguration, GitHub Actions cache poisoning, and runtime memory extraction of OIDC tokens. This allowed the unauthorized publication of 84 malicious versions across 42 packages. The malware executes during the npm install lifecycle via a hidden 'optionalDependencies' entry pointing to a malicious git commit. Once active, it harvests credentials from environment variables, local config files (~/.ssh, ~/.npmrc), and cloud metadata services (IMDS), exfiltrating them via the Session/Oxen messenger network. It also attempts to self-propagate by identifying and infecting other packages maintained by the victim.

Affected products

  • TanStack @tanstack/arktype-adapter 1.166.12, 1.166.15
  • TanStack @tanstack/react-router 1.169.5, 1.169.8
  • TanStack @tanstack/router-core 1.169.5, 1.169.8
  • TanStack @tanstack/solid-router 1.169.5, 1.169.8
  • TanStack @tanstack/vue-router 1.169.5, 1.169.8

Identifiers

  • CVE-2026-45321
  • GHSA-g7cv-rxg3-hmpx

Timeline

  • 2026-05-11: exploited: Malicious versions first published to npm registry
  • 2026-05-11: other: Last malicious version published in the initial wave
  • 2026-05-12: advisory: GitHub Advisory published

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.