2026-08-07 · view entry permalink →
Flooding Dropper: 846 npm packages published from disposable accounts, with a dropper that falls back to DNS TXT records when its download hosts are blocked
Sonatype Research Labs is tracking an active npm campaign it calls Flooding Dropper, spanning 846 components at the time of publication, after researchers at OpenSourceMalware reported one package in the set on 2026-08-05 (Sonatype Research Labs, 2026-08-05). The distribution model is the point: instead of one prolific publisher, the operator appears to automate npm account and package creation, publishing a handful of packages from each of many accounts with names that interpolate a small set of recurring terms and version numbers clustered in one range. Sonatype is explicit that these naming characteristics are a correlation aid rather than a control — they help group today's packages and will change — and this entry deliberately carries the shape of the convention rather than package names.
The first-stage JavaScript runs at install or import time and behaves as a cross-platform loader with more than one way to succeed. It checks environment variables and local state markers to decide whether to run at all, identifies the host operating system and processor architecture to select a matching Windows, Linux or macOS payload, and attempts the download from a randomised set of hardcoded hosts. When those HTTPS fetches fail it falls back to DNS: the payload is reassembled and decoded from TXT-record responses, so blocking a download host does not prevent delivery. The binary is then written to a temporary directory, marked executable on Unix-like systems, and launched detached with output suppressed — and Sonatype spells out why that matters operationally: "Launching the payload in a detached process is an important failsafe because killing the npm installation process or parent Node.js process does not necessarily stop the attack" (Sonatype Research Labs, 2026-08-05). Killing the build does not kill the intrusion.
Sonatype's initial analysis of the Windows second stage finds another loader rather than a final payload: it patches Event Tracing for Windows and Antimalware Scan Interface functions to interfere with monitoring and scanning, checks for debuggers, virtual machines, sandboxes and security products, copies itself to a persistent location under the user's AppData directory, establishes persistence through both a Registry Run key and a scheduled task, then downloads an encrypted payload, decrypts it and executes it reflectively in memory so nothing conventional is written to disk for a disk-focused control to catch (Sonatype Research Labs, 2026-08-05). Sonatype classifies the affected packages under CWE-506 at CVSS 8.7 and tracks the campaign as sonatype-2026-005660, which is the handle to pull the current package list from rather than any naming heuristic. The packages also carry slightly modified payloads — syntactically different, functionally identical, with renamed URL functions and variables — which is aimed squarely at signature matching rather than at behavioural detection.
Launching the payload in a detached process is an important failsafe because killing the npm installation process or parent Node.js process does not necessarily stop the attack.
Impacted organizations should consider the host compromised, remove the package, investigate secondary payload execution and persistence, and rotate exposed credentials only after the environment has been cleaned.