MAL-2026-11003 Malicious code in n8n-nodes-net-utils (npm)
Malicious package
Published
MAL-2026-11003 is a malicious package: n8n-nodes-net-utils (npm). Every version was published to cause harm.
Task:
1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.
2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.
3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.
4. If the package is not used anywhere, say so and change nothing.
Reference: https://insights.sbomify.com/MAL-2026-11003/ (Markdown: https://insights.sbomify.com/MAL-2026-11003/index.md)
- Package
- n8n-nodes-net-utils
- Registry
- npm
What is MAL-2026-11003?
MAL-2026-11003 is a malicious package in n8n-nodes-net-utils, published on 22 Jul 2026.
Official description
The package advertises itself as an n8n community 'Network Utils' node, but its main entry (index.js) is an IIFE that executes on require. On load it: (1) spawns /bin/bash and connects it to a hardcoded C2 at 103.27.109.184:8895 over /dev/tcp, providing an interactive reverse shell to the installer's machine; (2) collects host reconnaissance (hostname, id, hostname -I, docker ps, kubelet.conf, ~/.kube/config, Evolution API admin/admin probes) and sends the results over raw TCP to 103.27.109.184 on ports 8890 and 8891; (3) uses
docker run -v /:/host and a privileged nsenter -t 1 container escape to append an attacker ssh-ed25519 key (labeled 'n8n-backdoor') into /root/.ssh/authorized_keys on the underlying Docker host with mode 600, establishing persistent root SSH access; (4) reads Kubernetes credentials (/etc/kubernetes/kubelet.conf and /root/.kube/config) from the host via the same Docker bind-mount and ships them to the C2. The included MyNode.js is a trivial no-op n8n node acting as cover; a package/ subdirectory contains an earlier variant with the same C2 IP.What should I do about MAL-2026-11003?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.