Mini Shai-Hulud: The Worm That Ate npm

Share This Post

Fear Is the Dependency Killer.

The “Mini Shai-Hulud” attack highlights how modern software supply chain threats are evolving beyond stolen developer credentials into direct compromise of trusted CI/CD infrastructure. Researchers linked the campaign to TeamPCP after attackers compromised more than 160 npm packages across ecosystems including TanStack, UiPath, Mistral AI, OpenSearch, and others. Investigators from Wiz, Aikido Security, StepSecurity, and other security firms found that the attackers abused GitHub Actions and OIDC-based release workflows to publish malicious package versions through legitimate automated build pipelines. The malware was designed to self-propagate by harvesting developer, cloud, CI/CD, and cryptocurrency secrets from infected environments, allowing the attack to spread laterally across additional projects and organizations. Researchers also observed malicious packages carrying valid SLSA provenance attestations, demonstrating that software signing and provenance mechanisms cannot fully protect organizations when the build pipeline itself is compromised. The incident reinforces the growing enterprise risk tied to third-party dependencies and the need for hardened CI/CD environments, least-privilege automation access, dependency monitoring, runtime detection, and rapid credential rotation after exposure.

*CI/CD – Continuous Integration / Continuous Deployment

Above is the attacker’s C2 over http /port 80

Above is the Youtube video mentioned by the attacker on the C2 site.

