CVE-2026-45321

Aliases:GHSA-g7cv-rxg3-hmpx
Analyzed
Published: 12 May 2026, 00:12
Last modified:28 May 2026, 03:55

Vulnerability Summary

Overall Risk (default)
high
70/100
CVSS Score
9.6 CRITICAL
v3.1 (cve.org)
EPSS Score
15.09% MEDIUM
15% probability +15.06%
KEV
Listed
CISA
1 listing
Ransomware
No reports
Public exploits
2 found
Dark Web
Not detected

Timeline

12 May 2026, 00:12
Published
Vulnerability first disclosed
27 May 2026, 00:00
Added to CISA KEV
TanStack Unspecified Vulnerability
28 May 2026, 03:55
Last Modified
Vulnerability information updated
10 Jun 2026, 00:00
CISA Remediation Due
Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.

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.

CVSS Metrics

  • v3.1CRITICALScore: 9.6CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H

EPSS Trends

Current EPSS score: 15.09% Percentile: 95%

Techniques & Countermeasures

  • CWE-506Embedded Malicious Code

    The product contains code that appears to be malicious in nature.

Affected Systems

  • @tanstackarktype-adapter

    ≥ 1.166.12, < 1.166.16 | ≥ 1.166.15, < 1.166.16

  • @tanstackeslint-plugin-router

    ≥ 1.161.9, < 1.161.13 | ≥ 1.161.12, < 1.161.13

  • @tanstackeslint-plugin-start

    ≥ 0.0.4, < 0.0.8 | ≥ 0.0.7, < 0.0.8

  • @tanstackhistory

    ≥ 1.161.9, < 1.161.13 | ≥ 1.161.12, < 1.161.13

  • @tanstacknitro-v2-vite-plugin

    ≥ 1.154.12, < 1.154.16 | ≥ 1.154.15, < 1.154.16

  • @tanstackreact-router

    ≥ 1.169.5, < 1.169.9 | ≥ 1.169.8, < 1.169.9

  • @tanstackreact-router-devtools

    ≥ 1.166.16, < 1.166.20 | ≥ 1.166.19, < 1.166.20

  • @tanstackreact-router-ssr-query

    ≥ 1.166.15, < 1.166.19 | ≥ 1.166.18, < 1.166.19

  • @tanstackreact-start

    ≥ 1.167.68, < 1.167.72 | ≥ 1.167.71, < 1.167.72

  • @tanstackreact-start-client

    ≥ 1.166.51, < 1.166.55 | ≥ 1.166.54, < 1.166.55

  • @tanstackreact-start-rsc

    ≥ 0.0.47, < 0.0.51 | ≥ 0.0.50, < 0.0.51

  • @tanstackreact-start-server

    ≥ 1.166.55, < 1.166.59 | ≥ 1.166.58, < 1.166.59

  • @tanstackrouter-cli

    ≥ 1.166.46, < 1.166.50 | ≥ 1.166.49, < 1.166.50

  • @tanstackrouter-core

    ≥ 1.169.5, < 1.169.9 | ≥ 1.169.8, < 1.169.9

  • @tanstackrouter-devtools

    ≥ 1.166.16, < 1.166.20 | ≥ 1.166.19, < 1.166.20

  • @tanstackrouter-devtools-core

    ≥ 1.167.6, < 1.167.10 | ≥ 1.167.9, < 1.167.10

  • @tanstackrouter-generator

    ≥ 1.166.45, < 1.166.49 | ≥ 1.166.48, < 1.166.49

  • @tanstackrouter-plugin

    ≥ 1.167.38, < 1.167.42 | ≥ 1.167.41, < 1.167.42

  • @tanstackrouter-ssr-query-core

    ≥ 1.168.3, < 1.168.7 | ≥ 1.168.6, < 1.168.7

  • @tanstackrouter-utils

    ≥ 1.161.11, < 1.161.15 | ≥ 1.161.14, < 1.161.15

  • @tanstackrouter-vite-plugin

    ≥ 1.166.53, < 1.166.57 | ≥ 1.166.56, < 1.166.57

  • @tanstacksolid-router

    ≥ 1.169.5, < 1.169.9 | ≥ 1.169.8, < 1.169.9

  • @tanstacksolid-router-devtools

    ≥ 1.166.16, < 1.166.20 | ≥ 1.166.19, < 1.166.20

  • @tanstacksolid-router-ssr-query

    ≥ 1.166.15, < 1.166.19 | ≥ 1.166.18, < 1.166.19

  • @tanstacksolid-start

    ≥ 1.167.65, < 1.167.69 | ≥ 1.167.68, < 1.167.69

  • @tanstacksolid-start-client

    ≥ 1.166.50, < 1.166.54 | ≥ 1.166.53, < 1.166.54

  • @tanstacksolid-start-server

    ≥ 1.166.54, < 1.166.58 | ≥ 1.166.57, < 1.166.58

  • @tanstackstart-client-core

    ≥ 1.168.5, < 1.168.9 | ≥ 1.168.8, < 1.168.9

  • @tanstackstart-fn-stubs

    ≥ 1.161.9, < 1.161.13 | ≥ 1.161.12, < 1.161.13

  • @tanstackstart-plugin-core

    ≥ 1.169.23, < 1.169.27 | ≥ 1.169.26, < 1.169.27

  • @tanstackstart-server-core

    ≥ 1.167.33, < 1.167.37 | ≥ 1.167.36, < 1.167.37

  • @tanstackstart-static-server-functions

    ≥ 1.166.44, < 1.166.48 | ≥ 1.166.47, < 1.166.48

  • @tanstackstart-storage-context

    ≥ 1.166.38, < 1.166.42 | ≥ 1.166.41, < 1.166.42

  • @tanstackvalibot-adapter

    ≥ 1.166.12, < 1.166.16 | ≥ 1.166.15, < 1.166.16

  • @tanstackvirtual-file-routes

    ≥ 1.161.10, < 1.161.14 | ≥ 1.161.13, < 1.161.14

  • @tanstackvue-router

    ≥ 1.169.5, < 1.169.9 | ≥ 1.169.8, < 1.169.9

  • @tanstackvue-router-devtools

    ≥ 1.166.16, < 1.166.20 | ≥ 1.166.19, < 1.166.20

  • @tanstackvue-router-ssr-query

    ≥ 1.166.15, < 1.166.19 | ≥ 1.166.18, < 1.166.19

  • @tanstackvue-start

    ≥ 1.167.61, < 1.167.65 | ≥ 1.167.64, < 1.167.65

  • @tanstackvue-start-client

    ≥ 1.166.46, < 1.166.50 | ≥ 1.166.49, < 1.166.50

  • @tanstackvue-start-server

    ≥ 1.166.50, < 1.166.54 | ≥ 1.166.53, < 1.166.54

  • @tanstackzod-adapter

    ≥ 1.166.12, < 1.166.16 | ≥ 1.166.15, < 1.166.16

  • @tanstackarktype-adapter

    1.166.12 | 1.166.15

  • @tanstackeslint-plugin-router

    1.161.9 | 1.161.12

  • @tanstackeslint-plugin-start

    0.0.4 | 0.0.7

  • @tanstackhistory

    1.161.9 | 1.161.12

  • @tanstacknitro-v2-vite-plugin

    1.154.12 | 1.154.15

  • @tanstackouter-vite-plugin

    1.166.53 | 1.166.56

  • @tanstackreact-router

    1.169.5 | 1.169.8

  • @tanstackreact-router-devtools

    1.166.16 | 1.166.19

Showing first 50 affected entries in server-rendered view.

References (8)