Skip to content
OpenAdvisories
Malicious MAL-2026-12919

bnpl-blocks-desktop-bnpl-container

npm package · versions 35.7.9

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 (c8ebc784cdc9c083f42cf6323e773eb7bf43b1b927c936c609bb8d93a90bb4cb)
On any require()/import of this package, index.js loads _ext.js which downloads a platform-specific binary over HTTPS from string-split-obfuscated 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), writes it to a temp path under a deceptive name impersonating dotnet diagnostics (dotnet_diag_<hex>.exe or.cache_<hex>), chmods it 0755, and spawns it detached via cp.spawn('/bin/sh', ['-c', fp + ' &'], {detached:true}).unref() (or spawn('cmd',...) on Windows). When HTTP fetch fails, a DNS TXT covert channel reassembles a base64 payload from sequential numbered subdomains under sdk.dl.wel1.ru, ext.dl.wel1.ru, pkg.dl.wel1.ru, and net.dl.wel1.ru. No hash or signature verification is performed. All C2 hostnames and resolver domains are assembled from split string fragments via.join('') to defeat static analysis. A second parallel dropper in lib/telemetry.js under an 'analytics SDK' cover story implements the same base64-payload / chmod 0755 / cp.spawn('/bin/sh', ['-c', filePath + ' &']) pattern as a backup path. The package name and version have no relationship to legitimate BNPL/desktop tooling; the tarball's only functional effect is remote code execution on the installer's machine.