A prominent open-source maintainer was phished, letting an attacker push malware into 18 npm packages that underpin countless JavaScript projects. Security firms tracking the incident say the packages collectively see more than 2 billion weekly downloads, underscoring how a single compromised account can ripple through the software supply chain.
The maintainer, identified as Josh Junon, said the intruder gained access via a convincing two-factor authentication lure that spoofed official branding and domain cues. The malicious releases were quickly flagged and pulled, but the episode highlights just how thin the margin for error is in modern dependency-driven development.

How the Phishing Campaign Opened the Door
According to Aikido Security, the attacker distributed emails that mimicked registry notifications, directing recipients to a lookalike domain crafted to harvest credentials and one-time codes. With that foothold, the adversary published tainted versions of widely used modules involved in tasks like text styling and font handling.
GitHub, which operates the npm registry, has expanded multifactor authentication requirements in recent years, but well-executed phishing can still sidestep defenses if users are pressured into real-time approvals. The use of a deceptive domain with official logos made the lure especially persuasive.
Scope and Real-World Impact
While Aikido Security described the event as one of the largest npm supply-chain compromises by package count and download velocity of the affected ecosystem, early telemetry suggests limited blast radius. Semgrep reported that the malicious versions were available briefly and, based on npm data, saw negligible or zero downloads before removal.
BleepingComputer noted that projects would have needed to meet multiple conditions to be affected, further narrowing exposure. Security researcher Florian Roth characterized the operation as having significant access but a relatively unsophisticated payload, a reminder that even low-skill intrusions can be high-consequence when they reach critical dependencies.
What the Malware Tried to Do
Analysis by Socket indicates the implants focused on cryptocurrency theft by manipulating browser-based transactions. The code attempted to intercept and rewrite crypto addresses on the fly, diverting funds to attacker-controlled wallets—a classic address-swapping scheme that relies on stealth and timing rather than advanced exploit chains.
Because the compromised packages are routinely embedded deep within dependency trees, the attacker likely aimed for scale over precision: seed a common utility, wait for automated builds to pull it in, and opportunistically skim value. The swift community response and rapid takedowns blunted that strategy.

Why This Matters for Software Supply Chains
Open-source ecosystems concentrate risk in a small number of maintainers whose modules sit at the root of massive dependency graphs. Incidents like the 2018 event-stream compromise, the 2022 colors/faker disruptions, the 3CX supply-chain breach, and the attempted XZ Utils backdoor demonstrate how quickly trust can be weaponized.
The lesson is less about any single module and more about the fragility of transitive trust. A phished maintainer, a poisoned update, and a CI pipeline on autopilot can become a delivery system for attackers—especially when teams pin loosely or skip verification of new releases.
What Teams Should Do Now
Developers relying on the affected packages should audit dependency trees, lock files, and build artifacts, then reinstall from known-good versions. Rotate tokens and credentials, clear CI caches, and review logs for unexpected postinstall scripts or network calls during builds.
On prevention, prefer hardware security keys for 2FA, enable publisher provenance or signing where supported, and adopt allowlisting for install scripts. Use multiple sources of intelligence—package registries, behavior-based scanners, and runtime monitoring—rather than relying solely on one tool or advisory feed.
Organizations like the Open Source Security Foundation continue to advocate for practices such as SLSA-style build integrity, minimal permissions for publishing tokens, and routine verification of dependency integrity. The speed of community response in this case limited damage; the next compromise may not be as forgiving.
The takeaway is stark but actionable: attackers will keep targeting human maintainers because it works. Reducing trust sprawl, hardening publisher accounts, and treating dependency updates as code changes that warrant scrutiny are the most reliable ways to keep a routine upgrade from becoming an incident response.