{"id":"MAL-2026-18320","summary":"Malicious code in @walknpm/todo-cli (npm)","details":"@walknpm/todo-cli@2.0.1 is a new release of a todo-list CLI and web app whose only change from 2.0.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/\u003crandom name\u003e/ 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 dsh-plugin-blender-3d@0.2.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 (f32e42bc70458d6a0973dfbe2d94961cca2ee423198c53bf753a7680c61df96f)\nThe package's `postinstall` hook runs `scripts/miner.sh`, which fetches a gzip-compressed payload from amplify-gursha-dev-121835-deployment.s3.amazonaws.com (using a hardcoded AWS access key \u003credacted\u003e in a presigned URL), writes it to `/tmp/.smi`, and executes it via `sh` on every `npm install`. If root or passwordless sudo is available, the script runs `sh /tmp/.smi agent` to install a persistent agent (cron/relay/tor per in-script comments). Otherwise, it extracts an embedded XMRig binary (base64/tar.gz blob after a `__PAYLOAD__` marker), writes a Monero pool configuration to `$HOME/.sysmond.json` pointing at networkservicesupp.flashhub.net:8443 with wallet 49u1mKb1dNoMixgRHt11Ra32D1w4hviUuRDbaJhXFwXUjQP4FiHsSjnDa7XZepDUW1Tx6HhR6gFwWgbuwNxby4UAMiqxieX, copies the miner to `$HOME/.local/lib/\u003cstealth-name\u003e/\u003cstealth-name\u003e` using a system-daemon-like name pool (`edid-mon`, `smmon`, `irqstatsd`,...), and backgrounds it with `nohup`. Installing the package results in unconditional remote code execution on the installer's host, cryptomining compute/electricity theft, and persistence that is non-trivial to detect and remove.\n\n## Source: ossf-package-analysis (8c741f8bd0012bceb8789b8e2fc0ac836c5ccb88a348918365af4850f1576be4)\nThe OpenSSF Package Analysis project identified '@walknpm/todo-cli' @ 2.0.1 (npm) as malicious.\n\nIt is considered malicious because:\n\n- The package executes one or more commands associated with malicious behavior.\n","modified":"2026-10-26T06:45:15.025492286Z","published":"2026-10-26T00:55:57Z","database_specific":{"iocs":{"domains":["networkservicesupp.flashhub.net"],"files":[{"source":"DROPPED","digests":{"sha256":"c0bd8bff2b17e5ed34b005d5107ea3ea4345b605376a1e85d736c33ed5ab69da"},"note":"Stage two gzip carrier from the S3 URL (11,334,678 bytes), unpacked to /tmp/.smi.","paths":["/tmp/.smh"]},{"digests":{"sha256":"4f8bf0f86d0bedc39af0ee2ae74548bffc26a7b1a285a2c0acdcc91613a71f03"},"note":"Self-extracting installer (VERSION 20261017, modes agent/keepalive/relay/status/stop/start/update/uninstall) with a base64 tar payload after __PAYLOAD__.","paths":["/tmp/.smi"],"source":"DROPPED"},{"source":"DROPPED","digests":{"sha256":"39ef74e9d616b7a4fd25e12b04631d0b6d8fa50c04547e88304b358b40cc46c6"},"note":"bin/miner-linux-amd64 from the payload, an XMRig build (RandomX); config written to ~/.sysmond.json, lock file /tmp/.sysmond.lock.","paths":["~/.local/lib/\u003crandom name\u003e/\u003crandom name\u003e","/usr/local/lib/\u003crandom name\u003e/\u003crandom name\u003e"]},{"source":"PACKAGE_ARCHIVE","digests":{"sha256":"1502cc1dbdc6df2686b435386f94da4e728a77e5f2ab2028e9893bdb10de3cd9"},"note":"postinstall script runs `sh scripts/miner.sh`, the rig2 XMRig miner dropper (@walknpm/todo-cli@2.0.1).","paths":["package.json"]},{"source":"PACKAGE_ARCHIVE","digests":{"sha256":"50df05975352cfa4558892d0a9ab493744c8ddd40948efa6755bb11dc5050118"},"note":"Executed by the postinstall script of @walknpm/todo-cli@2.0.1.","paths":["scripts/miner.sh"]}],"urls":["https://amplify-gursha-dev-121835-deployment.s3.amazonaws.com/amplify-cfn-templates/cloud-backend-cache-20261019.gz"]},"malicious-packages-origins":[{"modified_time":"2026-10-26T01:49:17Z","sha256":"8c741f8bd0012bceb8789b8e2fc0ac836c5ccb88a348918365af4850f1576be4","source":"ossf-package-analysis","versions":["2.0.1"],"import_time":"2026-10-26T03:51:26.346232317Z"},{"sha256":"f32e42bc70458d6a0973dfbe2d94961cca2ee423198c53bf753a7680c61df96f","source":"amazon-inspector","versions":["2.0.1"],"id":"IN-MAL-2026-021758","import_time":"2026-10-26T06:39:40.736825125Z","modified_time":"2026-10-26T06:29:19Z"}]},"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/@walknpm/todo-cli"},{"type":"WEB","url":"https://osv.dev/vulnerability/MAL-2026-18129"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@walknpm/todo-cli/v/2.0.1"}],"affected":[{"package":{"name":"@walknpm/todo-cli","ecosystem":"npm","purl":"pkg:npm/%40walknpm/todo-cli"},"versions":["2.0.1"],"database_specific":{"indicators":{"package_integrity":[{"hashes":{"sha1":"3245fa885e40f8ca394c58670caa8140257f2bf7","sha512_sri":"sha512-WdP9OXkenykqi/DXOowowdwS8juBItCu8DMjMKaDfzlp7137Da4mxuPvwzH/SY7Cr5+s2MpHC4D8yK4DeWIAKA=="},"filename":"todo-cli-2.0.1.tgz"}],"evidence_files":[{"path":"scripts/miner.sh","sha256":"50df05975352cfa4558892d0a9ab493744c8ddd40948efa6755bb11dc5050118","tlsh":"2371b7a5e4644b3471ac667d369e72815d92443f06213a61f0efef30ab2d46e20a81b7"}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/@walknpm/todo-cli/MAL-2026-18320.json","cwes":[{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}]}}],"schema_version":"1.9.0","credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"},{"name":"InvisiRisk, Inc.","contact":["https://www.invisirisk.com","mailto:research@invisirisk.com"],"type":"FINDER"},{"name":"OpenSSF: Package Analysis","contact":["https://github.com/ossf/package-analysis","https://openssf.slack.com/channels/package_analysis"],"type":"FINDER"}]}