Next Steps

  • Block known C2 traffic (git-tanstack[.]com and *.getsession[.]org).
  • Hunt and block IOCs here and found under IOCs section of this article
    • router_init[.]js
    • setup_bun[.]js
    • bun_environment[.]js
    • Unexpected .github/workflows/*.yml changes
    • Unknown shell scripts in CI/CD runners
    • Large obfuscated JavaScript files
    • Hidden install scripts in npm packages
    • Suspicious preinstall / postinstall execution
  • Network IOC Hunting
    • Connections to:
      • 83.142.209[.]194
      • git-tanstack[.]com
      • filev2.getsession[.]org

If your organization believes it may have been impacted by this attack, our team of experts at FRSecure
are available to assist with digital forensic investigations and threat hunting engagements. FRSecure also offers complimentary incident triage services to help you assess the situation and discuss the best path forward.

For assistance, please contact CSIRT@FRSecure.com

Sources:

https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-a-self-spreading-supply-chain-attack-hits-the-npm-ecosystem

https://socket.dev/blog/tanstack-npm-packages-compromised-mini-shai-hulud-supply-chain-attack

https://safedep.io/mass-npm-supply-chain-attack-tanstack-mistral

https://www.endorlabs.com/learn/shai-hulud-compromises-the-tanstack-ecosystem-80-packages-compromised

https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised

https://www.wiz.io/blog/mini-shai-hulud-strikes-again-tanstack-more-npm-packages-compromised

Indicators of Compromise (IOCs)

Files

File NameHash
router_init.js (2,341,681 bytes)SHA256: ab4fcadaec49c03278063dd269ea5eef82d24f2124a8e15d7b90f2fa8601266c
router_init.js (2,339,346 bytes)SHA256: 2ec78d556d696e208927cc503d48e4b5eb56b31abc2870c2ed2e98d6be27fc96 SHA1: e7d582b98ca80690883175470e96f703ef6dc497
@tanstack/setup package.jsonSHA256: 7c12d8614c624c70d6dd6fc2ee289332474abaa38f70ebe2cdef064923ca3a9b
setup.mjs (5,047 bytes)SHA256: 2258284d65f63829bd67eaba01ef6f1ada2f593f9bbe41678b2df360bd90d3df
SHA1: 12f35b1081b17d21815b35feb57ab03d02482116
tanstack_runner.jsSHA256: 2ec78d556d696e208927cc503d48e4b5eb56b31abc2870c2ed2e98d6be27fc96
Trojanized tarballSHA256: 1e8538c6e0563d50da0f2e097e979ebd5294ce1defe01d0b9fe361ba3bed1898
opensearch_init.jsSHA1: 820fa07a7328b6cf2b417078e103721d4d8f2e79

Network

TypeIndicator [de-fanged]
C2 Domaingit-tanstack[.]com
Session Seed Nodesseed1.getsession.org, seed2.getsession.org, seed3.getsession[.]org
Session File Server
filev2.getsession[.]org
Session File Server148.251.177[.]112
Session Recipient ID
05f9e609d79eed391015e11380dee4b5c9ead0b6e2e7f0134e6e51767a87323026
C2 IP Address
83.142.209[.]194
PyPI Payload URL
git-tanstack.com/tmp/transformers[.]pyz

Additional IOCs

TypeIndicator [de-fanged]
Service Namegh-token-monitor
macOS Persistence~/Library/LaunchAgents/com.user.gh-token-monitor[.]plist
Linux Persistence~/.config/systemd/user/gh-token-monitor[.]service
Runtime Artifactrouter_runtime[.]js
Runtime Artifacttanstack_runner[.]js
Hookpreinstall: node setup[.]mjs
Git Dependencygithub:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c
Bun Version1.3.13
Repository DescriptionShai-Hulud: Here We Go Again
Commit MessageIfYouRevokeThisTokenItWillWipeTheComputerOfTheOwner
Destructive Commandrm -rf ~/

Affected packages

PyPi Packages

PackageAffected Versions
Guardrails ai0.10.1
Mistral ai2.4.6

npm Packages

PackageAffected Versions
@beproduct/nestjs-auth0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.1.10, 0.1.11, 0.1.12, 0.1.13, 0.1.14, 0.1.15, 0.1.16, 0.1.17, 0.1.18, 0.1.19
@cap-js/db-service2.10.1
@cap-js/postgres2.2.2
@cap-js/sqlite2.2.2
@dirigible-ai/sdk0.6.2, 0.6.3
@draftauth/client0.2.1, 0.2.2
@draftauth/core0.13.1, 0.13.2
@draftlab/auth0.24.1, 0.24.2
@draftlab/auth-router0.5.1, 0.5.2
@draftlab/db0.16.1, 0.16.2
@mesadev/rest0.28.3
@mesadev/saguaro0.4.22
@mesadev/sdk0.28.3
@mistralai/mistralai2.2.2, 2.2.3, 2.2.4
@mistralai/mistralai-azure1.7.1, 1.7.2, 1.7.3
@mistralai/mistralai-gcp1.7.1, 1.7.2, 1.7.3
@ml-toolkit-ts/preprocessing1.0.2, 1.0.3
@ml-toolkit-ts/xgboost1.0.3, 1.0.4
@opensearch-project/opensearch3.5.3, 3.6.2, 3.7.0, 3.8.0
@squawk/airport-data0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8
@squawk/airports0.6.2, 0.6.3, 0.6.4, 0.6.5, 0.6.6
@squawk/airspace0.8.1, 0.8.2, 0.8.3, 0.8.4, 0.8.5
@squawk/airspace-data0.5.3, 0.5.4, 0.5.5, 0.5.6, 0.5.7
@squawk/airway-data0.5.4, 0.5.5, 0.5.6, 0.5.7, 0.5.8
@squawk/airways0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6
@squawk/fix-data0.6.4, 0.6.5, 0.6.6, 0.6.7, 0.6.8
@squawk/fixes0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6
@squawk/flight-math0.5.4, 0.5.5, 0.5.6, 0.5.7, 0.5.8
@squawk/flightplan0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5.6
@squawk/geo0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.4.8
@squawk/icao-registry0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5.6
@squawk/icao-registry-data0.8.4, 0.8.5, 0.8.6, 0.8.7, 0.8.8
@squawk/mcp0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5
@squawk/navaid-data0.6.4, 0.6.5, 0.6.6, 0.6.7, 0.6.8
@squawk/navaids0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6
@squawk/notams0.3.6, 0.3.7, 0.3.8, 0.3.9, 0.3.10
@squawk/procedure-data0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7
@squawk/procedures0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5.6
@squawk/types0.8.1, 0.8.2, 0.8.3, 0.8.4, 0.8.5
@squawk/units0.4.3, 0.4.4, 0.4.5, 0.4.6, 0.4.7
@squawk/weather0.5.6, 0.5.7, 0.5.8, 0.5.9, 0.5.10
@supersurkhet/cli0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6, 0.0.7
@supersurkhet/sdk0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6, 0.0.7
@tallyui/components1.0.1, 1.0.2, 1.0.3
@tallyui/connector-medusa1.0.1, 1.0.2, 1.0.3
@tallyui/connector-shopify1.0.1, 1.0.2, 1.0.3
@tallyui/connector-vendure1.0.1, 1.0.2, 1.0.3
@tallyui/connector-woocommerce1.0.1, 1.0.2, 1.0.3
@tallyui/core0.2.1, 0.2.2, 0.2.3
@tallyui/database1.0.1, 1.0.2, 1.0.3
@tallyui/pos0.1.1, 0.1.2, 0.1.3
@tallyui/storage-sqlite0.2.1, 0.2.2, 0.2.3
@tallyui/theme0.2.1, 0.2.2, 0.2.3
@tanstack/arktype-adapter1.166.12, 1.166.15
@tanstack/eslint-plugin-router1.161.9, 1.161.12
@tanstack/eslint-plugin-start0.0.4, 0.0.7
@tanstack/history1.161.9, 1.161.12
@tanstack/nitro-v2-vite-plugin1.154.12, 1.154.15
@tanstack/react-router1.169.5, 1.169.8
@tanstack/react-router-devtools1.166.16, 1.166.19
@tanstack/react-router-ssr-query1.166.15, 1.166.18
@tanstack/react-start1.167.68, 1.167.71
@tanstack/react-start-client1.166.51, 1.166.54
@tanstack/react-start-rsc0.0.47, 0.0.50
@tanstack/react-start-server1.166.55, 1.166.58
@tanstack/router-cli1.166.46, 1.166.49
@tanstack/router-core1.169.5, 1.169.8
@tanstack/router-devtools1.166.16, 1.166.19
@tanstack/router-devtools-core1.167.6, 1.167.9
@tanstack/router-generator1.166.45, 1.166.48
@tanstack/router-plugin1.167.38, 1.167.41
@tanstack/router-ssr-query-core1.168.3, 1.168.6
@tanstack/router-utils1.161.11, 1.161.14
@tanstack/router-vite-plugin1.166.53, 1.166.56
@tanstack/solid-router1.169.5, 1.169.8
@tanstack/solid-router-devtools1.166.16, 1.166.19
@tanstack/solid-router-ssr-query1.166.15, 1.166.18
@tanstack/solid-start1.167.65, 1.167.68
@tanstack/solid-start-client1.166.50, 1.166.53
@tanstack/solid-start-server1.166.54, 1.166.57
@tanstack/start-client-core1.168.5, 1.168.8
@tanstack/start-fn-stubs1.161.9, 1.161.12
@tanstack/start-plugin-core1.169.23, 1.169.26
@tanstack/start-server-core1.167.33, 1.167.36
@tanstack/start-static-server-functions1.166.44, 1.166.47
@tanstack/start-storage-context1.166.38, 1.166.41
@tanstack/valibot-adapter1.166.12, 1.166.15
@tanstack/virtual-file-routes1.161.10, 1.161.13
@tanstack/vue-router1.169.5, 1.169.8
@tanstack/vue-router-devtools1.166.16, 1.166.19
@tanstack/vue-router-ssr-query1.166.15, 1.166.18
@tanstack/vue-start1.167.61, 1.167.64
@tanstack/vue-start-client1.166.46, 1.166.49
@tanstack/vue-start-server1.166.50, 1.166.53
@tanstack/zod-adapter1.166.12, 1.166.15
@taskflow-corp/cli0.1.24, 0.1.25, 0.1.26, 0.1.27, 0.1.28, 0.1.29
@tolka/cli1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6
@uipath/access-policy-sdk0.3.1
@uipath/access-policy-tool0.3.1
@uipath/admin-tool0.1.1
@uipath/agent-sdk1.0.2
@uipath/agent-tool1.0.1
@uipath/agent.sdk0.0.18
@uipath/aops-policy-tool0.3.1
@uipath/ap-chat1.5.7
@uipath/api-workflow-tool1.0.1
@uipath/apollo-core5.9.2
@uipath/apollo-react4.24.5
@uipath/apollo-wind2.16.2
@uipath/auth1.0.1
@uipath/case-tool1.0.1
@uipath/cli1.0.1
@uipath/codedagent-tool1.0.1
@uipath/codedagents-tool0.1.12
@uipath/codedapp-tool1.0.1
@uipath/common1.0.1
@uipath/context-grounding-tool0.1.1
@uipath/data-fabric-tool1.0.2
@uipath/docsai-tool1.0.1
@uipath/filesystem1.0.1
@uipath/flow-tool1.0.2
@uipath/functions-tool1.0.1
@uipath/gov-tool0.3.1
@uipath/identity-tool0.1.1
@uipath/insights-sdk1.0.1
@uipath/insights-tool1.0.1
@uipath/integrationservice-sdk1.0.2
@uipath/integrationservice-tool1.0.2
@uipath/llmgw-tool1.0.1
@uipath/maestro-sdk1.0.1
@uipath/maestro-tool1.0.1
@uipath/orchestrator-tool1.0.1
@uipath/packager-tool-apiworkflow0.0.19
@uipath/packager-tool-bpmn0.0.9
@uipath/packager-tool-case0.0.9
@uipath/packager-tool-connector0.0.19
@uipath/packager-tool-flow0.0.19
@uipath/packager-tool-functions0.1.1
@uipath/packager-tool-webapp1.0.6
@uipath/packager-tool-workflowcompiler0.0.16
@uipath/packager-tool-workflowcompiler-browser0.0.34
@uipath/platform-tool1.0.1
@uipath/project-packager1.1.16
@uipath/resource-tool1.0.1
@uipath/resourcecatalog-tool0.1.1
@uipath/resources-tool0.1.11
@uipath/robot1.3.4
@uipath/rpa-legacy-tool1.0.1
@uipath/rpa-tool0.9.5
@uipath/solution-packager0.0.35
@uipath/solution-tool1.0.1
@uipath/solutionpackager-sdk1.0.11
@uipath/solutionpackager-tool-core0.0.34
@uipath/tasks-tool1.0.1
@uipath/telemetry0.0.7
@uipath/test-manager-tool1.0.2
@uipath/tool-workflowcompiler0.0.12
@uipath/traces-tool1.0.1
@uipath/ui-widgets-multi-file-upload1.0.1
@uipath/uipath-python-bridge1.0.1
@uipath/vertical-solutions-tool1.0.1
@uipath/vss0.1.6
@uipath/widget.sdk1.2.3
agentwork-cli0.1.4, 0.1.5
cmux-agent-mcp0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8
cross-stitch1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7
git-branch-selector1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7
git-git-git1.0.8, 1.0.9, 1.0.10, 1.0.11, 1.0.12
guardrails-ai0.10.1
intercom-client7.0.4
lightning2.6.2, 2.6.3
mbt1.2.48
mistralai2.4.6
ml-toolkit-ts1.0.4, 1.0.5
nextmove-mcp0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7
safe-action0.8.3, 0.8.4
ts-dna3.0.1, 3.0.2, 3.0.3, 3.0.4, 3.0.5
wot-api0.8.1, 0.8.2, 0.8.3, 0.8.4



Reach out to our incident response team for help

More To Explore

Threats

Mini Shai-Hulud: The Worm That Ate npm

Fear Is the Dependency Killer. The “Mini Shai-Hulud” attack highlights how modern software supply chain threats are evolving beyond stolen developer credentials into direct compromise

Information Security News – 5/11/26

Hackers Steal Students’ Data During Breach at Education Tech Giant Instructure Article Link: https://techcrunch.com/2026/05/05/hackers-steal-students-data-during-breach-at-education-  tech-giant-instructure/ DigiCert Revokes Certificates After Support Portal Hack Article Link: https://www.securityweek.com/digicert-revokes-certificates-after-support-portal-hack/

Do You Want to Shore Up Your Defenses?

We're opening our first round of threat hunting engagements to 100 organizations. Sign up or join the wait list here.