CTIPilot
AI-generated · no human review · verify critical claims against the linked source. how it works →

TanStack Router

product · product:tanstack-router

Coverage
1
first 2026-05-13 → last 2026-10-21
Latest activity
2026-05-13
A Pwn Request, cache poisoning and runner-memory OIDC theft let attackers publish 84 malicious TanStack npm…
Peak priority
notable
1 notable
Targets
technology
sectors: technology
Sources cited
10
9 hosts

Defender insights

What each entry about TanStack Router tells a defender to do, newest first.

2026-05-13NOTABLEexploitedA Pwn Request, cache poisoning and runner-memory OIDC theft let attackers publish 84 malicious TanStack npm versions

Exposure · detection

Story timeline

  1. 2026-05-13Mini Shai-Hulud hits TanStack: a pull_request_target Pwn Request, Actions cache poisoning and OIDC token theft from runner memory published 84 malicious @tanstack versions with valid provenance
    deep-diveA Pwn Request, cache poisoning and runner-memory OIDC theft let attackers publish 84 malicious TanStack npm versions

Hunting pivots

CVEs (exploited first)
Releases covered
TanStack Router
ATT&CK techniques (18 across 10 tactics)

18 techniques observed across 1 entry about this entity, derived from entry metadata and body evidence, never asserted without a published entry behind it · pinned to MITRE ATT&CK v20.0 · compare on the matrix · Navigator layer (JSON)

  • Initial AccessExploit Public-Facing Application · Supply Chain Compromise: Compromise Software Dependencies and Development Tools · Supply Chain Compromise: Compromise Software Supply Chain
  • ExecutionCommand and Scripting Interpreter: JavaScript
  • PersistenceCreate or Modify System Process: Launch Agent · Create or Modify System Process: Systemd Service · Event Triggered Execution
  • Privilege EscalationCreate or Modify System Process: Launch Agent · Create or Modify System Process: Systemd Service · Event Triggered Execution
  • StealthObfuscated Files or Information · Masquerading
  • Credential AccessOS Credential Dumping: Proc Filesystem · Steal Application Access Token · Unsecured Credentials: Credentials In Files · Unsecured Credentials: Cloud Instance Metadata API
  • Lateral MovementUse Alternate Authentication Material: Application Access Token
  • Command and ControlIngress Tool Transfer
  • ExfiltrationExfiltration Over Web Service · Exfiltration Over Web Service: Exfiltration to Code Repository
  • ImpactData Destruction

Initial Access TA0001

T1190Exploit Public-Facing Application×1

Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network. The weakness in the system can be a software bug, a temporary glitch, or a misconfiguration.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1195.001Supply Chain Compromise: Compromise Software Dependencies and Development Tools×1

Adversaries may manipulate software dependencies and development tools prior to receipt by a final consumer for the purpose of data or system compromise. Applications often depend on external software to function properly. Popular open source projects that are used as dependencies in many applications, such as pip and NPM packages, may be targeted as a means to add malicious code to users of the dependency. This may also include abandoned packages, which in some cases could be re-registered by threat actors after being removed by adversaries. Adversaries may also employ "typosquatting" or name-confusion by choosing names similar to existing popular libraries or packages in order to deceive a user.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1195.002Supply Chain Compromise: Compromise Software Supply Chain×1

Adversaries may manipulate application software prior to receipt by a final consumer for the purpose of data or system compromise. Supply chain compromise of software can take place in a number of ways, including manipulation of the application source code, manipulation of the update/distribution mechanism for that software, or replacing compiled releases with a modified version.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

Execution TA0002

T1059.007Command and Scripting Interpreter: JavaScript×1

Adversaries may abuse various implementations of JavaScript for execution. JavaScript (JS) is a platform-independent scripting language (compiled just-in-time at runtime) commonly associated with scripts in webpages, though JS can be executed in runtime environments outside the browser.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

Persistence TA0003

T1543.001Create or Modify System Process: Launch Agent×1

Adversaries may create or modify launch agents to repeatedly execute malicious payloads as part of persistence. When a user logs in, a per-user launchd process is started which loads the parameters for each launch-on-demand user agent from the property list (.plist) file found in <code>/System/Library/LaunchAgents</code>, <code>/Library/LaunchAgents</code>, and <code>~/Library/LaunchAgents</code>. Property list files use the <code>Label</code>, <code>ProgramArguments </code>, and <code>RunAtLoad</code> keys to identify the Launch Agent's name, executable location, and execution time. Launch Agents are often installed to perform updates to programs, launch user specified programs at login, or to conduct other developer tasks.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1543.002Create or Modify System Process: Systemd Service×1

