Open Source · · 4 days

'is' npm package shipped Scavenger

The npnjs.com phishing campaign hijacked maintainer access for the popular is package. Attackers used social engineering to regain npm access and ship Scavenger malware through trusted releases.

Part of npnjs.com phishing backdoored npm packages campaign

On July 19, 2025, attackers used a hijacked maintainer account to publish two malicious versions of is, a tiny type-checking utility that pulls roughly 2.8 million downloads a week and sits deep in the dependency trees of countless Node.js projects. Unlike the Windows-only DLL droppers that had ridden the npm phishing wave the day before, this payload was pure JavaScript and ran anywhere Node.js did.

The compromise extended a campaign that had begun a day earlier with phished credentials for the eslint-config-prettier maintainer. According to Jordan Harband, a longtime steward of dozens of foundational JavaScript packages, the attacker took ownership of is by social-engineering its prior maintainer through npm's account-recovery flow, then emailed Harband asking to be re-added. Malware was published the next morning.

Socket's analysis of is@5.0.0 described a cross-platform loader rather than the Scavenger DLL family. The package decoded an embedded payload using a custom 94-character alphabet, reconstructed it in memory, and ran it through new Function, leaving no readable artifact on disk. The decoded code gathered hostname, operating system, CPU, and environment data, dynamically imported the ws library, and opened a WebSocket back to attacker-controlled infrastructure. Anything the server pushed down that channel was passed straight to a JavaScript evaluator, turning every install into a live remote shell on macOS, Linux, or Windows.

The malicious versions were deprecated and pulled from npm within hours, though detection took longer than the earlier Prettier-tooling publishes because nothing about the install behavior looked Windows-specific. Operators who installed 3.3.1 or 5.0.0 were advised to rotate any credential reachable from the affected host.

Appendix · Affected releases

is npm fixed 3.3.2
3.3.1 sha256 64460493…691cea9d download unavailable
5.0.0 sha256 e47038e6…5fb3450c download unavailable
  • No clean 5.x release was published after 5.0.0; the documented remediation is to use 3.3.2 or later (or remain on the clean 3.3.x line).
  • The SHA-256 values identify the complete 3.3.1 and 5.0.0 npm tarballs recovered through original Wayback replay, in version order.

References

  1. Supply Chain Security Alert - eslint-config-prettier Package Shows Signs of Compromisestepsecurity.io
  2. Another npm Supply Chain Attack - The is Package Compromisestepsecurity.io
  3. npm is Package Hijacked in Expanding Supply Chain Attacksocket.dev

Source record: oss/attacks/is/meta.yaml