Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Malicious package

@ethers-js/contractsnpm

@ethers-js/contracts is a confirmed malicious npm package (MAL-2026-13937) that typosquats a legitimate package to trick installs (malicious version 6.9.0). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in @ethers-js/contracts (npm)

MAL-2026-13937
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall @ethers-js/contracts

What this malware does

Package impersonates the ethers project (real releases publish under ethers and @ethersproject/*, not @ethers-js). The postinstall lifecycle script in scripts/postinstall.js is obfuscated with \x-hex-encoded identifiers (require('fs'), require('https'), spawn('powershell',...)) and a base64-encoded download URL. On Windows, it decodes the URL to https://files.catbox.moe/7vixtr.zip, downloads the archive into %LOCALAPPDATA%\Microsoft<random>, extracts it via PowerShell Expand-Archive, and then invokes a bundled pythonw.exe against r.py with {detached:true, windowsHide:true} and.unref(), executing attacker-controlled code hidden from the user on npm install.

Malicious versions

1 flagged
6.9.0

Indicators of compromise (SHA-256)

06aee7d1e943a9d9a705acf4f28286eb5460ab9a56057a0811274787478f7c68

Detection & response playbook

Typosquat
  1. Find it

    Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for @ethers-js/contracts (version 6.9.0). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging @ethers-js/contracts across your stack and pipelines.

  2. If you installed it — respond

    @ethers-js/contracts is a typosquat — you almost certainly intended a legitimately-named package. Remove @ethers-js/contracts, install the correct package, and rotate any secrets exposed during the install since post-install scripts may have already run.

  3. Did it already run?

    If @ethers-js/contracts was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.

  4. How O3 protects you

    O3 blocks @ethers-js/contracts before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.

Frequently asked questions

No. @ethers-js/contracts on npm has been identified as a malicious package (version 6.9.0 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-017648

References

Credits

  • Amazon Inspector · finder

Detect & block this

O3 blocks @ethers-js/contracts-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the malicious outbound activity and severs the channel.

Explore

@ethers-js/contracts (npm) malicious package — MAL-2026-13937 | O3 Security