
[CIAD-2026-0026] “Mini Shai-Hulud” Supply Chain Attack Campaign Targeting Open-Source
—–BEGIN PGP SIGNED MESSAGE—–
Hash: SHA256
‘Mini Shai-Hulud’ Supply Chain Attack Campaign Targeting Open-Source
Indian – Computer Emergency Response Team (https://www.cert-in.org.in)
Severity Rating: Critical
Overview
It has been observed that an active software supply chain attack campaign, publicly referred to as ‘Mini Shai-Hulud’, is targeting npm and PyPI package registries, with broader impact across enterprise CI/CD environments and open-source software ecosystems. This campaign, observed across multiple discrete waves is compromising software packages, build and release pipelines, automated publishing workflows, and cloud-native development infrastructures leveraged in modern application delivery.
Threat actors have reportedly compromised several hundred packages across npm and PyPI, resulting in the publication of a significantly larger number of malicious versions. The compromises have been carried out through a combination of compromised maintainer accounts, hijacked CI/CD pipeline tokens, and abuse of trusted publishing workflows.
Notable Affected Ecosystems / Packages
The affected packages, with specific malicious versions reported within each, include:
TanStack packages (@tanstack namespace)
SAP CAP / MTA npm packages
AntV ecosystem packages (@antv namespace)
UiPath packages (@uipath namespace)
Mistral AI packages (@mistralai namespace)
OpenSearch packages (@opensearch-project namespace)
Guardrails AI packages
Squawk packages
Other widely-used packages including echarts-for-react, timeago.js, size-sensor, canvas-nest.js, jest-canvas-mock
Note: The set of affected packages and versions is expanding. Organizations are advised to refer to advisories published by the relevant registry operators, the GitHub Advisory Database and other official channels for the most current information.
Description
Analysis from multiple security researchers indicates that the attackers are leveraging compromised npm maintainer accounts, GitHub Actions workflow abuse, and CI/CD pipeline compromise to distribute malicious packages. The campaign uses malicious preinstall hooks, obfuscated Bun/JavaScript payloads, credential harvesting mechanisms, and worm-like propagation capabilities to spread across development and enterprise environments.
Initial access has been observed through:
hijacking of GitHub Actions OIDC tokens via the ‘pull_request_target’ trigger in combination with Actions cache poisoning, followed by exchange with npm trusted publishing workflows for valid publish credentials;
compromise of npm maintainer accounts; and
targeting of long-dormant packages with weaker security controls but continued transitive usage.
The malware is designed to harvest sensitive credentials, including GitHub Personal Access Tokens (PATs), npm authentication tokens, cloud credentials (AWS/Azure/GCP), SSH keys, Kubernetes service account tokens, Vault secrets, database credentials, and CI/CD environment variables. It may also attempt to access cloud metadata services, extract secrets from CI/CD runner environments, and exfiltrate collected data to attacker-controlled infrastructure, while enabling further propagation by validating stolen npm tokens, enumerating accessible packages, injecting malicious payloads, and republishing under compromised maintainer identities.
Persistence mechanisms have been observed on development environments through modification of local tooling configurations (e.g., editor task hooks), potentially allowing execution across sessions.
Malicious packages have also been observed abusing trusted build and provenance mechanisms to appear legitimate, complicating detection and trust validation efforts.
Indicators of Compromise
The following Indicators of Compromise (IoCs) are associated with this campaign:
Malicious files and artefacts:
router_init.js
router_runtime.js
tanstack_runner.js
index.js (root-level, ~498 KB obfuscated Bun bundle)
setup.mjs
transformers.pyz (also observed at /tmp/transformers.pyz)
pgmonitor.py
pgsql-monitor.service gh-token-monitor.sh
kitty-monitor (Installed as a systemd user service on Linux or LaunchAgent on macOS)
cat.py (Often located in ~/.local/share/kitty/)
Injections into .claude/settings.json (SessionStart hook executing node
.claude/setup.mjs) and .vscode/tasks.json (task with ‘runOn’: ‘folderOpen’).
Suspicious preinstall / postinstall / prepare script execution during npm install
Network indicators:
filev2.getsession[.]org
git-tanstack[.]com
t.m-kosche[.]com
api.masscan[.]cloud
83[.]142[.]209[.]194
Suspicious access attempts to cloud metadata endpoints: 169[.]254[.]169[.]254 (AWS/Azure/GCP IMDS) and 169[.]254[.]170[.]2 (ECS task metadata)
File hashes (SHA-256):
ab4fcadaec49c03278063dd269ea5eef82d24f2124a8e15d7b90f2fa8601266c (router_init.js, @tanstack)
2ec78d556d696e208927cc503d48e4b5eb56b31abc2870c2ed2e98d6be27fc96 (tanstack_runner.js)
GitHub repository markers:
Repositories suddenly created under organisation identities with the description ‘A
Mini Shai-Hulud has Appeared’ or the reversed marker ‘niagA oG eW ereH :duluH-iahS’
Unauthorized dead-drop commits authored by the alias: claude@users.noreply.github.com
Anomalous branch creation or pushes mimicking dependabot (e.g., dependabout/github_actions/format/setup-formatter)
package.json modifications containing the malicious optional dependency pointer:
‘@tanstack/setup’: ‘github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c’
Successful exploitation may allow attackers to steal developer and cloud credentials, compromise CI/CD pipelines, publish additional malicious packages, gain unauthorized access to enterprise repositories, establish persistence in developer environments, compromise downstream software supply chains, and exfiltrate sensitive organizational data. Organizations using automated dependency updates or unrestricted package version ranges may face increased exposure to such attacks.
Recommendations
Review all npm, PyPI, Composer/Packagist, and related dependencies for suspicious or unauthorized package versions.
If an affected package version is identified, promptly isolate the host from the network and ensure relevant system artifacts are preserved to support incident investigation, prior to proceeding with further remediation.
Identify and disable local persistence mechanisms (e.g., systemd services or LaunchAgents) PRIOR to revoking any tokens. Revoking tokens while the malware’s monitoring daemon is active may trigger retaliatory destructive actions on the compromised host.
Rotate all developer credentials and tokens, including npm/PyPI publish tokens, GitHub PATs and Actions secrets, AWS/Azure/GCP credentials, HashiCorp Vault and Kubernetes service-account tokens, SSH keys, and other CI/CD secrets.
Enforce Multi-Factor Authentication (MFA) across GitHub, npm, PyPI, cloud, and CI/CD environments.
Audit GitHub Actions workflows for insecure configurations, excessive permissions, and untrusted third-party actions.
Restrict unnecessary preinstall, postinstall, and prepare lifecycle scripts in development and CI/CD environments.
Monitor systems and network traffic for known indicators of compromise associated with the campaign.
Inspect repositories for unauthorized workflow changes, suspicious commits, malicious releases, or unexpected package publishing activity.
Validate package provenance, maintainers, and software attestations before approving dependency updates.
Implement least-privilege access controls and dependency pinning to reduce supply chain risk.
Continuously monitor software supply chain activity using SBOM and dependency monitoring solutions.
Conduct threat hunting for credential theft, malicious workflows, and unauthorized publishing activity.
Note: ‘Mini Shai-Hulud’ is considered an evolved variant of the earlier ‘Shai-Hulud’ campaign, expanding beyond the npm ecosystem to target multiple package ecosystems and enterprise CI/CD environments. For CERT-In advisory related to ‘ShaiHulud’ campaign, you may refer CIAD-2025-0034
References
https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem
https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised
https://www.sophos.com/en-us/blog/-mini-shai-hulud-supply-chain-attack-targets-sap-npm-packages
https://www.endorlabs.com/learn/shai-hulud-compromises-the-tanstack-ecosystem-80-packages-compromised
https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack
https://snyk.io/blog/tanstack-npm-packages-compromised
https://safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised/
https://socket.dev/blog/antv-packages-compromised
– —
Thanks and Regards,
CERT-In
Incident Response Help Desk
e-mail: incident@cert-in.org.in
Phone: +91-11-22902657
Toll Free Number: 1800-11-4949
Toll Free Fax : 1800-11-6969
Web: http://www.cert-in.org.in
PGP Fingerprint: A768 083E 4475 5725 B81A A379 2156 C0C0 B620 D0B4
PGP Key information:
https://www.cert-in.org.in/s2cMainServlet?pageid=CONTACTUS
Postal address:
Indian Computer Emergency Response Team (CERT-In)
Ministry of Electronics and Information Technology
Government of India
Electronics Niketan
6, C.G.O. Complex
New Delhi-110 003
—–BEGIN PGP SIGNATURE—–
iQIzBAEBCAAdFiEE6r4Iam/Ey0c/KakL3jCgcSdcys8FAmoPIncACgkQ3jCgcSdc
ys9B9A/+Nj9GDRLUQLlQITES+LrG4T9Xt0qJ/RenqZPNUALkMsjZQiTsPFUpcn3/
5LOQ88SRWapMv4037EAUgmjVw5PQs6dVswFE6ebMlLfVgO3yKSGJyHVvBAgtWLKj
91XMQSmVtcnFXrRAkLBoiZHQcucAVpbzVcyFn4Clpc2HYH3LnCoWSC3awUHpu7wD
FpbnFh+biA01XQG/cRLk9Fth3o06goQlvrrcF76qLVngyJC3Gk4a/Y6FCmf73Ax+
DBKi29od7EEGZQC/R5wIAX4RWFgUJtnOOkEqWfrVUpusSro5H7SSdZOt7SIq9LZO
3mk2sL0P0Enl2jJ6CocnT64wxQg2W2S9sOjFSP9C00Hz2PstyOl2XkJoagFu+otp
Zwo9RnzNiGrNmDXzuDCoIuI/VQrvpQMV3jd1q4M+YNuz0VsRx4Hrtok2wO7SV1wU
6plX/Q1yJEw8+or4SZmRdZK7ajhyvRD4Fw8JxbZGpzeUtwqvzBPhU027JsE9K0Mh
z7wQnCiB7mj0sQHbGsCTXKTGEJGzf3tdP9TJrkB0Rm9MTkrTZEFKit3cyz9vTSli
qKMjVN1p4RWO69pjBRFTK1KP1uILpzAyx8vVdu+yIzJDa2MplLNGaJ6aPKu5vyLc
5xMvcz0L+T8FdZT5qOX0lCCWHtFPFRo07H8zcQXAB8wgHIwpr0I=
=oIsx
—–END PGP SIGNATURE—–


