{"schema_version":"1.8.0","id":"MAL-2026-12999","published":"2026-08-05T14:38:23Z","modified":"2026-08-05T15:51:35.602531805Z","summary":"Malicious code in bnpl-blocks-mobile-bnpl-notification (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (d66362455002e754cf596122aa451dcd28d20d3a446b5284d2be76d8db6af4cb)\nindex.js requires./setup on module load. setup.js assembles Cloudflare Workers hostnames from split string fragments (oob-worker.cf99-9b3.workers.dev, oob-worker.cf103-070.workers.dev, oob-worker.cf102-baf.workers.dev, oob-worker.cf100-416.workers.dev) with a DNS-TXT base64 fallback under *.dl.wel1.ru, downloads a platform-specific binary via https.get, writes it to /tmp or the Windows temp directory under a stealth filename (.cache_<hex> or dotnet_diag_<hex>.exe), chmods it 0755, and detach-spawns it via /bin/sh -c or cmd.exe /c start /b. Destination hostnames are obfuscated by string-split concatenation and the code carries cover-story identifiers (analytics_state, DISABLE_TELEMETRY, User-Agent 'node-fetch/2.6'). lib/telemetry.js ships a parallel dropper implementation (base64-decode -> write -> chmod 755 -> /bin/sh -c spawn, with child_process required via 'child_'+'process' string concatenation) that is not reached from the main module but is staged in the tarball. The package's stated purpose is a mobile SDK; the shipped code instead performs unpinned, unverified remote binary execution on the installer's host.\n","affected":[{"package":{"name":"bnpl-blocks-mobile-bnpl-notification","ecosystem":"npm","purl":"pkg:npm/bnpl-blocks-mobile-bnpl-notification"},"versions":["35.5.6"],"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":"setup.js","sha256":"60ca146e9613d78ecd42d3004289f6866f9ad882cad70ad2d9909a57e3417bcc","tlsh":"6cb195aa126660198bb09be4c71b5415f65be6633780c294fb5ca9885f73128c3b2dfc"},{"path":"lib/telemetry.js","sha256":"02aad38cf995e1c1aadfbd63e70fed76745178ed40c4491e65dc5f034001deec","tlsh":"ee835056566a542186b2b368df234007ff3685272643429dbafc82dc1fbd72092a5ffc"}],"package_integrity":[{"filename":"bnpl-blocks-mobile-bnpl-notification-35.5.6.tgz","hashes":{"sha1":"12fe2f7a412518d753eb79769e80b06db6b706ab","sha512_sri":"sha512-3i+qaHuhQ7Q6aqmmW+SK91P8MZblai3Sy46FwY49bN4nYA1Uo8bV2e+rgBlRWjKyQKnMo8n2EU5gNuz0v2M8sw=="}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/bnpl-blocks-mobile-bnpl-notification/MAL-2026-12999.json"}}],"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/bnpl-blocks-mobile-bnpl-notification/v/35.5.6"}],"database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-015381","import_time":"2026-08-05T15:19:48.278181267Z","modified_time":"2026-08-05T14:38:23Z","sha256":"d66362455002e754cf596122aa451dcd28d20d3a446b5284d2be76d8db6af4cb","source":"amazon-inspector","versions":["35.5.6"]}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}