---
title: "CVE-2026-45321: TanStack Unspecified Vulnerability"
url: https://erroneo.us/security/cve/CVE-2026-45321/
description: "CVE-2026-45321 (TanStack TanStack): Exploited in the wild (CISA KEV). On 2026-05-11, between approximately 19:20 and 19:26 UTC, 84 malicious versions across…"
type: vulnerability-record
section: "Security Digest"
date_published: 2026-05-12
date_modified: 2026-10-21
publisher: erroneo.us
author: erroneo.us Security Desk
cve: "CVE-2026-45321"
kev: true
cvss: 9.6
epss: 0.01054
license: All rights reserved. Quote with attribution and a link.
---

# CVE-2026-45321: TanStack Unspecified Vulnerability

**Signal:** Exploited: patch now if you run it. CISA has confirmed exploitation in the wild. (Computed from CISA KEV, EPSS and CVSS; not an editorial verdict.)

## Should you act?

- Yes, if you run TanStack TanStack. CISA added this CVE to its Known Exploited Vulnerabilities catalog on 2026-05-27, which means there is reliable evidence of exploitation in the wild. US federal agencies must remediate by 2026-06-10 ; treat that as the outer limit, not the target. CISA also lists it as known to be used in ransomware campaigns .
- EPSS 1.1% , percentile 64: FIRST’s model estimates a 1.1% chance of exploitation activity in the next 30 days, higher than 64% of all scored CVEs (moderate). EPSS is a probability, not a verdict.
- Needs a user to click or open something. Phishing makes that realistic, but it is not wormable.
- Only applies if your dependency tree includes @tanstack/arktype-adapter (npm) = 1.166.12, fixed in 1.166.16 ; @tanstack/eslint-plugin-router (npm) = 1.161.9, fixed in 1.161.13 ; @tanstack/eslint-plugin-start (npm) = 0.0.4, fixed in 0.0.8 ; @tanstack/history (npm) = 1.161.9, fixed in 1.161.13 . Check your lockfile, including transitive dependencies.
- Editorial verdict: Check exposure. Mini Shai-Hulud: TanStack npm Worm With Valid Provenance — If a lockfile picked up one of the bad TanStack Router/Start, Mistral or OpenSearch versions in mid-May 2026, treat that host as fully compromised and disable the dead-man's switch before rotating anything; everyone else can confirm and move on.

## What it is

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 pullrequesttarget "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.

## Affected packages

