Skip to main content
← All vulnerabilities
CVE-2026-45321GHSA-G7CV-RXG3-HMPX

Malware in 42 @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys

Malware in 42 @tanstack/* npm packages, installed on 2026-05-11, runs at install time and steals cloud, GitHub and SSH credentials. Pin to versions published before 2026-05-11 19:00 UTC.

Published
Last modified
published
Listed in CISA KEV
Actively exploited
Fix
Fixed in 1.166.16, 1.161.13, 0.0.8, 1.154.16, 1.169.9, and 23 more
None on Exploit-DB, Metasploit or GitHub

Summary

The affected software is 42 TanStack npm packages (the @tanstack/* family) published to the npm registry, which developers install as JavaScript libraries. Malicious versions of these packages can steal cloud credentials, GitHub tokens, and SSH keys from anyone who installs them.

Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.

Read the original 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.

Timeline

  1. CVE published
  2. Added to CISA KEV

    CISA has evidence of exploitation in the wild

  3. CISA remediation deadline

    Due date for US federal agencies to patch

  4. Record last updated

Affected versions

  • @tanstack arktype-adapter

    1.166.12, 1.166.15

  • @tanstack eslint-plugin-router

    1.161.9, 1.161.12

  • @tanstack eslint-plugin-start

    0.0.4, 0.0.7

  • @tanstack history

    1.161.9, 1.161.12

  • @tanstack nitro-v2-vite-plugin

    1.154.12, 1.154.15

  • @tanstack react-router

    1.169.5, 1.169.8

  • @tanstack react-router-devtools

    1.166.16, 1.166.19

  • @tanstack react-router-ssr-query

    1.166.15, 1.166.18

  • @tanstack react-start

    1.167.68, 1.167.71

  • @tanstack react-start-client

    1.166.51, 1.166.54

  • @tanstack react-start-rsc

    0.0.47, 0.0.50

  • @tanstack react-start-server

    1.166.55, 1.166.58

  • @tanstack router-cli

    1.166.46, 1.166.49

  • @tanstack router-core

    1.169.5, 1.169.8

  • @tanstack router-devtools

    1.166.16, 1.166.19

  • @tanstack router-devtools-core

    1.167.6, 1.167.9

  • @tanstack router-generator

    1.166.45, 1.166.48

  • @tanstack router-plugin

    1.167.38, 1.167.41

  • @tanstack router-ssr-query-core

    1.168.3, 1.168.6

  • @tanstack router-utils

    1.161.11, 1.161.14

  • @tanstack outer-vite-plugin

    1.166.53, 1.166.56

  • @tanstack solid-router

    1.169.5, 1.169.8

  • @tanstack solid-router-devtools

    1.166.16, 1.166.19

  • @tanstack solid-router-ssr-query

    1.166.15, 1.166.18

  • @tanstack solid-start

    1.167.65, 1.167.68

  • @tanstack solid-start-client

    1.166.50, 1.166.53

  • @tanstack solid-start-server

    1.166.54, 1.166.57

  • @tanstack start-client-core

    1.168.5, 1.168.8

  • @tanstack start-fn-stubs

    1.161.9, 1.161.12

  • @tanstack start-plugin-core

    1.169.23, 1.169.26

  • @tanstack start-server-core

    1.167.33, 1.167.36

  • @tanstack start-static-server-functions

    1.166.44, 1.166.47

  • @tanstack start-storage-context

    1.166.38, 1.166.41

  • @tanstack valibot-adapter

    1.166.12, 1.166.15

  • @tanstack virtual-file-routes

    1.161.10, 1.161.13

  • @tanstack vue-router

    1.169.5, 1.169.8

  • @tanstack vue-router-devtools

    1.166.16, 1.166.19

  • @tanstack vue-router-ssr-query

    1.166.15, 1.166.18

  • @tanstack vue-start

    1.167.61, 1.167.64

  • @tanstack vue-start-client

    1.166.46, 1.166.49

  • @tanstack vue-start-server

    1.166.50, 1.166.53

  • @tanstack zod-adapter

    1.166.12, 1.166.15

  • @tanstack/arktype-adapternpm

    From 1.166.12 · fixed in 1.166.16

  • @tanstack/eslint-plugin-routernpm

    From 1.161.9 · fixed in 1.161.13

  • @tanstack/eslint-plugin-startnpm

    From 0.0.4 · fixed in 0.0.8

  • @tanstack/historynpm

    From 1.161.9 · fixed in 1.161.13

  • @tanstack/nitro-v2-vite-pluginnpm

    From 1.154.12 · fixed in 1.154.16

  • @tanstack/react-routernpm

    From 1.169.5 · fixed in 1.169.9

  • @tanstack/react-router-devtoolsnpm

    From 1.166.16 · fixed in 1.166.20

  • @tanstack/react-router-ssr-querynpm

    From 1.166.15 · fixed in 1.166.19

  • @tanstack/react-startnpm

    From 1.167.68 · fixed in 1.167.72

  • @tanstack/react-start-clientnpm

    From 1.166.51 · fixed in 1.166.55

  • @tanstack/react-start-rscnpm

    From 0.0.47 · fixed in 0.0.51

  • @tanstack/react-start-servernpm

    From 1.166.55 · fixed in 1.166.59

  • @tanstack/router-clinpm

    From 1.166.46 · fixed in 1.166.50

  • @tanstack/router-corenpm

    From 1.169.5 · fixed in 1.169.9

  • @tanstack/router-devtoolsnpm

    From 1.166.16 · fixed in 1.166.20

  • @tanstack/router-devtools-corenpm

    From 1.167.6 · fixed in 1.167.10

  • @tanstack/router-generatornpm

    From 1.166.45 · fixed in 1.166.49

  • @tanstack/router-pluginnpm

    From 1.167.38 · fixed in 1.167.42

  • @tanstack/router-ssr-query-corenpm

    From 1.168.3 · fixed in 1.168.7

  • @tanstack/router-utilsnpm

    From 1.161.11 · fixed in 1.161.15

  • @tanstack/router-vite-pluginnpm

    From 1.166.53 · fixed in 1.166.57

  • @tanstack/solid-routernpm

    From 1.169.5 · fixed in 1.169.9

  • @tanstack/solid-router-devtoolsnpm

    From 1.166.16 · fixed in 1.166.20

  • @tanstack/solid-router-ssr-querynpm

    From 1.166.15 · fixed in 1.166.19

  • @tanstack/solid-startnpm

    From 1.167.65 · fixed in 1.167.69

  • @tanstack/solid-start-clientnpm

    From 1.166.50 · fixed in 1.166.54

  • @tanstack/solid-start-servernpm

    From 1.166.54 · fixed in 1.166.58

  • @tanstack/start-client-corenpm

    From 1.168.5 · fixed in 1.168.9

  • @tanstack/start-fn-stubsnpm

    From 1.161.9 · fixed in 1.161.13

  • @tanstack/start-plugin-corenpm

    From 1.169.23 · fixed in 1.169.27

  • @tanstack/start-server-corenpm

    From 1.167.33 · fixed in 1.167.37

  • @tanstack/start-static-server-functionsnpm

    From 1.166.44 · fixed in 1.166.48

  • @tanstack/start-storage-contextnpm

    From 1.166.38 · fixed in 1.166.42

  • @tanstack/valibot-adapternpm

    From 1.166.12 · fixed in 1.166.16

  • @tanstack/virtual-file-routesnpm

    From 1.161.10 · fixed in 1.161.14

  • @tanstack/vue-routernpm

    From 1.169.5 · fixed in 1.169.9

  • @tanstack/vue-router-devtoolsnpm

    From 1.166.16 · fixed in 1.166.20

  • @tanstack/vue-router-ssr-querynpm

    From 1.166.15 · fixed in 1.166.19

  • @tanstack/vue-startnpm

    From 1.167.61 · fixed in 1.167.65

  • @tanstack/vue-start-clientnpm

    From 1.166.46 · fixed in 1.166.50

  • @tanstack/vue-start-servernpm

    From 1.166.50 · fixed in 1.166.54

  • @tanstack/zod-adapternpm

    From 1.166.12 · fixed in 1.166.16

  • @tanstack/arktype-adapternpm

    From 1.166.15 · fixed in 1.166.16

  • @tanstack/eslint-plugin-routernpm

    From 1.161.12 · fixed in 1.161.13

  • @tanstack/eslint-plugin-startnpm

    From 0.0.7 · fixed in 0.0.8

  • @tanstack/historynpm

    From 1.161.12 · fixed in 1.161.13

  • @tanstack/nitro-v2-vite-pluginnpm

    From 1.154.15 · fixed in 1.154.16

  • @tanstack/react-routernpm

    From 1.169.8 · fixed in 1.169.9

  • @tanstack/react-router-devtoolsnpm

    From 1.166.19 · fixed in 1.166.20

  • @tanstack/react-router-ssr-querynpm

    From 1.166.18 · fixed in 1.166.19

  • @tanstack/react-startnpm

    From 1.167.71 · fixed in 1.167.72

  • @tanstack/react-start-clientnpm

    From 1.166.54 · fixed in 1.166.55

  • @tanstack/react-start-rscnpm

    From 0.0.50 · fixed in 0.0.51

  • @tanstack/react-start-servernpm

    From 1.166.58 · fixed in 1.166.59

  • @tanstack/router-clinpm

    From 1.166.49 · fixed in 1.166.50

  • @tanstack/router-corenpm

    From 1.169.8 · fixed in 1.169.9

  • @tanstack/router-devtoolsnpm

    From 1.166.19 · fixed in 1.166.20

  • @tanstack/router-devtools-corenpm

    From 1.167.9 · fixed in 1.167.10

  • @tanstack/router-generatornpm

    From 1.166.48 · fixed in 1.166.49

  • @tanstack/router-pluginnpm

    From 1.167.41 · fixed in 1.167.42

  • @tanstack/router-ssr-query-corenpm

    From 1.168.6 · fixed in 1.168.7

  • @tanstack/router-utilsnpm

    From 1.161.14 · fixed in 1.161.15

  • @tanstack/router-vite-pluginnpm

    From 1.166.56 · fixed in 1.166.57

  • @tanstack/solid-routernpm

    From 1.169.8 · fixed in 1.169.9

  • @tanstack/solid-router-devtoolsnpm

    From 1.166.19 · fixed in 1.166.20

  • @tanstack/solid-router-ssr-querynpm

    From 1.166.18 · fixed in 1.166.19

  • @tanstack/solid-startnpm

    From 1.167.68 · fixed in 1.167.69

  • @tanstack/solid-start-clientnpm

    From 1.166.53 · fixed in 1.166.54

  • @tanstack/solid-start-servernpm

    From 1.166.57 · fixed in 1.166.58

  • @tanstack/start-client-corenpm

    From 1.168.8 · fixed in 1.168.9

  • @tanstack/start-fn-stubsnpm

    From 1.161.12 · fixed in 1.161.13

  • @tanstack/start-plugin-corenpm

    From 1.169.26 · fixed in 1.169.27

  • @tanstack/start-server-corenpm

    From 1.167.36 · fixed in 1.167.37

  • @tanstack/start-static-server-functionsnpm

    From 1.166.47 · fixed in 1.166.48

  • @tanstack/start-storage-contextnpm

    From 1.166.41 · fixed in 1.166.42

  • @tanstack/valibot-adapternpm

    From 1.166.15 · fixed in 1.166.16

  • @tanstack/virtual-file-routesnpm

    From 1.161.13 · fixed in 1.161.14

  • @tanstack/vue-routernpm

    From 1.169.8 · fixed in 1.169.9

  • @tanstack/vue-router-devtoolsnpm

    From 1.166.19 · fixed in 1.166.20

  • @tanstack/vue-router-ssr-querynpm

    From 1.166.18 · fixed in 1.166.19

  • @tanstack/vue-startnpm

    From 1.167.64 · fixed in 1.167.65

  • @tanstack/vue-start-clientnpm

    From 1.166.49 · fixed in 1.166.50

  • @tanstack/vue-start-servernpm

    From 1.166.53 · fixed in 1.166.54

  • @tanstack/zod-adapternpm

    From 1.166.15 · fixed in 1.166.16

References 4

GitHub · TanStack/router

tanstack.com

stepsecurity.io

FAQ

Questions about CVE-2026-45321

What does this mean?

The malware runs during install and harvests cloud metadata and secrets (AWS, GCP, Kubernetes, Vault), npm tokens, GitHub tokens and SSH private keys from the install host. It sends them out over the Session/Oxen file-upload network and can republish the victim's other packages with the same malware.Source: github.com

Am I affected, and how do I check?

The advisory lists specific affected versions for 42 @tanstack/* packages, and the payload runs only when one of those versions is installed with npm, pnpm or yarn on 2026-05-11. To check, compare the installed @tanstack/* versions in your lockfile or the output of npm ls against the advisory's list.Source: github.com

What should I do about it?

Pin every @tanstack/* dependency to a version published before 2026-05-11 19:00 UTC. The advisory lists the fixed version for each affected package.Source: github.com

Is it being exploited?

Yes. CISA added it to its Known Exploited Vulnerabilities catalog on 2026-05-27, which means it has evidence of attacks. No public exploit code is tracked.Source: cisa.gov, cve.now feed data