Vulnerabilities in pkg:npm/@tanstack/router-cli

PACKAGE
Advisory Identifier: GHSA-g7cv-rxg3-hmpx
Advisory Summary

CVE-2026-45321 is a CRITICAL (CVSS 9.6) malware vulnerability (CWE-506: Embedded Malicious Code) affecting @tanstack/arktype adapter libraries in the npm ecosystem. The issue involves malware in @tanstack/* packages exfiltrates cloud credentials, github tokens, and ssh keys. Remediation is available by upgrading affected packages to version 1.166.16, 1.161.13, 0.0.8, 1.154.16, 1.166.50, 1.169.9, 1.166.20, 1.166.19, 1.167.72, 1.166.55, 0.0.51, 1.166.59, 1.167.10, 1.166.49, 1.167.42, 1.168.7, 1.161.15, 1.166.57, 1.167.69, 1.166.54, 1.166.58, 1.168.9, 1.169.27, 1.167.37, 1.166.48, 1.166.42, 1.161.14, 1.167.65.

1 Known Advisory Record(s)
Package Vulnerability Intelligence

pkg:npm/@tanstack/router-cli

1 Known Advisory Record(s)

Vulnerability advisories affecting package pkg:npm/@tanstack/router-cli. Select an advisory below to view technical details or fixes.

Advisory ID CVE / NVD Severity Summary
GHSA-g7cv-rxg3-hmpx CVE-2026-45321 CRITICAL Malware in @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys

CVE-2026-45321 at a Glance

CVE Identifier CVE-2026-45321
GHSA Identifier GHSA-g7cv-rxg3-hmpx
Severity CRITICAL
CVSS v3.1 Base Score 9.6
CWE Classification CWE-506: Embedded Malicious Code
Affected Product @tanstack/arktype adapter
Package Ecosystem npm
Published Date
Last Updated

Security Impact

CVSS: 9.6

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required None (PR:N)
User Interaction Required (UI:R)
Scope Changed (S:C)
Confidentiality High (C:H)
Integrity High (I:H)
Availability High (A:H)

How to Fix CVE-2026-45321

To remediate this vulnerability, upgrade all affected @tanstack/arktype adapter dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

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

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

npm ls @tanstack/arktype-adapter

How to Check if You Are Affected

To determine whether your Node.js application is affected by CVE-2026-45321, inspect your project dependencies using npm:

npm ls @tanstack/arktype-adapter

Analyze the terminal output to locate any version of @tanstack/arktype adapter in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.166.16), your application is affected.

Note: The npm ls @tanstack/arktype-adapter command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-506: Embedded Malicious Code, where the product contains code that appears to be malicious in nature. In @tanstack/arktype adapter, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

## Summary 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. ## Impact A user installing any affected version executes a payload (~2.3 MB obfuscated `router_init.js`) at install time that: - Harvests credentials from common locations: - AWS instance metadata (IMDS) and Secrets Manager - GCP metadata service - Kubernetes service-account tokens - HashiCorp Vault tokens - `~/.npmrc` (npm tokens) - GitHub tokens (env vars, `gh` CLI config, `.git-credentials`) - SSH private keys (`~/.ssh/`) - Exfiltrates harvested data over the Session/Oxen messenger file-upload network (`filev2.getsession.org`, `seed{1,2,3}.getsession.org`). This is end-to-end encrypted with no attacker-controlled C2, so blocking by IP or domain is the only network mitigation. - Enumerates packages that the victim maintains via `registry.npmjs.org/-/v1/search?text=maintainer:<user>` and republishes them with the same injection, propagating the compromise across npm. Any developer or CI environment that ran `npm install`, `pnpm install`, or `yarn install` against an affected version on 2026-05-11 should be considered compromised. All credentials accessible to the install process should be rotated immediately. Cloud audit logs should be reviewed for activity originating from the affected hosts during and after the install window. ## Detection Inspect the published manifest of any pinned `@tanstack/*` version. Malicious manifests contain this exact `optionalDependencies` entry: ```json "optionalDependencies": { "@tanstack/setup": "github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c" } ``` To check a version without running install scripts: ```bash npm pack @tanstack/<name>@<version> # downloads tarball; does NOT execute lifecycle scripts tar -xzf *.tgz grep -A3 optionalDependencies package/package.json ls -la package/router_init.js # malicious payload, ~2.3 MB, present at package root ``` The payload file `router_init.js` is approximately 2.3 MB of obfuscated JavaScript. It is placed at the tarball root and is intentionally not declared in the package's `"files"` array, so it does not appear in the package's documented contents. ## Mechanism `@tanstack/setup` is not a real package on the npm registry. The `github:tanstack/router#79ac49ee...` specifier resolves to an orphan commit pushed to a fork in the `tanstack/router` GitHub fork network. GitHub serves commits across the entire fork network for git-URL dependencies, so the attacker did not require write access to `TanStack/router` itself — only the ability to fork and push to their own fork. When npm processes the optional dependency, it: 1. Fetches the orphan commit from the fork network. 2. Installs the commit's declared dependencies (which include a real `bun` binary). 3. Runs the commit's `prepare` lifecycle script: `bun run tanstack_runner.js && exit 1`. The trailing `exit 1` causes the optional install to fail, after which npm silently discards it — leaving no `node_modules` trace. 4. The `tanstack_runner.js` script in turn executes `router_init.js` from the host package's tarball. ## Patches Affected versions are being deprecated on npm with a `SECURITY:` notice. Where npm policy allows (no existing third-party dependents), affected versions are also being unpublished. The npm security team has been engaged to pull tarballs server-side for versions that cannot be unpublished. Clean follow-up releases are being prepared. Update to the patched version listed in the affected-products table for each package, then reinstall from a clean lockfile. ## Workarounds Until clean follow-up releases are available: - Pin every `@tanstack/*` dependency to a known-good version published before 2026-05-11 19:00 UTC. The last known-good version for most affected packages was published on 2026-03-15. - Delete `node_modules` and the lockfile, then reinstall to ensure no transitive dependency resolves to a malicious version. - Configure npm to skip lifecycle scripts on install (`npm config set ignore-scripts true`) as a temporary defense-in-depth measure. - For CI, audit any pipeline that ran `install` against `@tanstack/*` between 19:20 and 19:30 UTC on 2026-05-11. Treat the runner as compromised and rotate any secrets it had access to. ## Indicators of compromise | Indicator | Value | |---|---| | Malicious git ref | `github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c` | | Fictitious package name | `@tanstack/setup` | | Payload filename | `router_init.js` (~2.3 MB, package root, undeclared in `files`) | | Helper filename in orphan commit | `tanstack_runner.js` | | Exfiltration network | `filev2.getsession.org`, `seed1.getsession.org`, `seed2.getsession.org`, `seed3.getsession.org` | | Second-stage payload URLs | `https://litter.catbox.moe/h8nc9u.js`, `https://litter.catbox.moe/7rrc6l.mjs` | | Poisoned cache key | `Linux-pnpm-store-6f9233a50def742c09fde54f56553d6b449a535adf87d4083690539f49ae4da11` | | Publish window (UTC) | 2026-05-11 19:20 — 19:26 | | Publish mechanism | GitHub Actions OIDC trusted publisher (`oidc:db7d6f54-05d5-412b-8a10-e7a8398b303e`) | | Workflow runs | https://github.com/TanStack/router/actions/runs/25613093674 (attempt 4), https://github.com/TanStack/router/actions/runs/25691781302 | | Attacker GitHub accounts | `zblgg` (id 127806521), `voicproducoes` (id 269549300) | | Attacker fork (renamed to evade detection) | https://github.com/zblgg/configuration | ## Credits - The security researcher who initially disclosed the vulnerability publicly with detailed analysis at https://github.com/TanStack/router/issues/7383 ## References - Public incident tracking issue: https://github.com/TanStack/router/issues/7383 - Related research: - Adnan Khan, "The Monsters in Your Build Cache: GitHub Actions Cache Poisoning" (May 2024) - GitHub Security Lab, "Keeping your GitHub Actions and workflows secure: Preventing Pwn Requests" - StepSecurity, "tj-actions/changed-files action is compromised" (March 2025) — the malicious payload reuses this incident's runner-memory extraction technique verbatim

CVE-2026-45321 Affected @tanstack/arktype adapter Versions

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

References

Frequently Asked Questions

What is CVE-2026-45321?
CVE-2026-45321 is a security vulnerability in @tanstack/arktype adapter involving Malware in @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys under CWE-506: Embedded Malicious Code.
Which @tanstack/arktype adapter versions are affected?
Affected versions include releases prior to 1.166.16, 1.161.13, 0.0.8, 1.154.16, 1.166.50, 1.169.9, 1.166.20, 1.166.19, 1.167.72, 1.166.55, 0.0.51, 1.166.59, 1.167.10, 1.166.49, 1.167.42, 1.168.7, 1.161.15, 1.166.57, 1.167.69, 1.166.54, 1.166.58, 1.168.9, 1.169.27, 1.167.37, 1.166.48, 1.166.42, 1.161.14, 1.167.65 across affected packages: @tanstack/arktype-adapter, @tanstack/eslint-plugin-router, @tanstack/eslint-plugin-start, @tanstack/history, @tanstack/nitro-v2-vite-plugin, @tanstack/router-cli, @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-core, @tanstack/router-devtools, @tanstack/router-devtools-core, @tanstack/router-generator, @tanstack/router-plugin, @tanstack/router-ssr-query-core, @tanstack/router-utils, @tanstack/router-vite-plugin, @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.
What version fixes CVE-2026-45321?
Upgrading to 1.166.16, 1.161.13, 0.0.8, 1.154.16, 1.166.50, 1.169.9, 1.166.20, 1.166.19, 1.167.72, 1.166.55, 0.0.51, 1.166.59, 1.167.10, 1.166.49, 1.167.42, 1.168.7, 1.161.15, 1.166.57, 1.167.69, 1.166.54, 1.166.58, 1.168.9, 1.169.27, 1.167.37, 1.166.48, 1.166.42, 1.161.14, 1.167.65 (or the latest patched release for your respective branch) resolves the vulnerability.
Is @tanstack/arktype-adapter affected?
Yes, @tanstack/arktype-adapter is affected in releases prior to 1.166.16. Upgrade your dependency to 1.166.16 or later.
Is @tanstack/eslint-plugin-router affected?
Yes, @tanstack/eslint-plugin-router is affected in releases prior to 1.161.13. Upgrade your dependency to 1.161.13 or later.
What is the CVSS score of CVE-2026-45321?
CVE-2026-45321 has a CVSS v3.1 base score of 9.6 (CRITICAL) with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H.
What CWE is associated with CVE-2026-45321?
CVE-2026-45321 is classified under CWE-506: Embedded Malicious Code (The product contains code that appears to be malicious in nature.).
How can I check npm dependencies for CVE-2026-45321?
Run the dependency tree command: 'npm ls @tanstack/arktype-adapter'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-g7cv-rxg3-hmpx",
  "modified" : "2026-06-08T23:53:09Z",
  "published" : "2026-05-12T00:12:49Z",
  "aliases" : [ "CVE-2026-45321" ],
  "summary" : "Malware in @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys",
  "details" : "## Summary\n\nOn 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.\n\nEach affected package received exactly two malicious versions, published a few minutes apart.\n\n## Impact\n\nA user installing any affected version executes a payload (~2.3 MB obfuscated `router_init.js`) at install time that:\n\n- Harvests credentials from common locations:\n  - AWS instance metadata (IMDS) and Secrets Manager\n  - GCP metadata service\n  - Kubernetes service-account tokens\n  - HashiCorp Vault tokens\n  - `~/.npmrc` (npm tokens)\n  - GitHub tokens (env vars, `gh` CLI config, `.git-credentials`)\n  - SSH private keys (`~/.ssh/`)\n- Exfiltrates harvested data over the Session/Oxen messenger file-upload network (`filev2.getsession.org`, `seed{1,2,3}.getsession.org`). This is end-to-end encrypted with no attacker-controlled C2, so blocking by IP or domain is the only network mitigation.\n- Enumerates packages that the victim maintains via `registry.npmjs.org/-/v1/search?text=maintainer:<user>` and republishes them with the same injection, propagating the compromise across npm.\n\nAny developer or CI environment that ran `npm install`, `pnpm install`, or `yarn install` against an affected version on 2026-05-11 should be considered compromised. All credentials accessible to the install process should be rotated immediately. Cloud audit logs should be reviewed for activity originating from the affected hosts during and after the install window.\n\n## Detection\n\nInspect the published manifest of any pinned `@tanstack/*` version. Malicious manifests contain this exact `optionalDependencies` entry:\n\n```json\n\"optionalDependencies\": {\n  \"@tanstack/setup\": \"github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c\"\n}\n```\n\nTo check a version without running install scripts:\n\n```bash\nnpm pack @tanstack/<name>@<version>   # downloads tarball; does NOT execute lifecycle scripts\ntar -xzf *.tgz\ngrep -A3 optionalDependencies package/package.json\nls -la package/router_init.js   # malicious payload, ~2.3 MB, present at package root\n```\n\nThe payload file `router_init.js` is approximately 2.3 MB of obfuscated JavaScript. It is placed at the tarball root and is intentionally not declared in the package's `\"files\"` array, so it does not appear in the package's documented contents.\n\n## Mechanism\n\n`@tanstack/setup` is not a real package on the npm registry. The `github:tanstack/router#79ac49ee...` specifier resolves to an orphan commit pushed to a fork in the `tanstack/router` GitHub fork network. GitHub serves commits across the entire fork network for git-URL dependencies, so the attacker did not require write access to `TanStack/router` itself — only the ability to fork and push to their own fork.\n\nWhen npm processes the optional dependency, it:\n\n1. Fetches the orphan commit from the fork network.\n2. Installs the commit's declared dependencies (which include a real `bun` binary).\n3. Runs the commit's `prepare` lifecycle script: `bun run tanstack_runner.js && exit 1`. The trailing `exit 1` causes the optional install to fail, after which npm silently discards it — leaving no `node_modules` trace.\n4. The `tanstack_runner.js` script in turn executes `router_init.js` from the host package's tarball.\n\n## Patches\n\nAffected versions are being deprecated on npm with a `SECURITY:` notice. Where npm policy allows (no existing third-party dependents), affected versions are also being unpublished. The npm security team has been engaged to pull tarballs server-side for versions that cannot be unpublished.\n\nClean follow-up releases are being prepared. Update to the patched version listed in the affected-products table for each package, then reinstall from a clean lockfile.\n\n## Workarounds\n\nUntil clean follow-up releases are available:\n\n- Pin every `@tanstack/*` dependency to a known-good version published before 2026-05-11 19:00 UTC. The last known-good version for most affected packages was published on 2026-03-15.\n- Delete `node_modules` and the lockfile, then reinstall to ensure no transitive dependency resolves to a malicious version.\n- Configure npm to skip lifecycle scripts on install (`npm config set ignore-scripts true`) as a temporary defense-in-depth measure.\n- For CI, audit any pipeline that ran `install` against `@tanstack/*` between 19:20 and 19:30 UTC on 2026-05-11. Treat the runner as compromised and rotate any secrets it had access to.\n\n## Indicators of compromise\n\n| Indicator | Value |\n|---|---|\n| Malicious git ref | `github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c` |\n| Fictitious package name | `@tanstack/setup` |\n| Payload filename | `router_init.js` (~2.3 MB, package root, undeclared in `files`) |\n| Helper filename in orphan commit | `tanstack_runner.js` |\n| Exfiltration network | `filev2.getsession.org`, `seed1.getsession.org`, `seed2.getsession.org`, `seed3.getsession.org` |\n| Second-stage payload URLs | `https://litter.catbox.moe/h8nc9u.js`, `https://litter.catbox.moe/7rrc6l.mjs` |\n| Poisoned cache key | `Linux-pnpm-store-6f9233a50def742c09fde54f56553d6b449a535adf87d4083690539f49ae4da11` |\n| Publish window (UTC) | 2026-05-11 19:20 — 19:26 |\n| Publish mechanism | GitHub Actions OIDC trusted publisher (`oidc:db7d6f54-05d5-412b-8a10-e7a8398b303e`) |\n| Workflow runs | https://github.com/TanStack/router/actions/runs/25613093674 (attempt 4), https://github.com/TanStack/router/actions/runs/25691781302 |\n| Attacker GitHub accounts | `zblgg` (id 127806521), `voicproducoes` (id 269549300) |\n| Attacker fork (renamed to evade detection) | https://github.com/zblgg/configuration |\n\n## Credits\n\n- The security researcher who initially disclosed the vulnerability publicly with detailed analysis at https://github.com/TanStack/router/issues/7383\n\n## References\n\n- Public incident tracking issue: https://github.com/TanStack/router/issues/7383\n- Related research:\n  - Adnan Khan, \"The Monsters in Your Build Cache: GitHub Actions Cache Poisoning\" (May 2024)\n  - GitHub Security Lab, \"Keeping your GitHub Actions and workflows secure: Preventing Pwn Requests\"\n  - StepSecurity, \"tj-actions/changed-files action is compromised\" (March 2025) — the malicious payload reuses this incident's runner-memory extraction technique verbatim",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/arktype-adapter"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.12"
      }, {
        "fixed" : "1.166.16"
      } ]
    } ],
    "versions" : [ "1.166.12" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/eslint-plugin-router"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.161.9"
      }, {
        "fixed" : "1.161.13"
      } ]
    } ],
    "versions" : [ "1.161.9" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/eslint-plugin-start"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0.0.4"
      }, {
        "fixed" : "0.0.8"
      } ]
    } ],
    "versions" : [ "0.0.4" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/history"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.161.9"
      }, {
        "fixed" : "1.161.13"
      } ]
    } ],
    "versions" : [ "1.161.9" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/nitro-v2-vite-plugin"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.154.12"
      }, {
        "fixed" : "1.154.16"
      } ]
    } ],
    "versions" : [ "1.154.12" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-router"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.169.5"
      }, {
        "fixed" : "1.169.9"
      } ]
    } ],
    "versions" : [ "1.169.5" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-router-devtools"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.16"
      }, {
        "fixed" : "1.166.20"
      } ]
    } ],
    "versions" : [ "1.166.16" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-router-ssr-query"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.15"
      }, {
        "fixed" : "1.166.19"
      } ]
    } ],
    "versions" : [ "1.166.15" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-start"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.68"
      }, {
        "fixed" : "1.167.72"
      } ]
    } ],
    "versions" : [ "1.167.68" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-start-client"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.51"
      }, {
        "fixed" : "1.166.55"
      } ]
    } ],
    "versions" : [ "1.166.51" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-start-rsc"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0.0.47"
      }, {
        "fixed" : "0.0.51"
      } ]
    } ],
    "versions" : [ "0.0.47" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-start-server"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.55"
      }, {
        "fixed" : "1.166.59"
      } ]
    } ],
    "versions" : [ "1.166.55" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-cli"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.46"
      }, {
        "fixed" : "1.166.50"
      } ]
    } ],
    "versions" : [ "1.166.46" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.169.5"
      }, {
        "fixed" : "1.169.9"
      } ]
    } ],
    "versions" : [ "1.169.5" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-devtools"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.16"
      }, {
        "fixed" : "1.166.20"
      } ]
    } ],
    "versions" : [ "1.166.16" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-devtools-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.6"
      }, {
        "fixed" : "1.167.10"
      } ]
    } ],
    "versions" : [ "1.167.6" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-generator"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.45"
      }, {
        "fixed" : "1.166.49"
      } ]
    } ],
    "versions" : [ "1.166.45" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-plugin"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.38"
      }, {
        "fixed" : "1.167.42"
      } ]
    } ],
    "versions" : [ "1.167.38" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-ssr-query-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.168.3"
      }, {
        "fixed" : "1.168.7"
      } ]
    } ],
    "versions" : [ "1.168.3" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-utils"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.161.11"
      }, {
        "fixed" : "1.161.15"
      } ]
    } ],
    "versions" : [ "1.161.11" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-vite-plugin"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.53"
      }, {
        "fixed" : "1.166.57"
      } ]
    } ],
    "versions" : [ "1.166.53" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-router"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.169.5"
      }, {
        "fixed" : "1.169.9"
      } ]
    } ],
    "versions" : [ "1.169.5" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-router-devtools"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.16"
      }, {
        "fixed" : "1.166.20"
      } ]
    } ],
    "versions" : [ "1.166.16" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-router-ssr-query"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.15"
      }, {
        "fixed" : "1.166.19"
      } ]
    } ],
    "versions" : [ "1.166.15" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-start"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.65"
      }, {
        "fixed" : "1.167.69"
      } ]
    } ],
    "versions" : [ "1.167.65" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-start-client"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.50"
      }, {
        "fixed" : "1.166.54"
      } ]
    } ],
    "versions" : [ "1.166.50" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-start-server"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.54"
      }, {
        "fixed" : "1.166.58"
      } ]
    } ],
    "versions" : [ "1.166.54" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-client-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.168.5"
      }, {
        "fixed" : "1.168.9"
      } ]
    } ],
    "versions" : [ "1.168.5" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-fn-stubs"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.161.9"
      }, {
        "fixed" : "1.161.13"
      } ]
    } ],
    "versions" : [ "1.161.9" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-plugin-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.169.23"
      }, {
        "fixed" : "1.169.27"
      } ]
    } ],
    "versions" : [ "1.169.23" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-server-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.33"
      }, {
        "fixed" : "1.167.37"
      } ]
    } ],
    "versions" : [ "1.167.33" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-static-server-functions"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.44"
      }, {
        "fixed" : "1.166.48"
      } ]
    } ],
    "versions" : [ "1.166.44" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-storage-context"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.38"
      }, {
        "fixed" : "1.166.42"
      } ]
    } ],
    "versions" : [ "1.166.38" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/valibot-adapter"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.12"
      }, {
        "fixed" : "1.166.16"
      } ]
    } ],
    "versions" : [ "1.166.12" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/virtual-file-routes"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.161.10"
      }, {
        "fixed" : "1.161.14"
      } ]
    } ],
    "versions" : [ "1.161.10" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-router"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.169.5"
      }, {
        "fixed" : "1.169.9"
      } ]
    } ],
    "versions" : [ "1.169.5" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-router-devtools"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.16"
      }, {
        "fixed" : "1.166.20"
      } ]
    } ],
    "versions" : [ "1.166.16" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-router-ssr-query"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.15"
      }, {
        "fixed" : "1.166.19"
      } ]
    } ],
    "versions" : [ "1.166.15" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-start"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.61"
      }, {
        "fixed" : "1.167.65"
      } ]
    } ],
    "versions" : [ "1.167.61" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-start-client"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.46"
      }, {
        "fixed" : "1.166.50"
      } ]
    } ],
    "versions" : [ "1.166.46" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-start-server"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.50"
      }, {
        "fixed" : "1.166.54"
      } ]
    } ],
    "versions" : [ "1.166.50" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/zod-adapter"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.12"
      }, {
        "fixed" : "1.166.16"
      } ]
    } ],
    "versions" : [ "1.166.12" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/arktype-adapter"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.15"
      }, {
        "fixed" : "1.166.16"
      } ]
    } ],
    "versions" : [ "1.166.15" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/eslint-plugin-router"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.161.12"
      }, {
        "fixed" : "1.161.13"
      } ]
    } ],
    "versions" : [ "1.161.12" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/eslint-plugin-start"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0.0.7"
      }, {
        "fixed" : "0.0.8"
      } ]
    } ],
    "versions" : [ "0.0.7" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/history"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.161.12"
      }, {
        "fixed" : "1.161.13"
      } ]
    } ],
    "versions" : [ "1.161.12" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/nitro-v2-vite-plugin"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.154.15"
      }, {
        "fixed" : "1.154.16"
      } ]
    } ],
    "versions" : [ "1.154.15" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-router"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.169.8"
      }, {
        "fixed" : "1.169.9"
      } ]
    } ],
    "versions" : [ "1.169.8" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-router-devtools"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.19"
      }, {
        "fixed" : "1.166.20"
      } ]
    } ],
    "versions" : [ "1.166.19" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-router-ssr-query"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.18"
      }, {
        "fixed" : "1.166.19"
      } ]
    } ],
    "versions" : [ "1.166.18" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-start"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.71"
      }, {
        "fixed" : "1.167.72"
      } ]
    } ],
    "versions" : [ "1.167.71" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-start-client"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.54"
      }, {
        "fixed" : "1.166.55"
      } ]
    } ],
    "versions" : [ "1.166.54" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-start-rsc"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0.0.50"
      }, {
        "fixed" : "0.0.51"
      } ]
    } ],
    "versions" : [ "0.0.50" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/react-start-server"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.58"
      }, {
        "fixed" : "1.166.59"
      } ]
    } ],
    "versions" : [ "1.166.58" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-cli"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.49"
      }, {
        "fixed" : "1.166.50"
      } ]
    } ],
    "versions" : [ "1.166.49" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.169.8"
      }, {
        "fixed" : "1.169.9"
      } ]
    } ],
    "versions" : [ "1.169.8" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-devtools"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.19"
      }, {
        "fixed" : "1.166.20"
      } ]
    } ],
    "versions" : [ "1.166.19" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-devtools-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.9"
      }, {
        "fixed" : "1.167.10"
      } ]
    } ],
    "versions" : [ "1.167.9" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-generator"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.48"
      }, {
        "fixed" : "1.166.49"
      } ]
    } ],
    "versions" : [ "1.166.48" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-plugin"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.41"
      }, {
        "fixed" : "1.167.42"
      } ]
    } ],
    "versions" : [ "1.167.41" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-ssr-query-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.168.6"
      }, {
        "fixed" : "1.168.7"
      } ]
    } ],
    "versions" : [ "1.168.6" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-utils"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.161.14"
      }, {
        "fixed" : "1.161.15"
      } ]
    } ],
    "versions" : [ "1.161.14" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/router-vite-plugin"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.56"
      }, {
        "fixed" : "1.166.57"
      } ]
    } ],
    "versions" : [ "1.166.56" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-router"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.169.8"
      }, {
        "fixed" : "1.169.9"
      } ]
    } ],
    "versions" : [ "1.169.8" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-router-devtools"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.19"
      }, {
        "fixed" : "1.166.20"
      } ]
    } ],
    "versions" : [ "1.166.19" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-router-ssr-query"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.18"
      }, {
        "fixed" : "1.166.19"
      } ]
    } ],
    "versions" : [ "1.166.18" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-start"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.68"
      }, {
        "fixed" : "1.167.69"
      } ]
    } ],
    "versions" : [ "1.167.68" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-start-client"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.53"
      }, {
        "fixed" : "1.166.54"
      } ]
    } ],
    "versions" : [ "1.166.53" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/solid-start-server"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.57"
      }, {
        "fixed" : "1.166.58"
      } ]
    } ],
    "versions" : [ "1.166.57" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-client-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.168.8"
      }, {
        "fixed" : "1.168.9"
      } ]
    } ],
    "versions" : [ "1.168.8" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-fn-stubs"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.161.12"
      }, {
        "fixed" : "1.161.13"
      } ]
    } ],
    "versions" : [ "1.161.12" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-plugin-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.169.26"
      }, {
        "fixed" : "1.169.27"
      } ]
    } ],
    "versions" : [ "1.169.26" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-server-core"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.36"
      }, {
        "fixed" : "1.167.37"
      } ]
    } ],
    "versions" : [ "1.167.36" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-static-server-functions"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.47"
      }, {
        "fixed" : "1.166.48"
      } ]
    } ],
    "versions" : [ "1.166.47" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/start-storage-context"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.41"
      }, {
        "fixed" : "1.166.42"
      } ]
    } ],
    "versions" : [ "1.166.41" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/valibot-adapter"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.15"
      }, {
        "fixed" : "1.166.16"
      } ]
    } ],
    "versions" : [ "1.166.15" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/virtual-file-routes"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.161.13"
      }, {
        "fixed" : "1.161.14"
      } ]
    } ],
    "versions" : [ "1.161.13" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-router"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.169.8"
      }, {
        "fixed" : "1.169.9"
      } ]
    } ],
    "versions" : [ "1.169.8" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-router-devtools"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.19"
      }, {
        "fixed" : "1.166.20"
      } ]
    } ],
    "versions" : [ "1.166.19" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-router-ssr-query"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.18"
      }, {
        "fixed" : "1.166.19"
      } ]
    } ],
    "versions" : [ "1.166.18" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-start"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.167.64"
      }, {
        "fixed" : "1.167.65"
      } ]
    } ],
    "versions" : [ "1.167.64" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-start-client"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.49"
      }, {
        "fixed" : "1.166.50"
      } ]
    } ],
    "versions" : [ "1.166.49" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/vue-start-server"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.53"
      }, {
        "fixed" : "1.166.54"
      } ]
    } ],
    "versions" : [ "1.166.53" ]
  }, {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@tanstack/zod-adapter"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "1.166.15"
      }, {
        "fixed" : "1.166.16"
      } ]
    } ],
    "versions" : [ "1.166.15" ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-45321"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/TanStack/router/issues/7383"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/TanStack/router"
  }, {
    "type" : "WEB",
    "url" : "https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack"
  }, {
    "type" : "WEB",
    "url" : "https://tanstack.com/blog/npm-supply-chain-compromise-postmortem"
  }, {
    "type" : "WEB",
    "url" : "https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-45321"
  }, {
    "type" : "WEB",
    "url" : "https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-506" ],
    "severity" : "CRITICAL",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-05-12T00:12:49Z",
    "nvd_published_at" : "2026-05-12T01:16:46Z"
  }
}