
On Nov. 24, safety agency Aikido detected a second wave of the Shai-Hulud self-replicating npm worm, compromising 492 packages with a mixed 132 million month-to-month downloads.
The assault struck main ecosystems, together with AsyncAPI, PostHog, Postman, Zapier, and ENS, exploiting the ultimate weeks earlier than npm’s Dec. 9 deadline to revoke legacy authentication tokens.
Aikido’s triage queue flagged the intrusion round 3:16 AM UTC, as malicious variations of AsyncAPI’s go-template and 36 associated packages started spreading throughout the registry.
The attacker labeled stolen-credential repositories with the outline “Sha1-Hulud: The Second Coming,” sustaining theatrical branding from the September marketing campaign.
The worm installs the Bun runtime throughout package deal setup, then executes malicious code that searches developer environments for uncovered secrets and techniques utilizing TruffleHog.
Compromised API keys, GitHub tokens, and npm credentials are printed to randomly named public repositories, and the malware makes an attempt to propagate by pushing new contaminated variations to as much as 100 extra packages, 5 occasions the size of the September assault.
Technical evolution and harmful payload
The November iteration introduces a number of modifications from the September assault.
The malware now creates repositories with randomly generated names for stolen knowledge relatively than utilizing hardcoded names, complicating takedown efforts.
Setup code installs Bun through setup_bun.js earlier than executing the first payload in bun_environment.js, which comprises the worm logic and credential-exfiltration routines.
Probably the most harmful addition: if the malware can not authenticate with GitHub or npm utilizing stolen credentials, it wipes all information within the person’s dwelling listing.
Aikido’s evaluation revealed execution errors that restricted the assault’s unfold. The bundling code that copies the total worm into new packages typically fails to incorporate bun_environment.js, leaving solely the Bun set up script with out the malicious payload.
Regardless of these failures, the preliminary compromises hit high-value targets with huge downstream publicity.
AsyncAPI packages dominated the primary wave, with 36 compromised releases together with @asyncapi/cli, @asyncapi/parser, and @asyncapi/generator.
PostHog adopted at 4:11 AM UTC, with contaminated variations of posthog-js, posthog-node, and dozens of plugins. Postman packages arrived at 5:09 AM UTC.
The Zapier compromise affected @zapier/zapier-sdk, zapier-platform-cli, and zapier-platform-core, whereas the ENS compromise affected @ensdomains/ensjs, @ensdomains/ens-contracts, and ethereum-ens.
GitHub department creation suggests repository-level entry
The AsyncAPI workforce found a malicious department of their CLI repository created instantly earlier than the compromised packages appeared on npm.
The department contained a deployed model of the Shai-Hulud malware, indicating the attacker gained write entry to the repository itself relatively than merely hijacking npm tokens.
This escalation mirrors the method used within the authentic Nx compromise, through which attackers modified supply repositories to inject malicious code into professional construct pipelines.
Aikido estimates that 26,300 GitHub repositories now comprise stolen credentials marked with the “Sha1-Hulud: The Second Coming” description.
The repositories comprise secrets and techniques uncovered by developer environments that ran the compromised packages, together with cloud service credentials, CI/CD tokens, and authentication keys for third-party APIs.
The general public nature of the leaks amplifies the injury: any attacker monitoring the repositories can harvest credentials in actual time and launch secondary assaults.
Assault timing and mitigation
The timing coincides with npm’s Nov. 15 announcement that it’ll revoke basic authentication tokens on Dec. 9.
The attacker’s option to launch a closing large-scale marketing campaign earlier than the deadline suggests they acknowledged the window for token-based compromises was closing. Aikido’s timeline exhibits the primary Shai-Hulud wave started Sept. 16.
The Nov. 24 “Second Coming” represents the attacker’s final alternative to take advantage of legacy tokens earlier than npm’s migration cuts off that entry.
Aikido recommends that safety groups audit all dependencies from affected ecosystems, notably the Zapier, ENS, AsyncAPI, PostHog, and Postman packages put in or up to date after Nov. 24.
Organizations ought to rotate all GitHub, npm, cloud, and CI/CD secrets and techniques utilized in environments the place these packages had been current, and search GitHub for repositories with the “Sha1-Hulud: The Second Coming” description to find out if inner credentials had been uncovered.
Disabling npm postinstall scripts in CI pipelines prevents future install-time execution, and pinning package deal variations with lock information limits publicity to newly compromised releases.

