top of page

Inside the September 2025 npm Supply-Chain Attack

  • Writer: Akshay Jain
    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:

  1. Phishing: A fake email from support@npmjs.help convinced the maintainer to reset 2FA, handing attackers full access.

  2. Account Takeover: Using the compromised credentials, attackers published new package versions under legitimate names.

  3. Stealthy Payload: Small obfuscated snippets were injected into index.js files. These ran only in browser contexts, modifying network APIs and crypto wallet behavior.


npm supply chain attack 2025
npm supply chain attack 2025

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

Rated 0 out of 5 stars.
No ratings yet

Add a rating
bottom of page