# MAL-2026-12144: Malicious code in beaver-ui-drawer (npm)


- **Type:** Malicious package
- **Package:** `beaver-ui-drawer` (npm)
- **Published:** 5 Aug 2026

## What is MAL-2026-12144?

MAL-2026-12144 is a malicious package in beaver-ui-drawer, published on 5 Aug 2026. 

### Official description

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.

## What should I do about MAL-2026-12144?

Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.

## Fix prompt for AI coding agents

```text
MAL-2026-12144 is a malicious package: beaver-ui-drawer (npm). Every version was published to cause harm.

Task:
1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.
2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.
3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.
4. If the package is not used anywhere, say so and change nothing.

Reference: https://insights.sbomify.com/MAL-2026-12144/ (Markdown: https://insights.sbomify.com/MAL-2026-12144/index.md)
```

## Sources

- OSV: https://osv.dev/vulnerability/MAL-2026-12144

---
From sbomify Insights: https://insights.sbomify.com/MAL-2026-12144/
Summaries are generated and may contain mistakes; the official description above is the record.
