{"id":"MAL-2026-10776","summary":"Malicious code in n8n-nodes-final-mile (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (d2c87dad5030c245317bd34041521d73d8c112d79018db381d749c80739d539f)\nThe package advertises itself as a community utility node for n8n but its declared main (index.js) is a self-executing IIFE that runs the moment n8n loads the module. On execution it (1) opens a reverse shell by spawning /bin/bash with stdio redirected via /dev/tcp to 103.27.109.184:8895, giving the operator of that host interactive root-level control of the installer; (2) attempts multiple Docker-based container escapes (bind-mounting the host root filesystem, and --privileged nsenter) to append a hardcoded attacker ssh-ed25519 public key labeled 'n8n-backdoor' to /root/.ssh/authorized_keys on the underlying host for persistent SSH access; (3) collects hostname, user id, network interfaces, docker ps output, environment variables, and the contents of /etc/shadow, /etc/kubernetes/kubelet.conf, and /root/.kube/config obtained via the Docker escape, and posts the results as JSON over TCP to 103.27.109.184 on ports 8890 and 8891. A separate MyNode.js file is a benign-looking stub referenced by package.json's n8n.nodes to serve as cover while index.js carries the payload.\n\n## Source: ossf-package-analysis (05b380bdd6ee5152383cbfbc76d5bd8814a303ecf1b7147b9fdef008f277f2a3)\nThe OpenSSF Package Analysis project identified 'n8n-nodes-final-mile' @ 1.0.5 (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-08-04T22:05:09.899907814Z","published":"2026-07-17T13:26:59Z","database_specific":{"malicious-packages-origins":[{"sha256":"05b380bdd6ee5152383cbfbc76d5bd8814a303ecf1b7147b9fdef008f277f2a3","source":"ossf-package-analysis","versions":["1.0.5"],"import_time":"2026-07-18T07:10:20.827353224Z","modified_time":"2026-07-17T13:26:59Z"},{"modified_time":"2026-07-22T20:30:39Z","sha256":"fa998607f0d75c91065c907c6dcb5f95486cd5c2434345489229c32ff81a95e1","source":"amazon-inspector","versions":["1.0.1"],"id":"IN-MAL-2026-010808","import_time":"2026-07-22T20:31:08.271197282Z"},{"import_time":"2026-07-22T20:59:12.844991568Z","modified_time":"2026-07-22T20:35:38Z","sha256":"14b90f054f4ef385c3a82d640fe3c14be981a63211cc3e954fce6daf0e3f46af","source":"amazon-inspector","versions":["1.0.3"],"id":"IN-MAL-2026-010823"},{"id":"IN-MAL-2026-010817","import_time":"2026-07-22T20:59:11.925685342Z","modified_time":"2026-07-22T20:34:48Z","sha256":"28f059e99eadb9dda1ec8bbb04763e4b0dd8a2205486ae3a9f779d36c0a8f852","source":"amazon-inspector","versions":["1.0.4"]},{"import_time":"2026-07-22T20:59:14.767459085Z","modified_time":"2026-07-22T20:37:40Z","sha256":"b747e9249d1736319be7168241c2d9614c65afb61c4c7f3cbca8291d7d9b917e","source":"amazon-inspector","versions":["1.0.0"],"id":"IN-MAL-2026-010836"},{"import_time":"2026-07-22T20:59:13.571533659Z","modified_time":"2026-07-22T20:36:13Z","sha256":"d2c87dad5030c245317bd34041521d73d8c112d79018db381d749c80739d539f","source":"amazon-inspector","versions":["1.0.2"],"id":"IN-MAL-2026-010827"},{"import_time":"2026-08-04T21:33:13.32060786Z","modified_time":"2026-08-04T21:18:51Z","sha256":"71827518a11831a8654d20f026765d09f3f543fdf51d51a5cb094df74e681d02","source":"amazon-inspector","versions":["1.0.5"],"id":"IN-MAL-2026-011007"}]},"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/n8n-nodes-final-mile/v/1.0.1"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/n8n-nodes-final-mile/v/1.0.3"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/n8n-nodes-final-mile/v/1.0.4"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/n8n-nodes-final-mile/v/1.0.0"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/n8n-nodes-final-mile/v/1.0.2"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/n8n-nodes-final-mile/v/1.0.5"}],"affected":[{"package":{"name":"n8n-nodes-final-mile","ecosystem":"npm","purl":"pkg:npm/n8n-nodes-final-mile"},"versions":["1.0.5","1.0.1","1.0.3","1.0.4","1.0.0","1.0.2"],"database_specific":{"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"},{"description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code","cweId":"CWE-506"},{"name":"Embedded Malicious Code","cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature."},{"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"}],"indicators":{"package_integrity":[{"filename":"n8n-nodes-final-mile-1.0.1.tgz","hashes":{"sha1":"57bd4e8ddb3cea10cbe5bd50052d1c34cc7376c4","sha512_sri":"sha512-sS0V4BGMGU7PtQWMscg+s6PH768okymj7CZiuPLveiMVS0EvZaf4X0fnSA+JMywtA/6A+8wOJWSa1YUEiW4SjA=="}}],"evidence_files":[{"sha256":"574bd5a76bd495f5de17d44129cd09c58a36d58c1c144260ab4bef8ce21dca61","tlsh":"bc3103e8fd785630b137f06866af200b3853d4070254ba9870abc7b1af5dbdd65945f8","path":"index.js"},{"path":"package.json","sha256":"780e13bec1073e0a4ed46142800c4b1d0129bfd1ee20e4956e40a69a8feabc6d","tlsh":"25d023150d33c63311c4ad7129ba960636690c965084bd195747140543ad6b724f923d"}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/n8n-nodes-final-mile/MAL-2026-10776.json"}}],"schema_version":"1.8.0","credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"},{"name":"OpenSSF: Package Analysis","contact":["https://github.com/ossf/package-analysis","https://openssf.slack.com/channels/package_analysis"],"type":"FINDER"}]}