TeamPCP’s Mini Shai-Hulud Worm Spreads Through Compromised npm and PyPI Packages

· Original article ↗

Summary

Reports link TeamPCP’s Mini Shai-Hulud worm to compromised npm and PyPI packages. The malware steals credentials, abuses GitHub Actions and OIDC tokens, persists in developer IDEs, and propagates through package publishing.

Key points

  • The campaign was linked to TeamPCP and affected packages associated with TanStack, UiPath, Mistral AI, OpenSearch, Guardrails AI, and other publishers.
  • Compromised npm packages included an obfuscated router_init.js credential stealer targeting cloud services, wallets, AI tools, messaging apps, and CI systems.
  • The stealer reportedly exfiltrated data to filev2.getsession[.]org; a fallback stored encrypted data in attacker-controlled repositories using stolen GitHub tokens.
  • Malicious GitHub Actions workflows were designed to collect repository secrets and send them to api.masscan[.]cloud. The malware also added IDE persistence hooks and a GitHub-token monitoring service.
  • TanStack attributed its compromise to a chain involving the pull_request_target trigger, GitHub Actions cache poisoning, and extraction of an OIDC token from a runner. TanStack said npm tokens were not stolen and its npm publish workflow was not compromised.
  • The worm reportedly enumerated maintainers’ packages and used OIDC tokens to obtain per-package publish tokens. The article says 42 TanStack packages and 84 versions were affected and identifies CVE-2026-45321.
  • Microsoft’s analysis said the compromised mistralai package downloaded a credential stealer with geofenced destructive behavior; Socket reported that [email protected] executed downloaded code on import.

Article Details

Attack Vectors
  • Compromised npm and PyPI packages delivered credential-stealing malware, including an obfuscated JavaScript file named router_init.js.
  • The attackers abused a pull_request_target workflow trigger, GitHub Actions cache poisoning, and runtime extraction of an OIDC token from a runner to publish compromised TanStack packages.
  • The worm used publishable npm tokens and GitHub OIDC tokens to spread to packages published by other maintainers.
  • Malicious GitHub Actions workflows serialized repository secrets and uploaded them to an external server.
  • The compromised [email protected] package downloaded and executed a remote Python artifact without integrity verification.

Indicators of compromise

TypeIndicatorContext
DOMAINapi[.]masscan[.]cloudExternal server used by malicious GitHub Actions workflows to upload serialized repository secrets.
DOMAINfilev2[.]getsession[.]orgAttacker-controlled domain to which the malware exfiltrated stolen data.
IPV483[.]142[.]209[.]194Remote server from which the malicious mistralai PyPI package downloaded a credential stealer.
URLhxxps[:]//git-tanstack[.]com/transformers.pyzSpecific URL identified as hosting the malicious Python artifact downloaded and executed by the compromised guardrails-ai package.

MITRE ATT&CK

CVE

People

Threat Actors

Malware

Vendors

Products

Countries

Industries

Related Articles