{"schema_version":"1.9.0","id":"MAL-2026-18277","published":"2026-10-25T04:50:18Z","modified":"2026-10-26T06:45:16.043763839Z","summary":"Malicious code in @drone-js-ext/vip-badge (npm)","details":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (914f57c3481f23f4682ff7bdd7b9849865531023c6d547ed76d42e9da6bbd8dc)\n@drone-js-ext/vip-badge is a functionless stub whose only behavior is a phone-home beacon. The package.json postinstall script runs `node beacon.cjs`, and `index.js` fires the same beacon on `require()` while exporting a Proxy that returns no-ops for every property access. beacon.cjs collects the installer's hostname (`os.hostname()`), install path (`__dirname`), current working directory (`process.cwd()`), Node.js version, and package coordinate, then POSTs them as JSON to the hardcoded bare-IP endpoint http://185.158.107.175:8787/_ah/dc over plain HTTP. The destination is not the npm registry, not a publisher-owned domain, and is reached automatically at install time and on module load without any caller invocation. The scope name mimics a plausible internal/vendor namespace, and the shipped contents match the dependency-confusion beacon pattern — a stub published to prove install on target networks and disclose host identity to an uncontrolled third party.\n","affected":[{"package":{"name":"@drone-js-ext/vip-badge","ecosystem":"npm","purl":"pkg:npm/%40drone-js-ext/vip-badge"},"versions":["99.0.1","0.0.1","2.0.0","1.0.1"],"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"},{"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"},{"cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code"}],"indicators":{"evidence_files":[{"path":"beacon.cjs","sha256":"566a01cf4e155a8664de6672ea54db5e8604946e10f79079ee17006c80166498","tlsh":"8e3161eba8e0a0489aa67498c94f0409f27af4468401ab50fd5c82915f6153c33fa8dc"},{"path":"index.js","sha256":"a86a4da763bbb34c16f361abe7aab66d5df591b66867ac8160041f932159b08d","tlsh":"2201d0d7225661b10b5221a4978f43c4a3b99d74027941d0d84a9226365108c463b8ee"}],"package_integrity":[{"filename":"vip-badge-99.0.1.tgz","hashes":{"sha1":"b24d2fc904d573fbab38335048db479ad0c7c1ca","sha512_sri":"sha512-l14wF+MlYU9fkLA2+pM5QJc78D2g6SUdAJEtVj4zNl02l9dwBgDxPgZI/iN0U0PLnfv+mcxHyons+k87nmqL/w=="}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/@drone-js-ext/vip-badge/MAL-2026-18277.json"}}],"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/@drone-js-ext/vip-badge/v/99.0.1"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@drone-js-ext/vip-badge"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@drone-js-ext/vip-badge/v/1.0.1"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@drone-js-ext/vip-badge/v/0.0.1"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@drone-js-ext/vip-badge/v/2.0.0"}],"database_specific":{"iocs":{"files":[{"digests":{"sha256":"a86a4da763bbb34c16f361abe7aab66d5df591b66867ac8160041f932159b08d"},"note":"Main entry point; calls beacon.cjs fire() on import and exports a no-op Proxy. Identical in all listed versions and in ph-common (MAL-2026-1809).","paths":["index.js"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"4b7ba2b11b11285ee281eb19f69c92306a1dc7007a1edad0f063e607955ec9ac"},"note":"postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (@drone-js-ext/vip-badge@0.0.1).","paths":["package.json"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"566a01cf4e155a8664de6672ea54db5e8604946e10f79079ee17006c80166498"},"note":"Executed by the postinstall script of @drone-js-ext/vip-badge@0.0.1.","paths":["beacon.cjs"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"72480565ef311ef58b260ef4ee2aa137285f822ae0bc01ae0f727653f5dae5bf"},"note":"postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (@drone-js-ext/vip-badge@2.0.0).","paths":["package.json"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"566a01cf4e155a8664de6672ea54db5e8604946e10f79079ee17006c80166498"},"note":"Executed by the postinstall script of @drone-js-ext/vip-badge@2.0.0.","paths":["beacon.cjs"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"b8f29690e66d6cce64435f29ae490d8a774802aec50a81c2352740449a1d4218"},"note":"postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (@drone-js-ext/vip-badge@1.0.1).","paths":["package.json"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"566a01cf4e155a8664de6672ea54db5e8604946e10f79079ee17006c80166498"},"note":"Executed by the postinstall script of @drone-js-ext/vip-badge@1.0.1.","paths":["beacon.cjs"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"56500ea3c0352085d51cd9c13ad4ef2b9fd69d4a50d7cafe986a8df1fd8a0e52"},"note":"postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (@drone-js-ext/vip-badge@99.0.1).","paths":["package.json"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"566a01cf4e155a8664de6672ea54db5e8604946e10f79079ee17006c80166498"},"note":"Executed by the postinstall script of @drone-js-ext/vip-badge@99.0.1.","paths":["beacon.cjs"],"source":"PACKAGE_ARCHIVE"}],"ips":["185.158.107.175"],"urls":["http://185.158.107.175:8787/_ah/dc"]},"malicious-packages-origins":[{"id":"IN-MAL-2026-021705","import_time":"2026-10-25T15:15:15.469550707Z","modified_time":"2026-10-25T15:09:29Z","sha256":"2f7afa65da63d3360d15659ebdcce5f5078fa7bd210e04c069f88834f0c1f75c","source":"amazon-inspector","versions":["99.0.1"]},{"id":"IN-MAL-2026-021755","import_time":"2026-10-26T06:39:40.531194444Z","modified_time":"2026-10-26T06:28:55Z","sha256":"a72dc75c3fb04f5251af3613234ad65047f05848433b0d2517b02c57f2e88d6a","source":"amazon-inspector","versions":["1.0.1"]},{"id":"IN-MAL-2026-021757","import_time":"2026-10-26T06:39:40.678906865Z","modified_time":"2026-10-26T06:29:11Z","sha256":"b72421a7d6cf3aee21c447b62ebd81354db2035ba376d71697f2d520efecf9ea","source":"amazon-inspector","versions":["0.0.1"]},{"id":"IN-MAL-2026-021751","import_time":"2026-10-26T06:39:40.286266108Z","modified_time":"2026-10-26T06:28:28Z","sha256":"914f57c3481f23f4682ff7bdd7b9849865531023c6d547ed76d42e9da6bbd8dc","source":"amazon-inspector","versions":["2.0.0"]}]},"credits":[{"name":"Amazon Inspector","contact":["inspector-research@amazon.com"],"type":"FINDER"},{"name":"InvisiRisk, Inc.","contact":["https://www.invisirisk.com","mailto:research@invisirisk.com"],"type":"FINDER"}]}