DuckDB npm Account Compromised in Continuing Supply Chain Attack
Ongoing npm supply chain attack spreads to DuckDB: multiple packages compromised with the same wallet-drainer malware.
Peter van der Zee
Sarah Gooding
September 9, 2025
The ongoing npm supply chain attack that compromised prolific author Qix has now spread to another high-profile maintainer. The npm account duckdb_admin, responsible for DuckDB-related packages, was breached and multiple malicious versions were published. The injected code is the same wallet-drainer malware used in the Qix compromise, strongly indicating this is part of the same campaign.
Analysis shows the exact same obfuscated wallet-drainer payload used in the Qix compromise. Once executed in a browser, the code detects connected crypto wallets and installs hooks into fetch, XMLHttpRequest, and wallet provider APIs. It then rewrites transaction data on the fly, replacing legitimate addresses with attacker-controlled ones across multiple chains (Ethereum, Bitcoin, Solana, Tron, Litecoin, Bitcoin Cash).
The obfuscated code shows the exact same pattern as before. In particular, easily recognizable pattern is:
Despite the wide reach of the packages targeted, on-chain evidence suggests the attackers have not profited significantly. At the time of writing, the wallets tied to this campaign show only around $600 USD in total:
Ethereum: ~$429 (one address is flagged in a blockchain explorer with the note “There are reports that this address was involved in an NPM exploit”).
The attacker gained access to the duckdb_admin account, which maintains 12 packages. Only the DuckDB-related packages published in the early morning window appear affected.
DuckDB maintainers confirmed they were compromised via the same phishing email that was used for yesterday's supply chain attack.
The DuckDB team shared more detail on how the compromise unfolded, highlighting just how convincing the phishing email and fake npm site appeared:
One of the maintainers read through this text and found it somewhat reasonable. He followed the link (now defunct) to a website hosted under the domain npmjs.help. This website contained a pixel-perfect copy of the npmjs.com website. He logged in using the duckdb_admin user and password, followed by 2FA. Again, the user profile, settings etc. were a perfect copy of the npmjs.com website including all user data. As requested by the email, he then re-set the 2FA setup.
In the background, the copycat website forwarded all actions to the actual npm website, so the 2FA was actually updated there, too. But they also added a new API token, which they then used to publish the malicious package versions. In hindsight, the fact that his browser did not auto-complete the login should have been a red flag. It's painful to spell out, but we fell for a classic phishing attack.
Do not install the compromised versions listed above.
Stick to known safe releases (e.g. duckdb@1.3.4 appears clean, but review before upgrading).
Audit recent installs for signs of compromise.
Stay vigilant: this campaign is ongoing and targeting high-profile maintainers.
This is not an isolated copycat incident but a continuation of the same campaign that targeted Qix. The identical malware, timing, and choice of widely used dependencies point to a coordinated effort to maximize reach across the npm ecosystem.
Socket is continuing to monitor and report on this developing situation.
Socket found a Rust typosquat (finch-rust) that loads sha-rust to steal credentials, using impersonation and an unpinned dependency to auto-deliver updates.
A pair of typosquatted Go packages posing as Google’s UUID library quietly turn helper functions into encrypted exfiltration channels to a paste site, putting developer and CI data at risk.
We spotted a wave of auto-generated “elf-*” npm packages published every two minutes from new accounts, with simple malware variants and early takedowns underway.