Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Code review, malicious code detection
|
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 12, 2026
Credential-harvesting malware compromised 84 versions of 42 TanStack npm packages on 2026-05-11 via chained GitHub Actions exploitation. Attackers combined pull_request_target misconfiguration, Actions cache poisoning, and OIDC token memory extraction to publish malicious code under the legitimate TanStack identity. Installing any affected version executes a 2.3 MB obfuscated payload that exfiltrates AWS/GCP/Kubernetes credentials, npm tokens, GitHub secrets, SSH keys, and HashiCorp Vault tokens over encrypted Session/Oxen messenger infrastructure. The payload propagates by republishing victim-maintained packages with identical injection. Socket.dev and the TanStack team confirmed the incident via GHSA-g7cv-rxg3-hmpx. No EPSS or CISA KEV data available for this recent supply-chain attack. CVSS 9.6 reflects the cross-scope credential theft impact (S:C/C:H/I:H), though exploitation requires user-initiated package installation (UI:R).
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 84 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Know when Kubernetes gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
2DescriptionGitHub Advisory
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,
ghCLI 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:
"optionalDependencies": {
"@tanstack/setup": "github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c"
}To check a version without running install scripts:
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 rootThe 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:
- Fetches the orphan commit from the fork network.
- Installs the commit's declared dependencies (which include a real
bunbinary). - Runs the commit's
preparelifecycle script:bun run tanstack_runner.js && exit 1. The trailingexit 1causes the optional install to fail, after which npm silently discards it - leaving nonode_modulestrace. - The
tanstack_runner.jsscript in turn executesrouter_init.jsfrom 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_modulesand 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
installagainst@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
Articles & Coverage 1
Executive ViewAI
TanStack npm package supply-chain compromise (CVE-2026-45321) injected credential-harvesting malware into 84 versions across 42 packages, affecting any organization using these libraries in development or production environments. Installation of compromised versions executes obfuscated payload that exfiltrates AWS, GCP, Kubernetes, npm, GitHub, SSH, and Vault credentials, creating immediate risk of lateral movement, infrastructure takeover, and further supply-chain propagation. This represents a critical threat to development pipelines and runtime systems for any team with TanStack dependencies.
Within 24 hours: Identify all internal and CI/CD usage of TanStack packages (query package-lock.json, yarn.lock, and pnpm-lock.yaml across all repos); audit npm/GitHub/AWS/Vault access logs for anomalous activity from 2026-05-11 forward; revoke and rotate all developer AWS keys, GCP service accounts, Kubernetes tokens, npm tokens, GitHub personal access tokens, and SSH keys accessed from affected machines. Within 7 days: Re-scan all development and production systems for presence of TanStack compromised versions using GHSA-g7cv-rxg3-hmpx advisory artifact signatures; conduct forensic analysis of any affected workstations for lateral movement indicators; purge node_modules and lock files, then reinstall from uncompromised upstream sources or verified commit hashes. Within 30 days: Implement npm package verification (checksums, provenance attestation via sigstore); enforce pull_request_target->pull_request migration in internal GitHub Actions; deploy software composition analysis (SCA) tooling with real-time KEV/GHSA matching in CI/CD pipeline.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Block installation of all 84 affected versions via npm registry allow-list or dependency policy engine; (2) Scan installed dependencies against GHSA-g7cv-rxg3-hmpx artifact hashes; (3) Isolate affected development machines from production networks and secrets systems; (4) Monitor outbound encrypted traffic to Session/Oxen messenger infrastructure from development environment; (5) Implement network-level credential exfiltration detection (egress filtering for cloud provider metadata endpoints, vault API endpoints); (6) Switch to unaffected TanStack versions once published, or consider architectural alternatives pending full remediation.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Kubernetes
View allA critical vulnerability in Kubernetes ingress-nginx controller allows unauthenticated attackers with pod network access
Kubernetes ingress-nginx contains a configuration injection vulnerability via the mirror-target and mirror-host Ingress
A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-url` Ingres
A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-tls-match-c
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.exter
A security issue was discovered in Kubernetes where a user that can create pods on Windows nodes may be able to escalate
Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Rated critical severity (CVSS 9.9), this vulne
Unauthenticated remote attackers can trigger complete database overwrites, server-side file reads, and SSRF attacks agai
The Kubernetes integration in GitLab Enterprise Edition 11.x before 11.2.8, 11.3.x before 11.3.9, and 11.4.x before 11.4
Fluentd configuration injection in the kube-logging Logging operator before 6.6.0 allows a namespace-scoped user who can
Authenticated Typebot users can abuse the webhook block (HTTP Request component) in versions prior to 3.13.1 to issue ar
Kyverno Kubernetes policy engine prior to 1.x has a privilege escalation vulnerability (CVSS 9.9) allowing policy bypass
EUVD-2026-29352
GHSA-g7cv-rxg3-hmpx
NVD
CVE.org
CISA KEV
EPSS
Vulnrichment
VulDB
Exploit-DB