- npm `@tanstack/arktype-adapter` = 1.166.12 → fixed: 1.166.16
- npm `@tanstack/eslint-plugin-router` = 1.161.9 → fixed: 1.161.13
- npm `@tanstack/eslint-plugin-start` = 0.0.4 → fixed: 0.0.8
- npm `@tanstack/history` = 1.161.9 → fixed: 1.161.13
- npm `@tanstack/nitro-v2-vite-plugin` = 1.154.12 → fixed: 1.154.16
- npm `@tanstack/react-router` = 1.169.5 → fixed: 1.169.9
- npm `@tanstack/react-router-devtools` = 1.166.16 → fixed: 1.166.20
- npm `@tanstack/react-router-ssr-query` = 1.166.15 → fixed: 1.166.19
- npm `@tanstack/react-start` = 1.167.68 → fixed: 1.167.72
- npm `@tanstack/react-start-client` = 1.166.51 → fixed: 1.166.55
- npm `@tanstack/react-start-rsc` = 0.0.47 → fixed: 0.0.51
- npm `@tanstack/react-start-server` = 1.166.55 → fixed: 1.166.59
- npm `@tanstack/router-cli` = 1.166.46 → fixed: 1.166.50
- npm `@tanstack/router-core` = 1.169.5 → fixed: 1.169.9
- npm `@tanstack/router-devtools` = 1.166.16 → fixed: 1.166.20
- npm `@tanstack/router-devtools-core` = 1.167.6 → fixed: 1.167.10
- npm `@tanstack/router-generator` = 1.166.45 → fixed: 1.166.49
- npm `@tanstack/router-plugin` = 1.167.38 → fixed: 1.167.42
- npm `@tanstack/router-ssr-query-core` = 1.168.3 → fixed: 1.168.7
- npm `@tanstack/router-utils` = 1.161.11 → fixed: 1.161.15
- npm `@tanstack/router-vite-plugin` = 1.166.53 → fixed: 1.166.57
- npm `@tanstack/solid-router` = 1.169.5 → fixed: 1.169.9
- npm `@tanstack/solid-router-devtools` = 1.166.16 → fixed: 1.166.20
- npm `@tanstack/solid-router-ssr-query` = 1.166.15 → fixed: 1.166.19
- npm `@tanstack/solid-start` = 1.167.65 → fixed: 1.167.69
- npm `@tanstack/solid-start-client` = 1.166.50 → fixed: 1.166.54
- npm `@tanstack/solid-start-server` = 1.166.54 → fixed: 1.166.58
- npm `@tanstack/start-client-core` = 1.168.5 → fixed: 1.168.9
- npm `@tanstack/start-fn-stubs` = 1.161.9 → fixed: 1.161.13
- npm `@tanstack/start-plugin-core` = 1.169.23 → fixed: 1.169.27
- npm `@tanstack/start-server-core` = 1.167.33 → fixed: 1.167.37
- npm `@tanstack/start-static-server-functions` = 1.166.44 → fixed: 1.166.48
- npm `@tanstack/start-storage-context` = 1.166.38 → fixed: 1.166.42
- npm `@tanstack/valibot-adapter` = 1.166.12 → fixed: 1.166.16
- npm `@tanstack/virtual-file-routes` = 1.161.10 → fixed: 1.161.14
- npm `@tanstack/vue-router` = 1.169.5 → fixed: 1.169.9
- npm `@tanstack/vue-router-devtools` = 1.166.16 → fixed: 1.166.20
- npm `@tanstack/vue-router-ssr-query` = 1.166.15 → fixed: 1.166.19
- npm `@tanstack/vue-start` = 1.167.61 → fixed: 1.167.65
- npm `@tanstack/vue-start-client` = 1.166.46 → fixed: 1.166.50
- npm `@tanstack/vue-start-server` = 1.166.50 → fixed: 1.166.54
- npm `@tanstack/zod-adapter` = 1.166.12 → fixed: 1.166.16
- npm `@tanstack/arktype-adapter` = 1.166.15 → fixed: 1.166.16
- npm `@tanstack/eslint-plugin-router` = 1.161.12 → fixed: 1.161.13
- npm `@tanstack/eslint-plugin-start` = 0.0.7 → fixed: 0.0.8
- npm `@tanstack/history` = 1.161.12 → fixed: 1.161.13
- npm `@tanstack/nitro-v2-vite-plugin` = 1.154.15 → fixed: 1.154.16
- npm `@tanstack/react-router` = 1.169.8 → fixed: 1.169.9
- npm `@tanstack/react-router-devtools` = 1.166.19 → fixed: 1.166.20
- npm `@tanstack/react-router-ssr-query` = 1.166.18 → fixed: 1.166.19
- npm `@tanstack/react-start` = 1.167.71 → fixed: 1.167.72
- npm `@tanstack/react-start-client` = 1.166.54 → fixed: 1.166.55
- npm `@tanstack/react-start-rsc` = 0.0.50 → fixed: 0.0.51
- npm `@tanstack/react-start-server` = 1.166.58 → fixed: 1.166.59
- npm `@tanstack/router-cli` = 1.166.49 → fixed: 1.166.50
- npm `@tanstack/router-core` = 1.169.8 → fixed: 1.169.9
- npm `@tanstack/router-devtools` = 1.166.19 → fixed: 1.166.20
- npm `@tanstack/router-devtools-core` = 1.167.9 → fixed: 1.167.10
- npm `@tanstack/router-generator` = 1.166.48 → fixed: 1.166.49
- npm `@tanstack/router-plugin` = 1.167.41 → fixed: 1.167.42
- npm `@tanstack/router-ssr-query-core` = 1.168.6 → fixed: 1.168.7
- npm `@tanstack/router-utils` = 1.161.14 → fixed: 1.161.15
- npm `@tanstack/router-vite-plugin` = 1.166.56 → fixed: 1.166.57
- npm `@tanstack/solid-router` = 1.169.8 → fixed: 1.169.9
- npm `@tanstack/solid-router-devtools` = 1.166.19 → fixed: 1.166.20
- npm `@tanstack/solid-router-ssr-query` = 1.166.18 → fixed: 1.166.19
- npm `@tanstack/solid-start` = 1.167.68 → fixed: 1.167.69
- npm `@tanstack/solid-start-client` = 1.166.53 → fixed: 1.166.54
- npm `@tanstack/solid-start-server` = 1.166.57 → fixed: 1.166.58
- npm `@tanstack/start-client-core` = 1.168.8 → fixed: 1.168.9
- npm `@tanstack/start-fn-stubs` = 1.161.12 → fixed: 1.161.13
- npm `@tanstack/start-plugin-core` = 1.169.26 → fixed: 1.169.27
- npm `@tanstack/start-server-core` = 1.167.36 → fixed: 1.167.37
- npm `@tanstack/start-static-server-functions` = 1.166.47 → fixed: 1.166.48
- npm `@tanstack/start-storage-context` = 1.166.41 → fixed: 1.166.42
- npm `@tanstack/valibot-adapter` = 1.166.15 → fixed: 1.166.16
- npm `@tanstack/virtual-file-routes` = 1.161.13 → fixed: 1.161.14
- npm `@tanstack/vue-router` = 1.169.8 → fixed: 1.169.9
- npm `@tanstack/vue-router-devtools` = 1.166.19 → fixed: 1.166.20
- npm `@tanstack/vue-router-ssr-query` = 1.166.18 → fixed: 1.166.19
- npm `@tanstack/vue-start` = 1.167.64 → fixed: 1.167.65
- npm `@tanstack/vue-start-client` = 1.166.49 → fixed: 1.166.50
- npm `@tanstack/vue-start-server` = 1.166.53 → fixed: 1.166.54
- npm `@tanstack/zod-adapter` = 1.166.15 → fixed: 1.166.16

