Skip to content
Actively exploitedCVSS 9.6 · CRITICAL

CVE-2026-45321

TanStack contains an unspecified vulnerability that allowed malicious versions of the product to be published to the npm registry to publish credential-stealing malware under a trusted identity.

View on NVD

Analysis

Varios paquetes del ecosistema @tanstack en npm fueron comprometidos para incluir malware diseñado para el robo de credenciales. El atacante aprovechó vulnerabilidades en GitHub Actions para suplantar la identidad oficial de la organización, por lo que esta vulnerabilidad está siendo explotada activamente como un ataque de cadena de suministro. Es imperativo revisar y rotar credenciales si utilizas estos paquetes en tus proyectos de frontend o backend.

Relevant roles

FrontendJavascriptTypescriptReactVueBackend

Severity

Score: 9.6(CRITICAL)
Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
AV: NETWORK
AC: LOW
PR: NONE
UI: REQUIRED
S: CHANGED
C: HIGH
I: HIGH
A: HIGH
Weakness (CWE): CWE-506

CISA KEV

Added to KEV: 2026-05-27
Federal patch deadline: 2026-06-10
Known ransomware use: Known
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.

EPSS

Probability of exploitation (next 30 days): 0.1705 (17.1%)
Percentile: 95.1%
EPSS: 2026-06-10

Affects

