{"id":"MAL-2026-18275","revision":"7bef9f21a9cb44df9a7ed132844df066","records":[{"revision":"7bef9f21a9cb44df9a7ed132844df066","observedAt":"2026-10-26T04:25:30.072+00:00","statement":{"source":"osv","id":"MAL-2026-18275","aliases":[],"title":"Malicious code in @ppa-web-components/ppa-hotel-collection (npm)","description":"@ppa-web-components/ppa-hotel-collection is a dependency-confusion package: it is described as a \"Compatibility shim\", uses inflated version numbers, and its README calls it an \"authorized dependency-confusion test\". Each listed version (1.1.0, 1.0.0, 99.0.1, 2.0.1, 3.0.0) has a postinstall script that runs `node beacon.cjs` on npm install, and index.js calls the same code when the package is imported; it POSTs the hostname, install path and current working directory over plain HTTP to `http://185.158.107.175:8787/_ah/dc`, and index.js exports a Proxy that returns no-op functions so builds importing the real package keep running. The npm account wiseke published 14 such packages under the @greenlake, @sxm-web, @drone-js-ext and @ppa-web-components scopes between 2026-10-23 21:23 and 2026-10-25 14:28 UTC; index.js is byte-identical to that of ph-common (MAL-2026-1809), which sends to the same endpoint.\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (e442008a433c1edbe8fb25f9b47dd3123f5664672c3901167fc9d3add8a6bd6e)\n@ppa-web-components/ppa-hotel-collection@1.1.0 is a stub package whose only functional code is a callback beacon. The package.json declares scripts.postinstall: \"node beacon.cjs\", and the same beacon.cjs is also triggered via the main entry on require(). beacon.cjs collects os.hostname(), __dirname, process.cwd(), and process.version/npm version and POSTs them to the hardcoded bare-IP URL http://185.158.107.175:8787/_ah/dc over cleartext HTTP. The destination is unrelated to any legitimate publisher infrastructure for the @ppa-web-components scope. The package's only export is a no-op Proxy, and the description self-labels as \"Compatibility shim.\" with internal comments noting that a build which \"completes and calls back is cleaner evidence\" — consistent with a dependency-confusion probe targeting an internal @ppa-web-components namespace. Installing or requiring the package automatically exfiltrates host and path identifiers to attacker-controlled infrastructure, marking the installer's build system as reachable for follow-on targeting.\n","state":0,"publishedAt":"2026-10-25T14:26:45+00:00","modifiedAt":"2026-10-26T03:30:06.1654279+00:00","affected":[{"ecosystem":"npm","name":"@ppa-web-components/ppa-hotel-collection","ranges":[],"versions":["99.0.1","1.1.0","3.0.0","1.0.0","2.0.1"],"rawVersionEvidence":null}],"metrics":[],"references":["https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection/v/99.0.1","https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection/v/1.1.0","https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection/v/3.0.0","https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection/v/1.0.0","https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection/v/2.0.1","https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection"],"sourceUrl":"https://osv.dev/vulnerability/MAL-2026-18275","license":"OSV · upstream source license applies","key":"osv:MAL-2026-18275","identifiers":["MAL-2026-18275"]},"retained":false,"historicalAffected":[]}],"coverage":[]}