{"id":"MAL-2026-17773","revision":"d5907b7c0ca74387b753f20c8c22b007","records":[{"revision":"d5907b7c0ca74387b753f20c8c22b007","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"MAL-2026-17773","aliases":[],"title":"Malicious code in nested-lib (npm)","description":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (0a0b849de5330a4a4984a855f83ce1638b17e459d359312319ff35dc0e02f928)\nThe package declares `scripts.postinstall = \"node beacon.cjs\"` and `index.js` also invokes `require('./beacon.cjs').fire()` at module load. `beacon.cjs` POSTs a JSON payload containing `os.hostname()`, `__dirname`, `process.cwd()`, and `process.version` over plain HTTP to the hardcoded bare-IP endpoint `http://185.158.107.175:8787/_ah/dc`. The destination is not a documented first-party service and the host identifiers are sent without any opt-in. `index.js` otherwise exports a Proxy that returns no-op functions for every property access, so the package provides no real functionality — its sole on-install and on-require effect is the beacon. The combination of a hollow Proxy shim, a bare-IP plain-HTTP destination, and automatic firing from both the npm lifecycle hook and the main module is consistent with a reconnaissance/confirmation beacon used to validate successful installation into target environments, typically preceding a second-stage payload.\n","state":0,"publishedAt":"2026-10-11T13:53:33+00:00","modifiedAt":"2026-10-11T14:30:06.7045299+00:00","affected":[{"ecosystem":"npm","name":"nested-lib","ranges":[],"versions":["1.0.0","1.0.1","1.1.0"],"rawVersionEvidence":null}],"metrics":[],"references":["https://www.npmjs.com/package/nested-lib/v/1.0.0","https://www.npmjs.com/package/nested-lib/v/1.0.1","https://www.npmjs.com/package/nested-lib/v/1.1.0"],"sourceUrl":"https://osv.dev/vulnerability/MAL-2026-17773","license":"OSV · upstream source license applies","key":"osv:MAL-2026-17773","identifiers":["MAL-2026-17773"]},"retained":false,"historicalAffected":[]}],"coverage":[]}