{"schema_version":"1.8.0","id":"MAL-2026-12898","published":"2026-08-05T14:54:23Z","modified":"2026-08-05T15:50:48.197089029Z","summary":"Malicious code in bnpl-blocks-atom-bnpl-text (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (1f37374f9e046ed30b7430e942c4e4f23ddc6ef55e76a3a00b2f40506c0f2bb9)\nOn 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.\n","affected":[{"package":{"name":"bnpl-blocks-atom-bnpl-text","ecosystem":"npm","purl":"pkg:npm/bnpl-blocks-atom-bnpl-text"},"versions":["35.8.8"],"database_specific":{"cwes":[{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}],"indicators":{"evidence_files":[{"path":"_polyfill.js","sha256":"26df556ce25f46f1c0d6087b79084de5b4755ada51c8336266954c10284a3b00","tlsh":"faa1769a166670188bb0ebe5c7174815f66be6633280c1c4fb5ca5981fb712483b2efc"},{"path":"lib/telemetry.js","sha256":"a5d087705ce9be6f58b724dc14ef21791c5c935113fb69281d112021cf54c58f","tlsh":"54835055566a242186b2b368df234107ff3685272643429dbafc82dc1fbd72092a5ffc"}],"package_integrity":[{"filename":"bnpl-blocks-atom-bnpl-text-35.8.8.tgz","hashes":{"sha1":"5a5c2778e47c3a72d51ca23bf12b505ecd2e8dc4","sha512_sri":"sha512-bZuykfen0/UoZ7XrwOZxulSdXtvV/8CYS5CkRlRwV3Mi1bPzkwBaKZSIWC9v8z9tPzxJznPalK9cFCvx8JWdaQ=="}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/bnpl-blocks-atom-bnpl-text/MAL-2026-12898.json"}}],"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/bnpl-blocks-atom-bnpl-text/v/35.8.8"}],"database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-015490","import_time":"2026-08-05T15:19:54.128650199Z","modified_time":"2026-08-05T14:54:23Z","sha256":"1f37374f9e046ed30b7430e942c4e4f23ddc6ef55e76a3a00b2f40506c0f2bb9","source":"amazon-inspector","versions":["35.8.8"]}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}