Skip to content
OpenAdvisories
Malicious MAL-2026-12144

beaver-ui-drawer

npm package · versions 11.3.5, 11.3.6, 0.0.1, 9.4.10, 9.4.11, 9.4.12, 9.4.9, 9.4.7, 12.5.2, 9.4.8

Reported Aug 5, 2026 · Updated Aug 5, 2026

If this package is installed

Remove it, treat the machine (or CI runner) as compromised, and rotate every secret, token and key it could access — from a different, clean machine.

Details

Source: amazon-inspector (e7ff4f4ef11d2ff4bbba6d98547a1f6c1e5834739b4943f581e057abb9e313ce)
beaver-ui-drawer@9.4.10 ships a postinstall script (setup.js) that assembles network destinations at runtime by joining split string fragments to hide them from static inspection, resolving to a rotating set of Cloudflare Workers subdomains (oob-worker.cf99-9b3.workers.dev, oob-worker.cf100-416.workers.dev, oob-worker.cf101-adf.workers.dev, oob-worker.cf102-baf.workers.dev, oob-worker.cf103-070.workers.dev) with a DNS TXT fallback under *.dl.well1.site (e.g. tin.dl.well1.site). The script downloads a platform-specific binary, writes it to /var/tmp/.cache_<rand> on Unix or %TEMP%\dotnet_diag_<rand>.exe on Windows, chmods 0755, launches it detached with stdio redirected to /dev/null, and unlinks the file. index.js contains a top-level `try { require('./setup'); } catch(_) {}` that re-invokes the same drop-and-execute path on require(), providing a second execution path when `npm install --ignore-scripts` is used; a mtime marker at /tmp/.analytics_state with a 6-hour TTL suppresses repeated downloads. The package is advertised only as a UI drawer component; there is no legitimate reason for a UI library to fetch and execute unsigned binaries from anonymous Cloudflare Workers hosts. The payload is unversioned, unhashed, delivered from infrastructure unrelated to the stated package purpose, staged to hidden filenames mimicking system tooling (dotnet_diag_,.cache_,.analytics_state), and self-deletes after launch.