A Year of Earned Trust, Then Two Hours of Propagation
The build layer was compromised through reputation rather than code, which is why every control most teams bought for supply-chain defence returned clean while the payload spread.
CyberScoop reports Amazon's researchers traced the axios, debug and chalk compromises back to a live-fire rehearsal in an obscure package called typo-crypto in March 2025. The operators then waited more than a year before escalating to high-dependency targets. They were not hunting a vulnerability. They were accumulating maintainer reputation until they held legitimate publish permissions.
Three controls failed in sequence. Composition tooling triages by download count and CVSS, so twelve months of activity below the popularity threshold produced no early warning. The publish event looked identical to every other publish from that maintainer, so no anomalous-credential signal fired. Per Cyberpresso, the payloads were multi-stage, platform-specific and conditionally activated, obfuscated deliberately to extend analyst dwell time. Sandbox detonation returns clean. IOCs land after the exposure window closes.
What actually reached the estate
The compromised axios added a dependency named plain-crypto-js. Its post-install script contacted a hardcoded command-and-control host and staged a cross-platform remote-access trojan for Windows, macOS and Linux. Wiz telemetry recorded roughly one in ten cloud environments tainted within about two hours, against axios alone drawing near 100 million weekly pulls. Nobody typed an install command at that speed. Automated dependency resolution in CI/CD did the distribution.
Propagation velocity, not download count, is now the correct blast-radius metric for a supply-chain event.
Where the sources agree, and where the work gets expensive
Cyberpresso and CyberScoop reach the same conclusion. The failing control was maintainer identity hardening, not scanning. Both push the hunt past the dependency graph into the build plane. CI runners hold cloud credentials, npm tokens and signing keys with the thinnest telemetry in the estate. That multiplier is what the operator was buying. CyberScoop recommends extending the hunt window 18 months or more, on account of the March 2025 rehearsal.
One divergence matters operationally. Cyberpresso frames this as patch-and-freeze driven by Amazon Inspector advisories and OSV. CyberScoop frames it as a compromise assessment with no clean closure criterion. Take the second framing. Pinning to known-good versions does not clean poisoned container images already sitting in the registry, and it does not revoke a token a post-install script has already read.
The control that would have caught it
A mandatory 7-to-14 day version-adoption cooldown in an internal registry proxy converts a zero-day supply-chain push into a detectable event before it reaches a build. Paired with npm ci --ignore-scripts as the CI default and integrity-verified lockfile pinning, it is the cheapest structural answer available, and it works against the next hijacked maintainer, whose name is not yet public.
What to do
Diff every lockfile and running node_modules against known-good versions of axios, debug, chalk and typo-crypto, grep repos and container images for plain-crypto-js, then rebuild every artifact produced during the exposure window.
Run a compromise assessment on CI runners and developer endpoints over an 18-month window, hunting post-install script execution, node processes spawning shells or curl, and reads of npm tokens or cloud credential files.
Enforce a 7-14 day version-adoption cooldown plus provenance checks in the internal registry proxy and set --ignore-scripts as the CI default before the end of the quarter.