{"id":"MAL-2026-18277","revision":"80b90b65aff54ee4b06808612257e03c","records":[{"revision":"80b90b65aff54ee4b06808612257e03c","observedAt":"2026-10-26T04:25:30.072+00:00","statement":{"source":"osv","id":"MAL-2026-18277","aliases":[],"title":"Malicious code in @drone-js-ext/vip-badge (npm)","description":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (2f7afa65da63d3360d15659ebdcce5f5078fa7bd210e04c069f88834f0c1f75c)\nThe package is a zero-functionality stub whose main module (index.js) exports a Proxy returning no-op functions for any property access. Its only real behavior is a beacon implemented in beacon.cjs that collects installer host identifiers (os.hostname(), __dirname, process.cwd(), process.version, and related os/process fields) and POSTs them over plain HTTP to the hardcoded bare-IP endpoint http://185.158.107.175:8787/_ah/dc. The beacon fires both from the postinstall lifecycle script (triggered automatically by npm install) and at require() time of the main entry. The destination is not a publisher-owned domain, is not configurable, and is not disclosed. The scoped name, implausibly high version (99.0.1), stub implementation, and install-time recon beacon are consistent with a dependency-confusion or typosquat probe harvesting internal installs.\n","state":0,"publishedAt":"2026-10-25T04:50:18+00:00","modifiedAt":"2026-10-26T03:30:06.1606006+00:00","affected":[{"ecosystem":"npm","name":"@drone-js-ext/vip-badge","ranges":[],"versions":["99.0.1","0.0.1","2.0.0","1.0.1"],"rawVersionEvidence":null}],"metrics":[],"references":["https://www.npmjs.com/package/@drone-js-ext/vip-badge/v/99.0.1","https://www.npmjs.com/package/@drone-js-ext/vip-badge"],"sourceUrl":"https://osv.dev/vulnerability/MAL-2026-18277","license":"OSV · upstream source license applies","key":"osv:MAL-2026-18277","identifiers":["MAL-2026-18277"]},"retained":false,"historicalAffected":[]}],"coverage":[]}