Press TechRound interviews Secure.com CEO on the future of AI security
Read

A Self-Spreading Worm Just Poisoned 400+ npm Packages. One Install Was All It Took

A worm called ChainDrop poisoned 400+ npm packages with 2 billion monthly downloads and stole developer secrets.

Dateline: August 8, 2026

It started at 9 in the morning. By lunchtime, more than 1,500 poisoned software versions had flooded the world’s biggest code library. No one had to click a bad link. No one got tricked by a fake email. Developers just ran a normal install, and a worm slipped in.

The campaign is called ChainDrop, and it hit packages that get billions of downloads every month.

What Happened?

On August 4, an attacker took over the account of a developer who maintains a popular code library. That library helps apps store and grab data quickly. It alone pulls in more than 100 million downloads a week.

Once inside, the attacker pushed bad files straight to the project and cut a fresh release. Because the release was signed through the normal build pipeline, it looked legit. That is what made it so dangerous.

The poisoned code carried a worm. Security teams traced it to the Shai-Hulud malware family, the same lineage behind earlier waves this year. This version earned a new name because it hides its command server inside the Ethereum blockchain, a trick that makes it harder to shut down.

Here is the nasty part. The malware runs during install, before your app code ever loads. So a routine build or dependency update was enough to set it off. Once running, it hunts for secrets.

  • npm tokens.
  • GitHub tokens.
  • Cloud keys.
  • Kubernetes configs.
  • Vault tokens.

It grabs them, encrypts them, and ships them out. Then it uses those stolen keys to jump to the next maintainer and spread on its own. Within hours, more than 400 packages were hit. Some trackers put the count far higher.

What’s the Impact?

The reach here is huge. The affected packages add up to roughly 2 billion downloads a month. These are not obscure tools. They are the plumbing sitting under thousands of Node.js projects, including code tied to well-known companies.

If a poisoned version landed in your build, the damage does not stop at your code. The worm treats your developer machine or your build server as a doorway. From there it reaches into your cloud accounts and your secret stores.

And because it copies itself using stolen credentials, one compromised laptop can seed the next round of attacks. That is how 11 starter packages turned into hundreds in a couple of hours.

ChainDrop npm Worm

Indicators of Compromise

Defensive reference only. This campaign is still moving, so package and version lists keep growing. Pull the live, full package list from the vendor trackers before you scope your exposure. Treat any machine that installed an affected version as compromised.

Network

TypeIndicatorNote
Domainnpm-cache[.]comData exfiltration endpoint
User agentBun/1.3.13Seen on malicious calls
C2 methodEthereum smart contract (EtherHiding)Used to fetch C2 domains dynamically

File and Package Artifacts

TypeIndicatorNote
Filesetup.mjsLoader launched by preinstall hook
Filemath_init.jsObfuscated loader file
Behaviorpreinstall lifecycle hookRuns the payload during install, before app code loads
PayloadLarge obfuscated Bun JavaScript bundleMini Shai-Hulud variant
Release patternPatch bump with no matching source commit, PR, or tagTarball modified and published directly

Exfiltration Behavior

TypeIndicatorNote
Repo descriptionShai-Hulud: Here We Go AgainAttacker-created public GitHub repos holding stolen data
Targeted secretsnpm and GitHub tokens, AWS keys, Kubernetes configs, HashiCorp Vault tokens, SSH keysEncrypted then exfiltrated

Earliest Known Malicious Release

TypeIndicatorNote
Timeline2026-08-04, first malicious release near 09:35 UTCBurst of malicious versions roughly 09:40 to 11:44 UTC
Seed packageskeyv, cacheable, flat-cache, file-entry-cache and their dependentsConfirm live version lists with vendor trackers

Sources: Wiz, Microsoft Threat Intelligence, Semgrep, StepSecurity, Aikido Security. Full and current package lists are published by Wiz, StepSecurity, Aikido, Socket, and Ox Security. Verify all indicators against these primary trackers before acting.

How to Avoid This

  • Turn off install scripts in your build pipeline. Adding the ignore-scripts flag would have blocked the preinstall step that delivers this payload.
  • Set a minimum age on new package versions. Most package managers now let you wait 3 to 7 days before pulling a fresh release. That buys time for bad versions to get caught.
  • Rebuild any machine that installed an affected version. Do not just remove the package. Rotate every token, key, and secret that machine could reach.
  • Use allowlists, integrity checks, and provenance controls so a poisoned version cannot sneak in unnoticed.
  • Check the IOC list below and match it against your build logs and lockfiles.

Your Weakest Dependency Is Already Inside Your Build

ChainDrop proves that attackers no longer need to breach you. They just wait for you to install their code.

Secure.com’s Digital Security Teammates help you close that gap:

  • Scan dependencies in your pipeline and flag risky packages before they ship
  • Detect exposed secrets in code and trigger rotation workflows fast
  • Track third-party and supply chain risk in one register with clear ownership
  • Block deployments tied to known-bad or unpatched components until they are fixed
  • Keep watching after install, so a poisoned update does not sit quietly in your stack