{"id":"MAL-2026-10941","summary":"Malicious code in aftermath-finance (npm)","details":"The aftermath-finance package was published to the npm registry by user 'jet0010001' (maintainer email bremagml0002@gmail.com) as part of a dependency-confusion / reconnaissance campaign impersonating the Aftermath Finance SDK (Aftermath Finance is a DeFi protocol on the Sui blockchain). The package was published at version 99.0.0 - an inflated version number characteristic of dependency-confusion attacks, intended to cause a misconfigured resolver to prefer this public lookalike over the intended private/internal dependency of the same name.\n\nThe package declares a preinstall hook (\"node setup.js || true\") that executes automatically at npm install time, before any application code runs. The bundled setup.js performs host reconnaissance and credential harvesting: it collects the machine hostname, the current OS username, the current working directory, the contents of /etc/hostname, and the output of 'git remote -v', and it enumerates process environment variables whose names match the pattern /key|secret|token|pass|auth|private|drone|gitea|sui|admin|deploy/i - capturing API keys, secrets, tokens, passwords, and Sui/deploy/CI credentials. The collected data is serialized to JSON and exfiltrated via an HTTPS POST to the hardcoded attacker-controlled endpoint https://2.25.140.71:8443/aftermath/npm-dep-conf, with TLS certificate verification disabled (rejectUnauthorized: false) so a self-signed listener is accepted. Errors are silently swallowed so the install appears to succeed. The published module code (index.js) is a benign stub exporting only { version: \"99.0.0\" }, consistent with a package built solely to deliver the install-time beacon.\n\nThe install-time payload is byte-for-byte identical across the campaign's packages (aftermath-finance, aftermath-sui, aftermathfi), all published by the same maintainer within seconds of each other and all beaconing to the same collector.\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (2ee11a2b0ba5e782bbb8b4a0c92881a1f401916fb85e0621c56f6db370490058)\nThe package's preinstall script (setup.js) enumerates process.env and selects keys matching credential-shaped patterns (key/secret/token/pass/auth/private/drone/gitea/sui/admin/deploy), collects host identity (os.hostname(), os.userInfo().username, process.cwd(), /etc/hostname) and source-repo identifiers (`git remote -v`), and POSTs the collected data over HTTPS with TLS verification disabled (rejectUnauthorized: false) to the hardcoded bare IPv4 endpoint https://2.25.140.71:8443/aftermath/npm-dep-conf. The behavior fires automatically on `npm install` via the preinstall lifecycle hook.\n","modified":"2026-08-04T22:04:53.960960890Z","published":"2026-07-20T00:00:00Z","database_specific":{"malicious-packages-origins":[{"id":"IN-MAL-2026-011004","import_time":"2026-08-04T21:33:13.210395272Z","modified_time":"2026-08-04T21:18:24Z","sha256":"2ee11a2b0ba5e782bbb8b4a0c92881a1f401916fb85e0621c56f6db370490058","source":"amazon-inspector","versions":["99.0.0"]}]},"references":[{"type":"WEB","url":"https://www.npmjs.com/package/aftermath-finance"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/aftermath-finance/v/99.0.0"}],"affected":[{"package":{"name":"aftermath-finance","ecosystem":"npm","purl":"pkg:npm/aftermath-finance"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"}]}],"versions":["99.0.0"],"database_specific":{"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/aftermath-finance/MAL-2026-10941.json","cwes":[{"name":"Embedded Malicious Code","cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature."},{"description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code","cweId":"CWE-506"}],"indicators":{"evidence_files":[{"tlsh":"6b1154e093f0f3719ea595a4f04b900b5153d0077d5b7c60f69881651f8d65ca5b2ce6","path":"setup.js","sha256":"729b7aaaa8b18cc377bc350faa056e25d043001ab7a86a65207b2fe676a0d808"}],"package_integrity":[{"filename":"aftermath-finance-99.0.0.tgz","hashes":{"sha1":"2286b6e136ace07bdf7554ae69d0232e51765d1b","sha512_sri":"sha512-u9pbiS35Nknq2yAoEZiu0np5bwZSWIGRB8TM1OIspZj7vLnAQcIPgM6gyv30VtW81XAL47N0HJLhFMr9Bvkn1Q=="}}]},"iocs":{"ips":["2.25.140.71"],"urls":["https://2.25.140.71:8443/aftermath/npm-dep-conf"]}}}],"schema_version":"1.8.0","credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"},{"name":"SafeDep","contact":["https://safedep.io"],"type":"FINDER"}]}