{"schema_version":"1.8.0","id":"MAL-2026-13271","published":"2026-08-05T15:30:06Z","modified":"2026-08-05T16:50:27.121998894Z","summary":"Malicious code in devplatform-utils (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (0244bc7396ea5f52d909130a7d685fee98c0dda29cb18b82d17e8c9c90dff552)\ndevplatform-utils@35.5.2 ships an index.js whose main module require()s _bootstrap.js, which on load downloads a platform-specific binary payload from string-split-obfuscated Cloudflare Workers endpoints (e.g. oob-worker.cf103-070.workers.dev) with a DNS-TXT fallback via *.dl.wel1.ru. The payload is written to /var/tmp/.cache_<hex> on Unix or %TEMP%\\dotnet_diag_<hex>.exe on Windows, chmod 0755'd, and spawned detached via /bin/sh -c '<path> &' or cmd.exe /c start /b. Destination hostnames are assembled at runtime by.join('') on fragmented string arrays (_NODES, _DNS_MAP) to evade static string scans, and the dropped file is given cover-story names (dotnet_diag_*,.cache_*,.analytics_state). A rate-limit token stored at /tmp/.analytics_state (EXPIRE_SEC=21227, ~5.9 hours) causes the remote binary to be re-fetched and re-executed on subsequent require() calls, providing a persistent operator-controlled code-delivery channel. Environment variables DISABLE_TELEMETRY / DO_NOT_TRACK are checked as a cover story consistent with a legitimate telemetry opt-out. No hash or signature verification is performed on the fetched binary.\n","affected":[{"package":{"name":"devplatform-utils","ecosystem":"npm","purl":"pkg:npm/devplatform-utils"},"versions":["35.5.2"],"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":"_bootstrap.js","sha256":"7af943d337837f8483f0c3c1d4c623fa9eeb6348e90bf40d147d1d6995598d20","tlsh":"19b1845a16a670188f7097e0c71b9816f65af56337818184f79c65988fb352483b2efc"}],"package_integrity":[{"filename":"devplatform-utils-35.5.2.tgz","hashes":{"sha1":"68a37b07b006a7df2a38b1f411828f93c5ee428a","sha512_sri":"sha512-BnxM9rPzvIpCaNBFjymK6G9ly1AsxVUdQiRj0DOmaEh6R0rjmTgH79HW5orK8s6AbPVrJATF9i4CscOFFdzcJg=="}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/devplatform-utils/MAL-2026-13271.json"}}],"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/devplatform-utils/v/35.5.2"}],"database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-015723","import_time":"2026-08-05T16:13:36.369794311Z","modified_time":"2026-08-05T15:30:06Z","sha256":"0244bc7396ea5f52d909130a7d685fee98c0dda29cb18b82d17e8c9c90dff552","source":"amazon-inspector","versions":["35.5.2"]}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}