tanstack:tanstack\/arktype-adaptertanstack:tanstack\/eslint-plugin-routertanstack:tanstack\/eslint-plugin-starttanstack:tanstack\/historytanstack:tanstack\/nitro-v2-vite-plugintanstack:tanstack\/react-routertanstack:tanstack\/react-router-devtoolstanstack:tanstack\/react-router-ssr-querytanstack:tanstack\/react-starttanstack:tanstack\/react-start-clienttanstack:tanstack\/react-start-rsctanstack:tanstack\/react-start-servertanstack:tanstack\/router-clitanstack:tanstack\/router-coretanstack:tanstack\/router-devtoolstanstack:tanstack\/router-devtools-coretanstack:tanstack\/router-generatortanstack:tanstack\/router-plugintanstack:tanstack\/router-ssr-query-coretanstack:tanstack\/router-utilstanstack:tanstack\/router-vite-plugintanstack:tanstack\/solid-routertanstack:tanstack\/solid-router-devtoolstanstack:tanstack\/solid-router-ssr-querytanstack:tanstack\/solid-starttanstack:tanstack\/solid-start-clienttanstack:tanstack\/solid-start-servertanstack:tanstack\/start-client-coretanstack:tanstack\/start-fn-stubstanstack:tanstack\/start-plugin-coretanstack:tanstack\/start-server-coretanstack:tanstack\/start-static-server-functionstanstack:tanstack\/start-storage-contexttanstack:tanstack\/valibot-adaptertanstack:tanstack\/virtual-file-routestanstack:tanstack\/vue-routertanstack:tanstack\/vue-router-devtoolstanstack:tanstack\/vue-router-ssr-querytanstack:tanstack\/vue-starttanstack:tanstack\/vue-start-clienttanstack:tanstack\/vue-start-servertanstack:tanstack\/zod-adaptermistral:mistralaimistral:mistralai\/mistralaimistral:mistralai\/mistralai-azuremistral:mistralai\/mistralai-gcpantoinebcx:ml-toolkit-tsantoinebcx:ml-toolkit-ts\/preprocessingantoinebcx:ml-toolkit-ts\/xgboostbeproduct:beproduct\/nestjs-authchristianalares:git-git-gitchristianalares:git_branch_selectorchristianalares:nextmove-mcpchristianalares:tolka\/climultiagentcognition:cmux-agent-mcpabhishake1:supersurkhet\/cliabhishake1:supersurkhet\/sdkabhishake1:taskflow-corp\/clikilbot:tallyui\/componentskilbot:tallyui\/connector-medusakilbot:tallyui\/connector-shopifykilbot:tallyui\/connector-vendurekilbot:tallyui\/connector-woocommercekilbot:tallyui\/corekilbot:tallyui\/databasekilbot:tallyui\/poskilbot:tallyui\/storage-sqlitekilbot:tallyui\/themematheuspergoli:draftauth\/clientmatheuspergoli:draftauth\/corematheuspergoli:draftlab\/authmatheuspergoli:draftlab\/auth-routermatheuspergoli:draftlab\/dbmatheuspergoli:simple_type-safe_actionsneilcochran:cross-stitchneilcochran:squawk\/airportsneilcochran:squawk\/airspaceneilcochran:squawk\/airspace-dataneilcochran:squawk\/airway-dataneilcochran:squawk\/airwaysneilcochran:squawk\/fix-dataneilcochran:squawk\/fixesneilcochran:squawk\/flight-mathneilcochran:squawk\/flightplanneilcochran:squawk\/geoneilcochran:squawk\/icao-registryneilcochran:squawk\/icao-registry-dataneilcochran:squawk\/mcpneilcochran:squawk\/navaid-dataneilcochran:squawk\/navaidsneilcochran:squawk\/notamsneilcochran:squawk\/procedure-dataneilcochran:squawk\/proceduresneilcochran:squawk\/typesneilcochran:squawk\/unitsneilcochran:squawk\/weatherneilcochran:ts-dnaneilcochran:wot-apiagentworkhq:agentwork-clidirigible:dirigible-ai\/sdkguardrailsai:guardrails_ailinuxfoundation:opensearchmesa:mesadev\/restmesa:mesadev\/saguaromesa:mesadev\/sdkuipath:uipath\/access-policy-sdkuipath:uipath\/access-policy-tooluipath:uipath\/admin-tooluipath:uipath\/agent-sdkuipath:uipath\/agent-tooluipath:uipath\/agent.sdkuipath:uipath\/aops-policy-tooluipath:uipath\/ap-chatuipath:uipath\/api-workflow-tooluipath:uipath\/apollo-coreuipath:uipath\/apollo-reactuipath:uipath\/apollo-winduipath:uipath\/authuipath:uipath\/case-tooluipath:uipath\/cliuipath:uipath\/codedagent-tooluipath:uipath\/codedagents-tooluipath:uipath\/codedapp-tooluipath:uipath\/commonuipath:uipath\/context-grounding-tooluipath:uipath\/data-fabric-tooluipath:uipath\/docsai-tooluipath:uipath\/filesystemuipath:uipath\/flow-tooluipath:uipath\/functions-tooluipath:uipath\/gov-tooluipath:uipath\/identity-tooluipath:uipath\/insights-sdkuipath:uipath\/insights-tooluipath:uipath\/integrationservice-sdkuipath:uipath\/integrationservice-tooluipath:uipath\/llmgw-tooluipath:uipath\/maestro-sdkuipath:uipath\/maestro-tooluipath:uipath\/orchestrator-tooluipath:uipath\/packager-tool-apiworkflowuipath:uipath\/packager-tool-bpmnuipath:uipath\/packager-tool-caseuipath:uipath\/packager-tool-connectoruipath:uipath\/packager-tool-flowuipath:uipath\/packager-tool-functionsuipath:uipath\/packager-tool-webappuipath:uipath\/packager-tool-workflowcompileruipath:uipath\/packager-tool-workflowcompiler-browseruipath:uipath\/platform-tooluipath:uipath\/project-packageruipath:uipath\/resource-tooluipath:uipath\/resourcecatalog-tooluipath:uipath\/resources-tooluipath:uipath\/robotuipath:uipath\/rpa-legacy-tooluipath:uipath\/rpa-tooluipath:uipath\/solution-packageruipath:uipath\/solution-tooluipath:uipath\/solutionpackager-sdkuipath:uipath\/solutionpackager-tool-coreuipath:uipath\/tasks-tooluipath:uipath\/telemetryuipath:uipath\/test-manager-tooluipath:uipath\/tool-workflowcompileruipath:uipath\/traces-tooluipath:uipath\/ui-widgets-multi-file-uploaduipath:uipath\/uipath-python-bridgeuipath:uipath\/vertical-solutions-tooluipath:uipath\/vssuipath:uipath\/widget.sdk

Technical 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.

Published: 5/12/2026, 1:16:46 AM
Last modified: 5/29/2026, 7:41:37 PM

References

HomeEventsBlogResourcesTeam