Campaign Open Source 2026-05-11 · 8 days ·Credential Theft, Self Propagation

Shai-Hulud hits npm and PyPI

Shai-Hulud: Here We Go Again was a May 2026 TeamPCP campaign affecting roughly 169 to 170+ npm package names, plus 2 PyPI packages, with combined reported download volume above 200 million per week.

Story

A self-spreading npm worm researchers dubbed "Mini Shai-Hulud" tore through more than 170 JavaScript packages and at least two Python packages over eight days in May 2026, in what JFrog, Aikido, Socket, and StepSecurity described as a second major outing for a TeamPCP-linked operation that first surfaced under the Shai-Hulud name in late 2025.

Researchers said the campaign was aimed at package publishers themselves rather than at any single project. JFrog reported more than 170 npm packages and two PyPI packages. Aikido counted 373 malicious package- version entries across 169 npm names as the list was refined over several days.

The npm payload imported @tanstack/setup as a GitHub-sourced dependency, rewrote package metadata, bumped versions, and republished infected tarballs using stolen npm tokens. Inside GitHub Actions runners, researchers said it could also abuse OIDC trusted publishing to mint a fresh npm publish token under a legitimate workflow identity — a step that earlier worms had not reached.

The malware daemonized after install so the package manager could return a successful exit while harvesting continued in the background. Its value was in recursion: any package install in a privileged developer or CI environment could leak tokens, enumerate more publishable packages, and seed the next wave.

High-value scopes — including TanStack, Mistral, UiPath, OpenSearch prereleases, and Guardrails — are recorded separately where the package evidence is precise. This campaign record holds the moving aggregate and the common mechanics.

Linked Attacks

2026

Top vector Package registry Top payload point Distribution
29 entries 29 open source 0 proprietary
May 29 entries
TanStack packages hit by Mini Shai-Hulud

TeamPCP's Mini Shai-Hulud worm compromised the TanStack Router release pipeline by chaining a pull_request_target "Pwn Request" pattern, GitHub Actions cache poisoning, and runtime extraction of a GitHub Actions OIDC trusted-publisher token from runner memory.

Campaign Context

Actor
TeamPCP
Attribution
Group
Cause
Unknown
User Impact
200000000

Affected Packages

Notes

  • Aikido reported 373 malicious package-version entries across 169 npm package names on May 12, 2026; JFrog separately reported 170+ npm packages plus 2 PyPI packages. The count shifted as researchers removed false positives and added newly discovered package versions.
  • Legacy artifact note: 170+ npm unique packages in JFrog Appendix A, excluding separately tracked @tanstack/* packages
  • Legacy artifact note: @uipath/* packages
  • Legacy artifact note: @squawk/* packages
  • Legacy artifact note: @tallyui/* packages
  • Legacy artifact note: @beproduct/nestjs-auth
  • Legacy artifact note: @draftlab/* and @draftauth/* packages
  • Legacy artifact note: @taskflow-corp/cli and @tolka/cli
  • Legacy artifact note: @ml-toolkit-ts/*, @mesadev/*, @dirigible-ai/sdk, and @supersurkhet/* packages
  • Legacy artifact note: @mistralai/mistralai@2.2.2, 2.2.3, 2.2.4
  • Legacy artifact note: @mistralai/mistralai-azure@1.7.1, 1.7.2, 1.7.3
  • Legacy artifact note: @mistralai/mistralai-gcp@1.7.1, 1.7.2, 1.7.3
  • Legacy artifact note: @opensearch-project/opensearch prereleases tracked separately
  • Legacy artifact note: guardrails-ai@0.10.1

External References

Source record: oss/campaigns/shai-hulud-here-we-go-again/meta.yaml