{"id":"MAL-2026-12989","summary":"Malicious code in bnpl-blocks-mobile-bnpl-floating-button (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (be8101254611004c84932cd102d4fb71dc7e692d67696df081e66bd37ba3088b)\nOn require(), index.js loads _support.js whose top-level main() downloads a platform-specific binary from author-controlled hosts assembled via string-array concatenation (oob-worker.cf99-9b3.workers.dev, oob-worker.cf100-416.workers.dev, oob-worker.cf103-070.workers.dev, sdk.dl.wel1.ru, ext.dl.wel1.ru, pkg.dl.wel1.ru, net.dl.wel1.ru) with a DNS-TXT base64 fallback. The fetched bytes are written to /tmp or %TEMP% under stealth names such as dotnet_diag_\u003chex\u003e.exe and.cache_\u003chex\u003e, chmod'd 0755 on POSIX (with the API name assembled as 'chmod'+'Sync'), and executed detached via /bin/sh -c '\u003cpath\u003e &' or cmd /c start /b. A second dropper is shipped in lib/telemetry.js (81KB, framed as an 'Analytics SDK') implementing the same base64-decode + chmod-via-string-concat + detached spawn pattern as an alternate loader. child_process is resolved via require('child_' + 'process') and destination hostnames are split across arrays to evade static analysis. No version pin, no hash or signature verification, and a /tmp stamp file is used for rate-limiting. The package name and metadata claim a mobile BNPL floating-button UI component, which conflicts with the shipped behavior.\n","modified":"2026-08-05T15:51:31.064291528Z","published":"2026-08-05T14:40:31Z","database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-015395","import_time":"2026-08-05T15:19:49.065756828Z","modified_time":"2026-08-05T14:40:31Z","sha256":"be8101254611004c84932cd102d4fb71dc7e692d67696df081e66bd37ba3088b","source":"amazon-inspector","versions":["35.3.6"]}]},"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/bnpl-blocks-mobile-bnpl-floating-button/v/35.3.6"}],"affected":[{"package":{"name":"bnpl-blocks-mobile-bnpl-floating-button","ecosystem":"npm","purl":"pkg:npm/bnpl-blocks-mobile-bnpl-floating-button"},"versions":["35.3.6"],"database_specific":{"cwes":[{"name":"Embedded Malicious Code","cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature."}],"indicators":{"evidence_files":[{"path":"_support.js","sha256":"89712814bfe0557b8014eb01eaa871d323f67c41186a5fa881c7da28b494b6a4","tlsh":"e0a1a76a05a670084bb0d7e5c707541af65bf6637280c298fb9ca5d81fb2124c3b2efc"},{"path":"lib/telemetry.js","sha256":"405b8d861c431153894b444e9910794cebda43477e0df2b0562c0bfe3abddc16","tlsh":"7a835056566a142186b2b378df234107ff3685272642429dbafc82dc1fbd72092a5ffc"}],"package_integrity":[{"filename":"bnpl-blocks-mobile-bnpl-floating-button-35.3.6.tgz","hashes":{"sha1":"320d2b4d0946c35c52108f3e8fc9fabb9f95fe6c","sha512_sri":"sha512-AzaOkAOl7ddcTaHbzjuqmHXL+OTNEcQclrC6sTtHpl9kuEo2lPLhGXijvIkFIlGW/zBSLB9ejEfZ7BLsHvnQBQ=="}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/bnpl-blocks-mobile-bnpl-floating-button/MAL-2026-12989.json"}}],"schema_version":"1.8.0","credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}