TL;DR: TeamPCP’s Mini Shai-Hulud worm compromised legitimate npm packages by stealing CI/CD secrets, hijacking OIDC tokens, and publishing malicious versions through GitHub Actions, with the payload also harvesting cloud, AI, and developer credentials, according to StepSecurity. The incident shows that pipeline trust, secret sprawl, and package provenance can fail together, turning build systems into propagation channels.
NHIMG editorial — based on content published by StepSecurity: Mini Shai-Hulud’s self-spreading supply chain compromise of TanStack npm packages
By the numbers:
- 64% of valid secrets leaked in 2022 are still valid and exploitable today, proving that detection alone is not enough without automated revocation.
Questions worth separating out
Q: What breaks when a CI/CD workflow can publish packages and access secrets at the same time?
A: A single workflow compromise can become a full trust collapse.
Q: Why do CI/CD pipelines make secret theft easier for attackers?
A: Pipelines often concentrate cloud keys, package tokens, environment variables, and deployment credentials in one execution path.
Q: How should security teams govern OIDC and workload tokens in release pipelines?
A: Treat OIDC and other workload tokens as privileged identities with explicit audience, repository, and job restrictions.
Practitioner guidance
- Restrict release-path workflow privileges Remove broad trust from pull_request_target and split build, test, and publish into separate workflows with narrowly scoped permissions and environment approvals.
- Treat runner-issued OIDC tokens as production credentials Scope OIDC federation to specific repositories, jobs, and audiences, then rotate or revoke tokens immediately when a workflow compromise is suspected.
- Isolate and monitor CI/CD egress Apply outbound allowlisting to runners so a compromised job cannot reach arbitrary C2 domains or exfiltration endpoints before containment triggers.
What's in the full article
StepSecurity's full blog covers the operational detail this post intentionally leaves for the source:
- A runtime packet-and-process view of the compromised GitHub Actions workflow, including the network telemetry and process tree used to confirm the worm.
- The full list of affected npm packages and versions, which teams need for triage, dependency review, and incident scoping.
- Details of the payload’s secret-harvesting, persistence, and exfiltration logic across runners, local developer devices, and package publishing workflows.
- The remediation and detection guidance tied to StepSecurity tools, including cooldown checks, malicious package blocking, and registry controls.
👉 Read StepSecurity’s analysis of the Mini Shai-Hulud npm supply chain worm →
Mini shai-hulud in npm packages: what security teams should do?
Explore further
Pipeline credentials are now non-human identities, not temporary implementation details. The worm succeeds because CI/CD tokens, runner secrets, and OIDC credentials are treated as disposable build artifacts rather than governed identities. Once those tokens can publish software, they become production access. For identity teams, that means release pipelines need lifecycle control, least privilege, and monitoring equivalent to any other privileged service account.
A few things that frame the scale:
- 28.65 million new hardcoded secrets were detected in public GitHub commits in 2025 alone, a 34% year-over-year increase and the largest single-year jump ever recorded, according to The State of Secrets Sprawl 2026.
- AI-related credential leaks surged 81.5% year-over-year in 2025, with the surrounding AI infrastructure leaking 5x faster than core LLM providers, according to The State of Secrets Sprawl 2026.
A question worth separating out:
Q: Who is accountable when a compromised pipeline publishes malicious packages?
A: Accountability usually sits with the organisation that issued the publishing credential, maintained the pipeline trust boundary, and failed to constrain release authority. In practice, this is an IAM, DevSecOps, and platform governance issue together, not a developer-only mistake.
👉 Read our full editorial: Mini shai-hulud shows how npm supply chain worms spread