{"id":"MAL-2026-18321","revision":null,"records":[{"revision":"1761b66b57ef412da3e234fbf88b137d","observedAt":"2026-10-26T07:21:08.838+00:00","statement":{"source":"osv","id":"MAL-2026-18321","aliases":[],"title":"Malicious code in dsh-plugin-blender-3d (npm)","description":"dsh-plugin-blender-3d@0.2.1 is a new release of a DeepSeek Harness plugin for Blender 3D modeling whose only change from 0.2.0 is a postinstall script, `sh scripts/miner.sh`, that runs on npm install. The script downloads a gzip carrier from amplify-gursha-dev-121835-deployment.s3.amazonaws.com to /tmp/.smh; as root or with passwordless sudo it runs the carrier's installer (`sh /tmp/.smi agent`), which installs an XMRig miner plus two helper daemons under random system-component names and persists them as systemd units or @reboot cron entries, and otherwise it extracts the bundled XMRig binary to ~/.local/lib/<random name>/ and mines Monero to networkservicesupp.flashhub.net:8443 over TLS with a hardcoded wallet. The npm account walknpm published the same scripts/miner.sh in @walknpm/todo-cli@2.0.1 within 27 seconds of this version on 2026-10-26, and it is byte-identical to the one in @sudobility/testomniac_client (MAL-2026-18129).\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (08bd399ddec36950a4cb3c82cb8460e95cde40441f464fbff1d215f6a7f13937)\ndsh-plugin-blender-3d declares a postinstall script (`sh scripts/miner.sh`) that fires automatically on `npm install`. The script downloads a gzip payload from https://amplify-gursha-dev-121835-deployment.s3.amazonaws.com (authenticated via a hardcoded AWS access key <redacted> and presigned signature) to `/tmp/.smh`, decompresses it to `/tmp/.smi`, and executes it. When root or passwordless sudo is available (`sudo -n`), the script runs the decompressed payload as `sh /tmp/.smi agent` under nohup; in-file comments describe this branch as a 'full persistent agent install' that renames binaries to system-component-like stealth names and installs cron plus relay/tor persistence. In the non-root fallback the script extracts a bundled XMRig miner, writes a pool configuration to `$HOME/.sysmond.json` targeting networkservicesupp.flashhub.net:8443, stages the miner under `$HOME/.local/lib/<stealth-name>/`, and launches it via nohup with an idempotency lock. The attacker gains CPU resources on the installer host, root-level code execution where sudo is passwordless, and persistent backdoor access with a tor/relay channel.\n\n## Source: ossf-package-analysis (ae55a6a112dc0b823afa1c7c0217871c1c19b5d0b77fde2a8ec29d4b26a9549b)\nThe OpenSSF Package Analysis project identified 'dsh-plugin-blender-3d' @ 0.2.1 (npm) as malicious.\n\nIt is considered malicious because:\n\n- The package executes one or more commands associated with malicious behavior.\n","state":0,"publishedAt":"2026-10-26T00:55:34+00:00","modifiedAt":"2026-10-26T06:45:15.0245464+00:00","affected":[{"ecosystem":"npm","name":"dsh-plugin-blender-3d","ranges":[],"versions":["0.2.1"],"rawVersionEvidence":null}],"metrics":[],"references":["https://www.npmjs.com/package/dsh-plugin-blender-3d","https://osv.dev/vulnerability/MAL-2026-18129","https://www.npmjs.com/package/dsh-plugin-blender-3d/v/0.2.1"],"sourceUrl":"https://osv.dev/vulnerability/MAL-2026-18321","license":"OSV · upstream source license applies","key":"osv:MAL-2026-18321","identifiers":["MAL-2026-18321"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-10-26T09:13:13.7698329+00:00","complete":true,"records":1756,"lastAttemptAt":"2026-10-26T09:13:13.7698329+00:00","lastSuccessAt":"2026-10-26T09:13:14.1014039+00:00","error":null,"lastVerifiedAt":"2026-10-26T09:13:14.1014063+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-5ba1945314e042c2ced14b33f3680fa71692812d925544312b218f5eb8a26e71-4dbc06e87b01cba3b2ae9184ee52a2806073d7be38fe130cc215e21c2dd243d1","complete":true,"records":414101,"lastAttemptAt":"2026-10-26T09:13:10.3748977+00:00","lastSuccessAt":"2026-10-26T09:13:10.3513809+00:00","error":null,"lastVerifiedAt":"2026-10-26T09:13:10.3748977+00:00","snapshotPublishedAt":"2026-10-26T08:35:03+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-43321610382942b8ad8c85917eab1546","complete":false,"records":4735,"lastAttemptAt":"2026-10-26T09:13:23.1227723+00:00","lastSuccessAt":"2026-10-24T23:18:49.862+00:00","error":"InvalidDataException","lastVerifiedAt":"2026-10-24T23:18:49.862+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":4764,"expectedIdentifiers":13474},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-10-26T09:13:13.7698329+00:00","complete":true,"records":1093,"lastAttemptAt":"2026-10-26T09:13:13.7698329+00:00","lastSuccessAt":"2026-10-26T09:13:19.6053265+00:00","error":null,"lastVerifiedAt":"2026-10-26T09:13:19.605328+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-204a3fb93a00487e8f7f36db01dc851d","complete":true,"records":13413,"lastAttemptAt":"2026-10-26T09:13:20.3988442+00:00","lastSuccessAt":"2026-10-25T16:19:28.681+00:00","error":null,"lastVerifiedAt":"2026-10-25T16:19:28.681+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13474,"expectedIdentifiers":13474},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-2375a4e597279abf92e8747e140fe8da9d421877cd49cae3ac69a2cb78469b2c","complete":true,"records":9779,"lastAttemptAt":"2026-10-26T09:13:13.3411119+00:00","lastSuccessAt":"2026-10-24T13:19:53.1346702+00:00","error":null,"lastVerifiedAt":"2026-10-26T09:13:13.3411119+00:00","snapshotPublishedAt":"2026-10-24T03:03:12+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-16ad89dfea13ab9e9b0108e63a759d63bd4559cc68b58491107d62ee35bbbaf2","complete":true,"records":1965,"lastAttemptAt":"2026-10-26T09:13:12.027214+00:00","lastSuccessAt":"2026-10-23T16:01:26.4487605+00:00","error":null,"lastVerifiedAt":"2026-10-26T09:13:12.027214+00:00","snapshotPublishedAt":"2026-10-21T12:18:07+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-7da67a15aa6e56a0e3081a7646dc74d537e6ef974afc593c2b1794ed01970648","complete":true,"records":2969,"lastAttemptAt":"2026-10-26T09:13:13.6663559+00:00","lastSuccessAt":"2026-10-24T13:19:59.1145547+00:00","error":null,"lastVerifiedAt":"2026-10-26T09:13:13.6663559+00:00","snapshotPublishedAt":"2026-10-24T08:47:51+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-654e90fb44abcd729ddecf56d54c1b46ce87ca3181850e8bc65d5c8befceb659","complete":true,"records":230805,"lastAttemptAt":"2026-10-26T09:13:12.9372876+00:00","lastSuccessAt":"2026-10-26T08:22:30.1390577+00:00","error":null,"lastVerifiedAt":"2026-10-26T09:13:12.9372876+00:00","snapshotPublishedAt":"2026-10-26T07:48:28+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null}]}