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.
Ver en NVDAnálisis
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.
Roles relevantes
Severidad
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:HCWE-506CISA KEV
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
Afecta
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.sdkDescripción técnica
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.
Referencias
- https://github.com/TanStack/router/issues/7383
- https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx
- https://tanstack.com/blog/npm-supply-chain-compromise-postmortem
- https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-45321