A new malicious worm has shaken the software world, and its impact has stretched all the way into crypto related domains. The attack started as a supply-chain intrusion targeting npm packages, but because so many Web3 tools depend on JavaScript libraries, the worm’s effects quickly spilled into the crypto ecosystem. In simple terms, a worm called Shai-Hulud slipped into popular npm packages, spread through developer environments, stole secrets like tokens and API keys, and even attempted to publish new infected versions of other packages. What makes this attack so concerning is how quietly it moved and how deeply it reached into key software used by crypto teams and domain services.
The latest wave of this worm was detected on November 24 when security researchers from Aikido noticed odd behavior inside Async API packages on npm. This discovery opened a trail that revealed something much bigger: more than 490 infected npm packages tied to the worm, together responsible for over 132 million monthly downloads. Many of the compromised libraries connect to tools used by Web3 developers, such as ENS domain integrations, automation platforms like Zapier, and SDKs that underpin crypto dashboards or APIs. Even though the worm was not directly targeting blockchains, its presence in the supply chain meant it had the power to affect any service depending on these libraries including crypto domain managers and related infrastructure.
So how did this worm actually work? The process was surprisingly simple and incredibly sneaky. When a developer installed one of the infected packages, the worm automatically installed Bun, a JavaScript runtime similar to Node.js. That might not sound suspicious—lots of developers experiment with Bun but here it was used to run hidden malicious scripts. Those scripts scanned the user’s system for secrets, looked for API keys, and tried to gather GitHub and npm credentials. To make matters worse, the worm used TruffleHog, a legitimate open-source security tool normally used to find leaked credentials. In this case, TruffleHog was turned into a weapon that searched every corner of a developer’s machine for anything valuable.
Once the worm gathered sensitive credentials, it pushed the stolen data to random public GitHub repositories controlled by the attacker. Earlier versions of the worm used predictable repo names; this time, everything was randomized, making tracking and cleanup significantly harder. With stolen tokens in hand, the worm then tried to publish more infected packages, targeting up to 100 additional projects per compromised machine, dramatically increasing its reach. The result was a fast-spreading, self-replicating attack capable of hitting huge parts of the software ecosystem with almost no noise.