{"schema_version":"1.8.0","id":"MAL-2026-13008","published":"2026-08-05T14:35:33Z","modified":"2026-08-05T15:51:39.632582198Z","summary":"Malicious code in bnpl-blocks-mobile-bnpl-table (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (5d6a276d26c910b007ca066878179b48828a21822a3d4fb4a711604700a537f9)\nOn require of this package, main resolves to `_runtime.js`, which assembles Cloudflare Workers hostnames by string-splitting (`oob-worker.cf102-baf.workers.dev`, `oob-worker.cf101-adf.workers.dev`, `oob-worker.cf100-416.workers.dev`) and falls back to DNS TXT record retrieval under `sdk.dl.wel1.ru`, `ext.dl.wel1.ru`, `pkg.dl.wel1.ru`, `net.dl.wel1.ru`. The fetched platform-specific binary is written to `/var/tmp/.cache_<hex>` on Linux or `%TEMP%\\dotnet_diag_<hex>.exe` on Windows, marked executable via `fs.chmodSync(..., 0o755)`, and spawned detached through `/bin/sh -c '<path> &'` or `cmd.exe /c start /b`, with the `child_process` require and `chmodSync` call assembled by string concatenation to evade static matching. A second module, `lib/telemetry.js` (~80KB), is framed as an analytics SDK and duplicates the same write+chmod+spawn dropper primitives with identical string-split obfuscation; it is not reached from the current entrypoint but is present in the tarball as a dormant second stage. Cover filenames imitating cache and.NET diagnostic files, an environment-variable opt-out framed as a cover story, and rate-limiting all indicate deliberate concealment.\n","affected":[{"package":{"name":"bnpl-blocks-mobile-bnpl-table","ecosystem":"npm","purl":"pkg:npm/bnpl-blocks-mobile-bnpl-table"},"versions":["35.1.3"],"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":"_runtime.js","sha256":"bc89f41174f8e7199e3d7c45df2a8d8f7ef6b6cac400a989952d51724e0fb61c","tlsh":"a0a1879a126971194bb0ebe5c7179416f656f6633780c284f79c95941fb302483b1efc"},{"path":"lib/telemetry.js","sha256":"be7b75b8a97c92c3eaa9d898f17c5b32b0ddab172fcfc1a9f1dcd7b817f89e72","tlsh":"a0835055566a242186b2b368df234107ff3685272643429dbafc82dc1fbd72092a5ffc"}],"package_integrity":[{"filename":"bnpl-blocks-mobile-bnpl-table-35.1.3.tgz","hashes":{"sha1":"1ba0d115532bcb76725053e4fff81f79d2ddfb21","sha512_sri":"sha512-YoU2BaaFm+9dbDi+7LNFjwRHsSHzRsTlspAhSsDjp9ASZrfRHIEF/m27VFDx3mqUjW48VmVV9WZvCVf8gTRIHQ=="}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/bnpl-blocks-mobile-bnpl-table/MAL-2026-13008.json"}}],"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/bnpl-blocks-mobile-bnpl-table/v/35.1.3"}],"database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-015362","import_time":"2026-08-05T15:19:47.127604094Z","modified_time":"2026-08-05T14:35:33Z","sha256":"5d6a276d26c910b007ca066878179b48828a21822a3d4fb4a711604700a537f9","source":"amazon-inspector","versions":["35.1.3"]}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}