Skip to content
Threat Feed
high threat

Mini Shai-Hulud Campaign Compromises npm Packages

The Mini Shai-Hulud supply chain campaign, attributed to TeamPCP, has compromised several npm packages, including those within the @tanstack, @uipath, and @mistralai namespaces, leading to credential theft and potential further compromise.

On May 11, 2026, TeamPCP launched a coordinated supply chain attack against the npm ecosystem, compromising packages across multiple namespaces simultaneously. Impacted packages include those in the @tanstack, @uipath, and @mistralai namespaces. The TanStack compromise exploited a chain of three vulnerabilities in GitHub Actions, allowing the attacker to poison the cache and extract OIDC tokens. The published packages contain two infection vectors: an optionalDependencies entry and an embedded ~2.3MB obfuscated file named router_init.js. The UiPath packages use a preinstall script (node setup.mjs) to download the Bun runtime and execute the payload. This campaign uses similar methods to previous TeamPCP operations.

Attack Chain

  1. Attacker creates a fork of a legitimate repository (e.g., TanStack/router) and renames it (e.g., zblgg/configuration).
  2. Attacker opens a pull request to the original repository, triggering a pull_request_target workflow.
  3. The workflow checks out and executes the attacker’s fork code.
  4. The attacker’s code poisons the GitHub Actions cache with a malicious pnpm store.
  5. Legitimate maintainer pull requests are merged, restoring the poisoned cache.
  6. Attacker-controlled binaries extract OIDC tokens from the GitHub Actions runner’s process memory (/proc/<pid>/mem).
  7. The attacker uses stolen tokens to publish malicious package versions to npm.
  8. The published packages execute a credential stealer and self-propagating worm that exfiltrates data via git-tanstack[.]com, Session messenger network, and GitHub API dead drops.

Impact

The compromised npm packages can lead to the theft of sensitive credentials, including CI/CD tokens (GitHub Actions OIDC, GitLab, CircleCI), cloud credentials (AWS IMDSv2, GCP, Azure), Kubernetes service accounts, HashiCorp Vault tokens, and package registry tokens. The self-propagating worm functionality allows the attacker to further compromise other npm packages the victim has write access to. On developer machines, the malware installs a persistent gh-token-monitor daemon that polls GitHub and can wipe the home directory if a token is revoked.

Recommendation

  • Search lockfiles and CI logs for affected package versions, specifically looking for router_init.js or setup.mjs at package roots (see affected packages list in this brief).
  • Search for the gh-token-monitor daemon on developer machines and remove it before revoking GitHub tokens to avoid the wiper (see Attack Chain and Overview).
  • Block the C2 domain git-tanstack.com and *.getsession.org at the DNS/proxy level (see IOCs).

Detection coverage 3

Detect Malicious setup.mjs Execution

high

Detects execution of the malicious setup.mjs script used in the UiPath package compromise.

sigma tactics: initial_access techniques: T1608.001 sources: process_creation, linux

Detect router_init.js File Creation

medium

Detects the creation of the router_init.js file with a specific size associated with the TanStack compromise.

sigma tactics: initial_access techniques: T1608.001 sources: file_event, linux

Detect gh-token-monitor Persistence

high

Detects installation of the gh-token-monitor LaunchAgent or systemd service.

sigma tactics: persistence techniques: T1543.001 sources: file_event, macos

Detection queries are available on the platform. Get full rules →

Indicators of compromise

5

domain

3

hash_sha256

TypeValue
domaingit-tanstack.com
domainseed1.getsession.org
domainseed2.getsession.org
domainseed3.getsession.org
domainfilev2.getsession.org
hash_sha256ab4fcadaec49c03278063dd269ea5eef82d24f2124a8e15d7b90f2fa8601266c
hash_sha2562ec78d556d696e208927cc503d48e4b5eb56b31abc2870c2ed2e98d6be27fc96
hash_sha2562258284d65f63829bd67eaba01ef6f1ada2f593f9bbe41678b2df360bd90d3df