## Affected products (CVE record)

- @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

## Severity

- GitHub_M CVSS 3.1: 9.6 `CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H`
- GitHub CVSS 3.1: 9.6 `CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H`

## Exploitation

- CISA KEV: added 2026-05-27; federal due date 2026-06-10. Known ransomware use: Known.
- 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.
- CISA SSVC assessment: exploitation active , automatable no , technical impact total .
- FIRST EPSS (model of 2026-10-21): 1.05% probability of exploitation activity in the next 30 days; percentile 64.

## Sources

- [Listed in CISA KEV notes (github.com)](https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx)
- [GitHub Advisory GHSA-g7cv-rxg3-hmpx](https://github.com/advisories/GHSA-g7cv-rxg3-hmpx)
- [CVE.org record CVE-2026-45321](https://www.cve.org/CVERecord?id=CVE-2026-45321)
- [NVD entry CVE-2026-45321](https://nvd.nist.gov/vuln/detail/CVE-2026-45321)
- [CISA Known Exploited Vulnerabilities catalog entry](https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-45321)
- [github.com](https://github.com/TanStack/router/issues/7383)
- [tanstack.com](https://tanstack.com/blog/npm-supply-chain-compromise-postmortem)
- [stepsecurity.io](https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem)
- [socket.dev](https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack)

---
Source page: https://erroneo.us/security/cve/CVE-2026-45321/ · Security Digest: https://erroneo.us/security/ · More: https://erroneo.us/llms.txt
