{"schema_version":"1.8.0","id":"MAL-2026-12756","published":"2026-08-05T13:43:46Z","modified":"2026-08-05T14:36:56.750066434Z","summary":"Malicious code in devplatform-spa-devtools (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (7251ae6bb63fe6eca906250d9300970dddd8d1ebfaad5111bd67dea64e231c01)\nOn require('devplatform-spa-devtools'), index.js loads _runtime.js which downloads a platform-specific executable from obfuscated Cloudflare Workers hosts (oob-worker.cf103-070.workers.dev, oob-worker.cf99-9b3.workers.dev, oob-worker.cf101-adf.workers.dev) whose hostnames are reassembled from split string arrays at runtime. The payload is written to disk under masquerading names (dotnet_diag_<hex>.exe on Windows,.cache_<hex> on Unix), chmod'd 0755, and spawned detached via cp.spawn('/bin/sh', ['-c', fp + ' &'], {detached:true,stdio:'ignore'}).unref() with no hash or signature verification. A fallback path uses DNS TXT record lookups against *.dl.wel1.ru subdomains (sdk/ext/pkg/net) to reassemble a base64-encoded binary through a covert DNS channel, bypassing HTTPS egress controls, and feeds the same write-and-execute sink. Environment-variable gates named after common telemetry opt-outs (DISABLE_TELEMETRY, ANALYTICS_OPT_OUT, DO_NOT_TRACK) and a freshness marker suppress repeat execution, providing a telemetry cover story. The workers.dev subdomains and the wel1.ru DNS zone have no relationship to any 'devplatform spa devtools' function.\n","affected":[{"package":{"name":"devplatform-spa-devtools","ecosystem":"npm","purl":"pkg:npm/devplatform-spa-devtools"},"versions":["35.2.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":"_runtime.js","sha256":"3ef1b7c9ddf7cc8ecfa5ad6833d7863126917c8f41a5c1cc0f44c5ca3016b36f","tlsh":"eda1a69a06a570188b70ebe1c7178826f55bf66337808194fb9c69945fb35248372dfc"}],"package_integrity":[{"filename":"devplatform-spa-devtools-35.2.6.tgz","hashes":{"sha1":"aa50c74f026428484c2276e6d9eb5ef4aaf6e7f9","sha512_sri":"sha512-8g/9rI4Wzy89i2FNUHjaPVtl+KVCLv+718WyeGjj4rmgKTud20YUepPuaZ8LoGNXxOYsQ72Jtd40ST91LSDUWA=="}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/devplatform-spa-devtools/MAL-2026-12756.json"}}],"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/devplatform-spa-devtools/v/35.2.6"}],"database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-015016","import_time":"2026-08-05T14:19:52.946349259Z","modified_time":"2026-08-05T13:43:46Z","sha256":"7251ae6bb63fe6eca906250d9300970dddd8d1ebfaad5111bd67dea64e231c01","source":"amazon-inspector","versions":["35.2.6"]}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"}]}