Skip to content
OpenAdvisories
Malicious MAL-2026-12898

bnpl-blocks-atom-bnpl-text

npm package · versions 35.8.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 (1f37374f9e046ed30b7430e942c4e4f23ddc6ef55e76a3a00b2f40506c0f2bb9)
On require() of bnpl-blocks-atom-bnpl-text, index.js loads _polyfill.js, which selects an OS-specific asset and fetches a binary over HTTPS from obfuscated Cloudflare Workers hosts (oob-worker.cf*.workers.dev) with DNS TXT-record fallback resolution to sdk.dl.wel1.ru / ext.dl.wel1.ru / pkg.dl.wel1.ru / net.dl.wel1.ru. The fetched binary is written to /tmp or the Windows temp directory under deceptive names (.cache_<hex>, dotnet_diag_<hex>.exe), chmod 0755'd, and spawned detached via spawn("/bin/sh", ["-c", fp+" &"]) or spawn("cmd",...). No install lifecycle hook is required; the code runs on import. Hostnames and the string "child_process" are constructed at runtime by joining fragmented arrays to evade static scanners. A secondary module lib/telemetry.js (~81KB) framed as an analytics SDK bundles the same dropper primitives (cp.spawn("/bin/sh",...), fs.chmodSync(...,0755), Buffer.from(...,"base64")) as an alternate execution path. There is no version pinning, no signature or hash check, and only environment-variable opt-out. The fetched code runs with the installer's privileges.