The Shai-Hulud worm now hunts 469 credential locations, up from 189
GitGuardian found the latest Shai-Hulud variant scanning 469 paths for secrets across developer machines, CI/CD, cloud config, and AI tool settings. The npm worm spreads using the credentials it finds, with no human operator in the loop.
GitGuardian researchers found that the current Shai-Hulud variant scans 469 distinct locations for credentials, up from 189 in earlier versions. The new paths cover developer workstations, CI/CD tooling, cloud configuration, and the config files of AI coding assistants. Shai-Hulud is a self-propagating npm worm: it compromises packages, harvests secrets from the build environments that install them, and uses those secrets to publish further compromised packages, with no human operator directing it. It exploits no vulnerability. It collects what is already sitting in .env files, cloud credential files, HashiCorp Vault tokens, and assistant configuration.
Why it matters
The path count is the interesting metric, because it is a direct measurement of how many places a working developer environment stores a long-lived secret. Going from 189 to 469 in a few months is not the worm getting cleverer so much as the industry adding new places to leave credentials lying around, AI tooling being the most recent contributor.
Shai-Hulud only works because secrets are static, discoverable, and reusable. Remove any one of those three and the propagation stops. Short-lived credentials break reusability, so a harvested token expires before the worm can publish with it. OIDC-based workload identity in CI removes the stored secret entirely, which defeats discoverability. Scoping a publish token to one package limits what a successful theft buys.
This is the same lesson as the n8n token leak and the GitHub issue that reached CI secrets: the technique is secrets in repositories and CI, and the control is never detection. Rotate what a build can see, on a clock shorter than an attacker's dwell time, and the 469 locations stop mattering.
Source: The Hacker News
Related on Start with Identity
- BlogOne ConnectWise app credential opened Microsoft 365 tenants across MSP customers
Huntress found an attacker signing in as the ConnectWise Cloud Backup (formerly SkyKick) Entra app with a stolen app credential, pulling Microsoft Graph tokens
- BlogPoisoned LiteLLM 1.107.0 shipped a credential stealer to PyPI and Docker for under three hours
LiteLLM said on October 21 that attackers published a malicious litellm 1.107.0 to PyPI, Docker Hub and GHCR, built from a lookalike Berri-AI/litellm repository
- BlogGitLab's incoming email address is a non-expiring token that commits code and runs CI as you
Aikido Security showed that the personal address GitLab issues for creating issues by email can also open merge requests that GitLab commits in your name and ca
- CVEOver-scoped CodeBuild GitHub token let an attacker ship code in Amazon Q Developer 1.84.0
An inappropriately scoped GitHub token in the CodeBuild configuration for the Amazon Q Developer VS Code extension let an attacker commit code that shipped auto
- CVEtj-actions/changed-files tags repointed to dump CI secrets into logs
An attacker repointed tj-actions/changed-files version tags to a commit that read the GitHub Actions runner's memory and printed its secrets into workflow logs.
- CVETrivy release and GitHub Action tags hijacked to steal CI secrets
With credentials left valid by a non-atomic rotation, an attacker shipped a malicious Trivy v0.69.4 and repointed 76 of 77 trivy-action tags to code that dumped