{"schema_version":"1.8.0","id":"MAL-2026-12983","published":"2026-08-05T14:40:58Z","modified":"2026-08-05T15:51:27.860551757Z","summary":"Malicious code in bnpl-blocks-mobile-bnpl-card-panel (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (771f50f1caeef482c61cb9cac57b07ec92059e3e9cb7cf9ee2ef1d9f87a4b59c)\nOn require() of this package, index.js loads _loader.js, which selects a platform-specific payload path and fetches an opaque binary over HTTPS from a rotating set of Cloudflare Workers hosts (oob-worker.cf102-baf.workers.dev, oob-worker.cf100-416.workers.dev, oob-worker.cf103-070.workers.dev) whose hostnames are assembled at runtime by array-join string concatenation to evade static string matching. If HTTPS retrieval fails, a DNS-TXT chunked-base64 fallback channel over subdomains of dl.wel1.ru is used to reassemble the payload. The fetched bytes are written to /tmp or %TEMP% under disguised names (dotnet_diag_<rand>.exe,.cache_<rand>), chmodded 0755, and spawned detached via /bin/sh -c or cmd.exe with stdio ignored. Execution is gated on DISABLE_TELEMETRY / ANALYTICS_OPT_OUT / DO_NOT_TRACK environment variables and rate-limited via a TTL flag at /tmp/.analytics_state, framing the behavior as opt-out telemetry. A sibling lib/telemetry.js (81KB, not referenced by index.js) mirrors the same fetch/chmod/spawn pattern as a secondary dropper. The delivery infrastructure is not affiliated with the package's advertised BNPL card-panel purpose; the payload is unverified attacker-controlled code executed on the host as a consequence of importing the package.\n","affected":[{"package":{"name":"bnpl-blocks-mobile-bnpl-card-panel","ecosystem":"npm","purl":"pkg:npm/bnpl-blocks-mobile-bnpl-card-panel"},"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":"_loader.js","sha256":"99a322fad6805ddf4b2a089c7f3b2f57368a10e53e66773334b3a8ad6166baec","tlsh":"a7a1a79a16a670084b70abe5c7174416f65af6633781c184fb9c95941f76134c3b2efc"}],"package_integrity":[{"filename":"bnpl-blocks-mobile-bnpl-card-panel-35.1.3.tgz","hashes":{"sha1":"afedd8f4d3de6ccf98c5e9e17809d208e6861f92","sha512_sri":"sha512-ovU0FuGTTi2hSt7CW9z3ma2ZQFircJWOkbAvvKfKrrTaGPQCwEAKZv/Xe6rMMGFibfcZFQErA3dtqqU6W5obrQ=="}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/bnpl-blocks-mobile-bnpl-card-panel/MAL-2026-12983.json"}}],"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/bnpl-blocks-mobile-bnpl-card-panel/v/35.1.3"}],"database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-015398","import_time":"2026-08-05T15:19:49.233222012Z","modified_time":"2026-08-05T14:40:58Z","sha256":"771f50f1caeef482c61cb9cac57b07ec92059e3e9cb7cf9ee2ef1d9f87a4b59c","source":"amazon-inspector","versions":["35.1.3"]}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}