The Shai-Hulud npm worm didn't fake its security check — it earned a legitimate one
An attacker on Tuesday took over the GitHub account of the developer who maintains keyv , a small key-value storage library that npm serves roughly 127 million times a week. Within hours, poisoned versions of keyv and its sibling caching packages were live on npm, carrying a credential-stealing worm. By midday, security firm Aikido counted at least 868 compromised packages across 1,381 versions,…
The Shai-Hulud npm worm managed to bypass its security check by earning a legitimate one, according to security firm Aikido. The attack resulted in compromised packages across 1,381 versions, with a total of over two billion monthly installs. The initial poisoned releases were not forged, but earned the valid provenance signatures as legitimate releases would.
This incident highlights the vulnerabilities within the software supply chain, specifically npm packages, which are now at the center of malicious software registry threats. The attacker took advantage of the developer's GitHub account and pushed malicious files to the main branch, creating a new release through the maintainer's own GitHub Actions workflow.
This release generated a legitimate provenance attestation, making it appear authentic to auditors. The worm then spread through developers' environments, harvesting credentials and using npm publishing tokens to backdoor other packages controlled by the victim. The malware also dropped persistence payloads into common directories on infected machines, allowing it to run when developers opened the infected project in their editor or started an AI coding session.
The fix for this vulnerability costs nothing and involves securing the software supply chain by not allowing tooling to pull down the most recent dependencies, but instead using older versions for a week to provide security community time to detect and address any potential poisoning.
Written by urgent.news from VentureBeat's reporting — not their text. Machine-written — it may contain errors, so check the original before relying on it.