Adversaries may create or modify systemd services to repeatedly execute malicious payloads as part of persistence. Systemd is a system and service manager commonly used for managing background daemon processes (also known as services) and other system resources. Systemd is the default initialization (init) system on many Linux distributions replacing legacy init systems, including SysVinit and Upstart, while remaining backwards compatible.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1546Event Triggered Execution×1

Adversaries may establish persistence and/or elevate privileges using system mechanisms that trigger execution based on specific events. Various operating systems have means to monitor and subscribe to events such as logons or other user activity such as running specific applications/binaries. Cloud environments may also support various functions and services that monitor and can be invoked in response to specific cloud events.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

Privilege Escalation TA0004

T1543.001Create or Modify System Process: Launch Agent×1

Adversaries may create or modify launch agents to repeatedly execute malicious payloads as part of persistence. When a user logs in, a per-user launchd process is started which loads the parameters for each launch-on-demand user agent from the property list (.plist) file found in <code>/System/Library/LaunchAgents</code>, <code>/Library/LaunchAgents</code>, and <code>~/Library/LaunchAgents</code>. Property list files use the <code>Label</code>, <code>ProgramArguments </code>, and <code>RunAtLoad</code> keys to identify the Launch Agent's name, executable location, and execution time. Launch Agents are often installed to perform updates to programs, launch user specified programs at login, or to conduct other developer tasks.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1543.002Create or Modify System Process: Systemd Service×1

Adversaries may create or modify systemd services to repeatedly execute malicious payloads as part of persistence. Systemd is a system and service manager commonly used for managing background daemon processes (also known as services) and other system resources. Systemd is the default initialization (init) system on many Linux distributions replacing legacy init systems, including SysVinit and Upstart, while remaining backwards compatible.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1546Event Triggered Execution×1

Adversaries may establish persistence and/or elevate privileges using system mechanisms that trigger execution based on specific events. Various operating systems have means to monitor and subscribe to events such as logons or other user activity such as running specific applications/binaries. Cloud environments may also support various functions and services that monitor and can be invoked in response to specific cloud events.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

Stealth TA0005

T1027Obfuscated Files or Information×1

Adversaries may attempt to make an executable or file difficult to discover or analyze by encrypting, encoding, or otherwise obfuscating its contents on the system or in transit. This is common behavior that can be used across different platforms and the network to evade defenses.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1036Masquerading×1

Adversaries may attempt to manipulate features of their artifacts to make them appear legitimate or benign to users and/or security tools. Masquerading occurs when the name or location of an object, legitimate or malicious, is manipulated or abused for the sake of evading defenses and observation. This may include manipulating file metadata, tricking users into misidentifying the file type, and giving legitimate task or service names.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

Credential Access TA0006

T1003.007OS Credential Dumping: Proc Filesystem×1

Adversaries may gather credentials from the proc filesystem or `/proc`. The proc filesystem is a pseudo-filesystem used as an interface to kernel data structures for Linux based systems managing virtual memory. For each process, the `/proc/<PID>/maps` file shows how memory is mapped within the process’s virtual address space. And `/proc/<PID>/mem`, exposed for debugging purposes, provides access to the process’s virtual address space.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1528Steal Application Access Token×1

Adversaries can steal application access tokens as a means of acquiring credentials to access remote systems and resources.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1552.001Unsecured Credentials: Credentials In Files×1

Adversaries may search local file systems and remote file shares for files containing insecurely stored credentials. These can be files created by users to store their own credentials, shared credential stores for a group of individuals, configuration files containing passwords for a system or service, or source code/binary files containing embedded passwords.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1552.005Unsecured Credentials: Cloud Instance Metadata API×1

Adversaries may attempt to access the Cloud Instance Metadata API to collect credentials and other sensitive data.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

Lateral Movement TA0008

T1550.001Use Alternate Authentication Material: Application Access Token×1

Adversaries may use stolen application access tokens to bypass the typical authentication process and access restricted accounts, information, or services on remote systems. These tokens are typically stolen from users or services and used in lieu of login credentials.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

Command and Control TA0011

T1105Ingress Tool Transfer×1

Adversaries may transfer tools or other files from an external system into a compromised environment. Tools or files may be copied from an external adversary-controlled system to the victim network through the command and control channel or through alternate protocols such as ftp. Once present, adversaries may also transfer/spread tools between victim devices within a compromised environment (i.e. Lateral Tool Transfer).

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

Exfiltration TA0010

