{"id":"MAL-2026-16418","revision":null,"records":[{"revision":"af4c792c7b76405ab371e76ac795f55d","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"MAL-2026-16418","aliases":[],"title":"Malicious code in n8n-nodes-data-transformer-utils (npm)","description":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (77b996187dc49e5591ddf3cef428be3a9309e7f5bab48bd4698aed2be0c3dfb0)\nThe package's postinstall.js runs automatically on npm install and combines child_process.execSync with http/https.request and multiple curl invocations to collect host information (including reads of /etc/hosts) and POST/GET the results to a remote endpoint. The file uses a hardcoded hostname target, executes shell commands to gather system data, and transmits it over HTTP without any relation to the package's advertised data-transformation purpose. The package name mimics the n8n community-node naming convention, providing a lure for users seeking legitimate n8n utilities. Installing the package on default settings triggers immediate host reconnaissance and outbound exfiltration to an attacker-controlled destination.\n","state":0,"publishedAt":"2026-09-22T21:52:37+00:00","modifiedAt":"2026-09-22T22:30:06.1622359+00:00","affected":[{"ecosystem":"npm","name":"n8n-nodes-data-transformer-utils","ranges":[],"versions":["1.0.0"],"rawVersionEvidence":null}],"metrics":[],"references":["https://www.npmjs.com/package/n8n-nodes-data-transformer-utils/v/1.0.0"],"sourceUrl":"https://osv.dev/vulnerability/MAL-2026-16418","license":"OSV · upstream source license applies","key":"osv:MAL-2026-16418","identifiers":["MAL-2026-16418"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-12T21:16:34.5730792+00:00","complete":true,"records":1779,"lastAttemptAt":"2026-11-12T21:16:34.5730792+00:00","lastSuccessAt":"2026-11-12T21:16:34.7781818+00:00","error":null,"lastVerifiedAt":"2026-11-12T21:16:34.7781851+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-64752486c567b55b31fb0d7225f5222bcd0019564ac0ac5f0649e242c7b19299-203e202fbd67c0cbc347ba020411be78e9e154b4ca5912ba08a1c1b61a3b79e8","complete":true,"records":424847,"lastAttemptAt":"2026-11-12T21:16:24.9956006+00:00","lastSuccessAt":"2026-11-12T21:16:24.6892247+00:00","error":null,"lastVerifiedAt":"2026-11-12T21:16:24.9956006+00:00","snapshotPublishedAt":"2026-11-12T20:19:13+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-1253d9ed54bb4e1a8c191d635f5090a8","complete":true,"records":13780,"lastAttemptAt":"2026-11-12T21:17:25.2880474+00:00","lastSuccessAt":"2026-11-12T21:17:25.284+00:00","error":null,"lastVerifiedAt":"2026-11-12T21:17:25.284+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13833,"expectedIdentifiers":13833,"failedIdentifiers":0},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-12T21:16:34.5730792+00:00","complete":true,"records":1123,"lastAttemptAt":"2026-11-12T21:16:34.5730792+00:00","lastSuccessAt":"2026-11-12T21:16:34.7790575+00:00","error":null,"lastVerifiedAt":"2026-11-12T21:16:34.7790576+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-c7da84f937d546f9bc47709812462004","complete":false,"records":13780,"lastAttemptAt":"2026-11-12T21:17:00.3939011+00:00","lastSuccessAt":"2026-11-12T21:17:00.39+00:00","error":null,"lastVerifiedAt":"2026-11-12T21:17:00.39+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13830,"expectedIdentifiers":13833,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-0db4c534aaa8e6aa34cb4db66b1c3dbcd45a9d81a0f263fa9d438e08e81869b0","complete":true,"records":9952,"lastAttemptAt":"2026-11-12T21:16:34.5223929+00:00","lastSuccessAt":"2026-11-12T21:16:34.1869923+00:00","error":null,"lastVerifiedAt":"2026-11-12T21:16:34.5223929+00:00","snapshotPublishedAt":"2026-11-12T21:03:11+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-4d60731753a2f72e455d1086e7203d0ef10843936dcc1cf2b45135e2caa204b0","complete":true,"records":2012,"lastAttemptAt":"2026-11-12T21:16:25.0464832+00:00","lastSuccessAt":"2026-11-12T18:16:50.7862525+00:00","error":null,"lastVerifiedAt":"2026-11-12T21:16:25.0464832+00:00","snapshotPublishedAt":"2026-11-12T17:48:11+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-0d57668ba92a2918d0664e89ea91d467f8e6a2bc6330923eb883b74ac42a14ec","complete":true,"records":3125,"lastAttemptAt":"2026-11-12T21:16:34.5377517+00:00","lastSuccessAt":"2026-11-12T15:18:36.6112732+00:00","error":null,"lastVerifiedAt":"2026-11-12T21:16:34.5377517+00:00","snapshotPublishedAt":"2026-11-12T14:48:37+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-aacb2ea0a84f684226fd5e421ed31635112d695f522f1d5914b6afab8cc7f03c","complete":true,"records":231724,"lastAttemptAt":"2026-11-12T21:16:25.1509038+00:00","lastSuccessAt":"2026-11-12T20:18:18.1230476+00:00","error":null,"lastVerifiedAt":"2026-11-12T21:16:25.1509038+00:00","snapshotPublishedAt":"2026-11-12T19:33:03+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}