Open Source ·

Qix npm account shipped wallet drainers

Attackers phished Qix through npmjs.help and published malicious releases across widely used npm packages. Browser bundles could redirect crypto transactions.

Part of Qix phishing shipped wallet drainers campaign

On September 8, 2025, attackers used a phished npm publishing credential belonging to Josh Junon, the developer known online as Qix, to push malicious releases of debug, chalk, and roughly two dozen other foundational JavaScript utilities. By aggregate weekly downloads, the affected packages reached close to two billion installs per week, making it one of the largest npm supply-chain incidents on record by exposure surface, though as researchers at Wiz, Aikido, and StepSecurity all emphasized in their post-incident write-ups, raw download counts measure reach, not confirmed victims.

debug and chalk are tiny, ubiquitous Node.js libraries that handle logging-level toggles and terminal color codes. Most JavaScript developers use them indirectly through the transitive-dependency graph of nearly every popular framework on npm. The packages had been maintained for years by Junon, whose npm account also covered ansi-regex, strip-ansi, wrap-ansi, ansi-styles, backslash, error-ex, and other terminal utilities. The phish that took his account, delivered through a convincing replica of npm's support pages hosted at npmjs.help, impersonated a routine two-factor reset prompt.

The injected payload, analyzed by Qualys and Aikido, was a browser-side cryptocurrency drainer. When bundled into a web application and executed in a user's browser, it hooked the standard Web3 wallet interfaces and watched for transactions on Ethereum, Bitcoin, Solana, Tron, Litecoin, and several other chains, rewriting destination addresses and approval payloads to attacker-controlled values before they were signed. Server- side Node.js installs received the tainted code as well, but the theft path required the package to make it into a deployed browser bundle.

Cleanup was unusually broad. Operators had to remove the bad versions from npm caches and lockfiles, scrub node_modules directories, and rebuild and redeploy any client-side bundle that had pulled in one of the affected packages during the publishing window. Follow-on packages taken over through credentials harvested in the same campaign are grouped under the qix-npm-phishing-2025 campaign; this record covers only the packages published directly from the Qix npm account.

Notes

  • Public reporting described roughly two billion aggregate weekly downloads for affected packages; that is exposure context, not a confirmed victim count.

Appendix · Affected releases

6.2.1 sha256 480ed7ee…cb604f1c download unavailable
6.2.2 sha256 94a90085…1d06f531 download unavailable
backslash npm
0.2.1 sha256 2a30fb9f…2fa227a5 download unavailable
chalk npm
5.6.1 sha256 4598e444…6d5a6947 download unavailable
color npm
5.0.1 sha256 c960bbd4…868761ab download unavailable
2.0.1 sha256 cb1995d0…ec78a557 download unavailable
2.1.1 sha256 8fa4618f…601de33c download unavailable
debug npm
4.4.2 sha256 44c1e319…5621bead download unavailable
error-ex npm fixed 1.3.4
1.3.3 sha256 5965aec6…165ec89b download unavailable
has-ansi npm
6.0.1 sha256 a5c59b2d…3e4d19fa download unavailable
0.3.3 sha256 c03496f3…3ccac2f6 download unavailable
7.1.1 sha256 136ab3f7…ed58de7d download unavailable
7.1.1 sha256 fbd6b990…f66ad4ab download unavailable
wrap-ansi npm
9.0.1 sha256 d23ae409…8a30de63 download unavailable

References

  1. Widespread npm Supply Chain Attack Breaking Down Impact Scope Across debug, chalkwiz.io
  2. npm debug and chalk packages compromisedaikido.dev
  3. 20+ Popular NPM Packages Compromisedstepsecurity.io
  4. When Dependencies Turn Dangerous: Responding to the NPM Supply Chain Attackblog.qualys.com
  5. [email protected] contains malware after npm account takeovergithub.com

Source record: oss/attacks/qix-npm-account/meta.yaml