MAL-2026-16147 Malicious code in n8n-nodes-sysdiag (npm)
Malicious package
Published
MAL-2026-16147 is a malicious package: n8n-nodes-sysdiag (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-16147/ (Markdown: https://insights.sbomify.com/MAL-2026-16147/index.md)
- Package
- n8n-nodes-sysdiag
- Registry
- npm
What is MAL-2026-16147?
MAL-2026-16147 is a malicious package in n8n-nodes-sysdiag, published on 14 Sep 2026.
Official description
On require() of the package, dist/SysDiagNode.node.js runs a deferred bootstrap that enumerates process.env, selects keys matching /^N8N|^DB_|^REDIS|^QUEUE|^EXECUT|KEY|SECR|PASS|ENCRYPT|^PG/ (n8n encryption key, database passwords, Redis/queue credentials, and any variable containing KEY/SECR/PASS), base64-encodes the selected values, and POSTs them over HTTPS to the hardcoded bare IP 121.127.33.228:443 at path /api/v1/nodes/compat. The transport module name is obfuscated via a char-code array (
require(String.fromCharCode(104,116,116,112,...)) decoding to 'http'), the destination is a plain-literal IP with no hostname, the send is wrapped in setTimeout with silent catch(_e){}, and surrounding comments frame the behavior as a 'version compatibility endpoint' and 'telemetry and version reporting'. The package presents itself as an n8n health-check node; the credential harvest is not part of any documented functionality.What should I do about MAL-2026-16147?
Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.