Large, coordinated software supply‑chain attack campaign and SOC Incident Response
Mini‑Shai Hulud refers to a large, coordinated software supply‑chain attack campaign attributed to the threat group TeamPCP, targeting major open‑source ecosystems including npm, PyPI, and Composer. It is a successor and scaled‑down variant of the earlier Shai‑Hulud worm, but still highly capable and dangerous.
Below is a clear, structured breakdown of what Mini‑Shai Hulud is, how it works, who it hit, and why it matters — all grounded in the latest reporting.
What Mini‑Shai Hulud is
Mini‑Shai Hulud is a credential‑stealing, self‑propagating supply‑chain malware inserted into legitimate open‑source packages. It infects developer environments and then uses stolen tokens to publish malicious versions of any packages the victim has write access to.
It is part of a broader trend of automated supply‑chain attacks where attackers compromise CI/CD pipelines, GitHub Actions, and package registries to spread malware at scale.
Who was affected
Across multiple registries, the campaign compromised:
42 TanStack packages (React Router, Query, etc.)
65 UiPath packages
Mistral AI PyPI packages
OpenSearch JavaScript client
Guardrails AI
Hundreds of additional npm packages, including antv visualization libraries heavily used in blockchain tooling
In total, researchers tracked over 1,000 compromised versions across 500+ packages.
How the malware works
Mini‑Shai Hulud is engineered to:
Steal developer credentials (GitHub, npm, PyPI, cloud keys, CI/CD secrets)
Exfiltrate data to attacker‑controlled domains such as
filev2.getsession[.]orgPropagate automatically by using stolen tokens to publish malicious package versions
Install persistence inside IDEs like VS Code and Claude Code
Inject malicious GitHub Actions workflows to serialize and exfiltrate repository secrets
Some variants also:
Avoid infecting Russian‑language systems
Run a daemon that polls GitHub every minute to check token revocation
How the attackers compromised the packages
TeamPCP exploited multiple weaknesses in GitHub Actions and CI/CD pipelines, including:
pull_request_target “Pwn Request” misconfiguration
GitHub Actions cache poisoning
Runtime extraction of OIDC tokens from runner memory
In some cases, they used orphaned commits to trigger automated release pipelines and publish malicious artifacts with valid provenance signatures, making the malware appear legitimate.
Example: TanStack compromise
The TanStack ecosystem was hit particularly hard:
84 malicious versions across 42 packages
Malware hidden in a file named router_init.js
Optional dependency pointing to a GitHub repo with a prepare hook that executed the payload via Bun
Assigned CVE‑2026‑45321, CVSS 9.6 (critical)
Why this matters
Mini‑Shai Hulud demonstrates:
CI/CD pipelines are now prime attack surfaces
Valid provenance signatures are not enough if the pipeline itself is compromised
Open‑source ecosystems remain highly vulnerable to automated, large‑scale supply‑chain attacks
Because these packages are downloaded millions of times per week, the blast radius is enormous.
What developers should do
If you installed any affected packages during the attack windows:
Rotate all credentials (GitHub, npm, PyPI, cloud providers).
Audit your repositories for unauthorized commits or workflows.
Check for persistence in VS Code or Claude Code.
Rebuild CI/CD secrets and review GitHub Actions permissions.
SOC‑Ready Incident Response Checklist: Mini‑Shai Hulud / Supply‑Chain Compromise
1. Immediate Triage (0–30 minutes)
Activate incident bridge and assign roles (IR lead, comms, forensics, cloud lead).
Identify whether any affected packages were installed in the last 30 days.
Freeze all CI/CD pipelines, GitHub Actions, and automated publishing workflows.
Disable GitHub OIDC tokens, npm tokens, PyPI tokens, and any PATs with package‑publish rights.
Block known C2 domains (e.g.,
getsession[.]orgvariants) at firewall and DNS layers.Snapshot impacted systems (developer workstations, CI runners, build servers).
2. Credential & Access Containment (30–90 minutes)
Force‑rotate all developer credentials:
GitHub PATs
npm / PyPI / Composer tokens
Cloud provider keys (AWS, Azure, GCP)
SSH keys
Revoke all GitHub Actions OIDC trust relationships temporarily.
Disable or quarantine service accounts used for publishing packages.
Audit GitHub org for:
Unauthorized OAuth apps
Suspicious PATs
New deploy keys
New GitHub Apps
3. Developer Workstation Forensics
Mini‑Shai Hulud often installs persistence in IDEs.
Inspect VS Code and Claude Code extensions directories for unknown modules.
Search for:
router_init.jsbun‑executed payloadsObfuscated JS in
node_modules/.cache
Check shell profiles (
.bashrc,.zshrc, PowerShell profile) for injected commands.Review browser credential stores for unauthorized access.
Run memory capture on any workstation that published packages recently.
4. Repository & CI/CD Forensics
Review all repositories with publish permissions.
Identify unauthorized:
Commits
Tags
Releases
GitHub Actions workflow changes
Look for:
pull_request_targetmisuseCache poisoning
Suspicious workflow artifacts
Validate provenance signatures — but do not trust them alone (pipeline compromise bypasses provenance).
5. Package Registry Audit
Enumerate all packages your org publishes to:
npm
PyPI
Composer
Internal registries
Check for:
Unauthorized versions
Modified tarballs
Unexpected dependencies
New maintainers or collaborators
Yank or deprecate any compromised versions immediately.
6. Network & Host Indicators
Block outbound traffic to known exfiltration endpoints.
Search logs for:
Repeated GitHub API calls from unusual IPs
npm or PyPI login attempts from foreign regions
Developer machines contacting unknown domains
Review EDR alerts for:
Node.js spawning network connections
Bun runtime execution
Suspicious PowerShell or bash activity
7. Eradication
Remove malicious packages from all systems.
Rebuild developer workstations from golden images if any persistence is found.
Recreate CI/CD runners from clean templates.
Re‑establish OIDC trust relationships with strict conditions:
Least privilege
Environment‑bound
No wildcard audiences
8. Recovery
Re‑publish clean versions of any affected packages.
Re‑enable CI/CD pipelines with:
Mandatory code review
Mandatory provenance
No
pull_request_targetunless absolutely required
Notify downstream consumers with:
Impact window
Affected versions
Required remediation steps
9. Post‑Incident Actions
Conduct a full root‑cause analysis.
Update secure‑publishing SOPs.
Implement:
Sigstore keyless signing
GitHub Actions hardened runners
Registry‑scoped tokens
Mandatory MFA for all developers
Schedule a red‑team simulation of CI/CD compromise.
.png)
Comments
Post a Comment