Inside the September 2025 npm Supply-Chain Attack
- Akshay Jain
- 2 days ago
- 2 min read
Updated: 13 hours ago
On September 8 - 9, 2025, attackers successfully phished a well-known npm maintainer (“Qix”), gained access to his account, and published malicious versions of 18 widely used JavaScript packages including chalk, debug, and ansi-styles. These packages collectively see 2 - 2.6 billion downloads per week, making this one of the largest supply chain compromises in open source history.
The malicious code was designed to run in browsers, hooking functions like fetch, XMLHttpRequest, and Web3 wallet APIs to intercept and rewrite cryptocurrency transactions. The attack was detected within hours, and most packages were removed quickly, but not before they propagated into downstream projects and build pipelines.
NPM Supply Chain Attack 2025 - Incident Timeline
Sep 8, 13:16 UTC - First malicious versions detected by security vendors.
Sep 8 afternoon - Vendors confirm 18 compromised packages; npm registry begins removal.
Sep 8 - 9 - SaaS providers (e.g., Vercel) purge caches, notifying impacted teams.
Sep 9 - Public confirmation of phishing attack as initial vector: a spoofed email from support@npmjs.help triggered a 2FA reset on the maintainer’s account.
Root Cause
The compromise followed a classic supply-chain attack sequence:
Phishing: A fake email from support@npmjs.help convinced the maintainer to reset 2FA, handing attackers full access.
Account Takeover: Using the compromised credentials, attackers published new package versions under legitimate names.
Stealthy Payload: Small obfuscated snippets were injected into index.js files. These ran only in browser contexts, modifying network APIs and crypto wallet behavior.

Affected Packages
Malicious versions affected by the npm supply chain attack 2025:
ansi-styles@6.2.2
debug@4.4.2
chalk@5.6.1
supports-color@10.2.1
strip-ansi@7.1.1
ansi-regex@6.2.1
wrap-ansi@9.0.1
color-convert@3.1.1
color-name@2.0.1
is-arrayish@0.3.3
slice-ansi@7.1.1
color@5.0.1
color-string@2.1.1
simple-swizzle@0.2.3
supports-hyperlinks@4.1.1
has-ansi@6.0.1
chalk-template@1.1.1
backslash@0.2.1
These packages are deeply embedded across the ecosystem, appearing in build tools, frameworks, and transitive dependencies.
Were Funds Stolen?
While the malware clearly targeted crypto wallets, confirmed large scale theft has not yet been reported. Analysts suggest the potential blast radius is far larger than any confirmed losses, making operational risk and cleanup costs the true impact.
Key Takeaways
Supply-chain attacks are evolving, even utility packages are high-value targets.
People (maintainers) are the weakest link; phishing remains the entry point.
Blue teams need both prevention (MFA, provenance) and detection (SBOM scans, runtime telemetry).
Comments