T1567Exfiltration Over Web Service×1

Adversaries may use an existing, legitimate external Web service to exfiltrate data rather than their primary command and control channel. Popular Web services acting as an exfiltration mechanism may give a significant amount of cover due to the likelihood that hosts within a network are already communicating with them prior to compromise. Firewall rules may also already exist to permit traffic to these services.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

T1567.001Exfiltration Over Web Service: Exfiltration to Code Repository×1

Adversaries may exfiltrate data to a code repository rather than over their primary command and control channel. Code repositories are often accessible via an API (ex: https://api.github.com). Access to these APIs are often over HTTPS, which gives the adversary an additional level of protection.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

Impact TA0040

T1485Data Destruction×1

Adversaries may destroy data and files on specific systems or in large numbers on a network to interrupt availability to systems, services, and network resources. Data destruction is likely to render stored data irrecoverable by forensic techniques through overwriting files or data on local and remote drives. Common operating system file deletion commands such as <code>del</code> and <code>rm</code> often only remove pointers to files without wiping the contents of the files themselves, making the files recoverable by proper forensic methodology. This behavior is distinct from Disk Content Wipe and Disk Structure Wipe because individual files are destroyed rather than sections of a storage disk or the disk's logical structure.

Evidence: 2026-05-13/mini-shai-hulud-s-github-actions-pwn-request-oidc-token-thef · ATT&CK page ↗

Entries about TanStack Router (1)

2026-05-13 · view entry permalink →

NOTABLECVE-2026-45321exploitedupdatedNATOA1

Mini Shai-Hulud hits TanStack: a pull_request_target Pwn Request, Actions cache poisoning and OIDC token theft from runner memory published 84 malicious @tanstack versions with valid provenance

On 2026-05-11 between 19:20 and 19:26 UTC an attacker published 84 malicious versions across 42 @tanstack/* npm packages by chaining a pull_request_target "Pwn Request", GitHub Actions cache poisoning across the fork and base-repository trust boundary, and extraction of an OIDC token from the runner's memory; no npm token was stolen and the publish workflow itself was not modified (TanStack, 2026-05-11). StepSecurity, which detected the publishes, and Wiz attribute the wave to TeamPCP's Mini Shai-Hulud worm, which hit UiPath, Mistral AI and other npm packages the same day, though Wiz found a payload bug that leaves the malware non-functional in the @uipath and @mistralai packages (StepSecurity, 2026-05-11; Wiz, 2026-05-12). The worm's first wave had compromised four official SAP npm packages on 2026-04-29 through malicious preinstall scripts (The Register, 2026-04-30). The TanStack compromise is CVE-2026-45321, scored 9.6 (TanStack advisory, 2026-05-11), which CISA added to its Known Exploited Vulnerabilities catalog on 2026-05-27 with known ransomware campaign use (CISA KEV catalog, 2026-05-27).

The chain, from TanStack's timeline (TanStack, 2026-05-11):

  1. Staging. On 2026-05-10 the attacker forked TanStack/router into a repository renamed to evade fork-list searches and committed a roughly 30,000-line bundled JavaScript payload under the history package, with a fabricated author identity and a commit message that suppressed CI on push; the post-mortem names two attacker GitHub accounts.
  2. Pwn Request. On 2026-05-11 at about 10:49 a pull request titled as a work-in-progress build simplification triggered the bundle-size and labeler workflows, both on pull_request_target, which needs no first-time-contributor approval. At 11:11 the benchmark job checked out the PR's merge ref and ran pnpm install and the bundle-size build, executing the payload.
  3. Cache poisoning. The payload wrote into the pnpm store under the key the release workflow computes, and the cache action's post-job save stored the 1.1 GB poisoned store in the base repository's cache scope; the job's read-only permissions: did not stop it, because cache writes use a runner-internal token. At 11:31 the attacker force-pushed the PR back to the main branch head, leaving a zero-file change, and closed it.
  4. Detonation. At 19:15 a re-run of the release workflow, and at 19:16 a fresh run triggered by a legitimate merge, restored the poisoned store. Attacker binaries run during the build located the Runner.Worker process, read its memory through /proc/<pid>/maps and /proc/<pid>/mem, took the OIDC token the runner mints in memory for a job with id-token: write, and posted the packages directly to the npm registry, using the same memory-dump script as the tj-actions/changed-files compromise of March 2025. Tests failed, so the workflow's own Publish Packages step was skipped.

The packages carry valid SLSA provenance tied to TanStack's release workflow; provenance proves which pipeline built a package, not that the pipeline behaved, so a compromised build step yields a validly attested malicious package (StepSecurity, 2026-05-11).

The payload. Installing an affected version resolves an optional dependency on a github: URL naming the TanStack repository, which GitHub serves from an orphan commit in the fork network; npm installs that commit's dependencies, including the Bun runtime, and runs its prepare lifecycle script, which executes a 2.3 MB obfuscated JavaScript file shipped at the tarball root and then exits with an error so npm silently discards the optional install (TanStack advisory, 2026-05-11). Behind three obfuscation layers, it queries the AWS instance metadata service with the IMDSv2 flow and the ECS credential endpoint, reads the local Vault agent, reads files from more than 100 hardcoded paths, and in CI pipes a memory-reading script to sudo python3 to pull every value the runner marks as secret (StepSecurity, 2026-05-11); NCSC-CH groups the paths as cloud credentials, SSH, Git, developer and AI tools, crypto wallets, VPN configurations, messaging apps, shell history and Kubernetes (NCSC-CH, 2026-05-12). It exfiltrates encrypted data through the Session messenger's file-upload network and through GitHub commits on branches named to look like Dependabot's, spreads by finding npm tokens that bypass two-factor checks, enumerating the maintainer's other packages and, in CI, exchanging the OIDC token for per-package publish tokens, and writes workflows disguised as CodeQL analysis that serialise all repository secrets (StepSecurity, 2026-05-11). Persistence is a Claude Code SessionStart hook, a VS Code folder-open task, and a LaunchAgent on macOS or systemd user service on Linux that checks the GitHub API every 60 seconds and deletes the user's home directory once the stolen token is revoked (NCSC-CH, 2026-05-12).

No npm tokens were stolen and the npm publish workflow itself was not compromised.

Cache writes use a runner-internal token

TanStack 2026-05-11

Yet the packages were published during the same window.

A compromised build step can produce a validly-attested but malicious package.

Do not revoke these tokens before isolating and imaging the machine

StepSecurity 2026-05-11

On April 29, TeamPCP compromised four official npm packages from the SAP JavaScript and cloud application development ecosystem and published the poisoned releases between 09:55 and 12:14 UTC.

The Register 2026-04-30
Correctionrun 2026-10-21T1148Z-auditaffected_productsbodyclassificationcvesevent_dateevidenceheadlinesectorssourcessourcing_notesummarytagstechniquestitle

Mini Shai-Hulud's first wave hit four official SAP npm packages on 2026-04-29 with malicious preinstall scripts (The Register, 2026-04-30). In the TanStack compromise no reconnaissance step is reported; the pull request added a bundled payload file that the pull_request_target benchmark job executed when it checked out and built the PR's merge ref, rather than slipping in lockfile, dependency or .github changes, and the release job never reached its publish step: tests failed, Publish Packages was skipped, and the malware published directly with the OIDC token it read from runner memory (TanStack, 2026-05-11). No npm token was needed for that publish, but the payload itself steals credentials and spreads with them (StepSecurity, 2026-05-11).

The SLSA provenance on the malicious packages is genuine, an attestation of a compromised pipeline rather than a forgery, and no source ties it to EU procurement (StepSecurity, 2026-05-11). The payload runs from the prepare script of an optional git dependency, not from postinstall (TanStack advisory, 2026-05-11), and its memory scraper runs as sudo python3, so a filter for non-root readers of /proc/<pid>/mem misses it (StepSecurity, 2026-05-11). The compromise is CVE-2026-45321, scored 9.6 (TanStack advisory, 2026-05-11) and listed by CISA as known exploited on 2026-05-27 (CISA KEV catalog, 2026-05-27). The cache action has no save: false input; restore-only caching is the separate restore action (actions/cache README), npm verifies attestations with npm audit signatures (npm Docs), and GitHub Security Lab warns that combining the pull_request_target trigger with an explicit checkout of an untrusted pull request may lead to repository compromise (GitHub Security Lab, 2021-08-03).

threat13 May 05:00Zmulti-sourceOpen finding →

Co-occurring entities

Derived: referenced by the same focused operational entries (weekly summaries and report roundups don't count); ×N counts the shared entries.

Where this entity is cited

  • Deep dive1

Source distribution

  • github.com2 (20%)
  • cisa.gov1 (10%)
  • docs.npmjs.com1 (10%)
  • security-hub.ncsc.admin.ch1 (10%)
  • securitylab.github.com1 (10%)
  • stepsecurity.io1 (10%)
  • tanstack.com1 (10%)
  • theregister.com1 (10%)
  • other1 (10%)