{"schema_version":"1.9.0","id":"MAL-2026-18275","published":"2026-10-25T14:26:45Z","modified":"2026-10-26T03:30:06.165427913Z","summary":"Malicious code in @ppa-web-components/ppa-hotel-collection (npm)","details":"@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","affected":[{"package":{"name":"@ppa-web-components/ppa-hotel-collection","ecosystem":"npm","purl":"pkg:npm/%40ppa-web-components/ppa-hotel-collection"},"versions":["99.0.1","1.1.0","3.0.0","1.0.0","2.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"},{"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":"9edb87cd0f581c21b987585076020ecf1e71403753a4f11677bb12c998f545c5","tlsh":"cf3161efa8e0a0089aeb7098c54f1409b27bf0079501ab50fd5c82959f7257c33fa8dc"},{"path":"index.js","sha256":"a86a4da763bbb34c16f361abe7aab66d5df591b66867ac8160041f932159b08d","tlsh":"2201d0d7225661b10b5221a4978f43c4a3b99d74027941d0d84a9226365108c463b8ee"}],"package_integrity":[{"filename":"ppa-hotel-collection-99.0.1.tgz","hashes":{"sha1":"6be40f1c95f495077960f6ac7f855966bc357bc9","sha512_sri":"sha512-COnxX8pl9VV0xKuqz6+Ch5UBPbf4YleWm8uwjURwK/fFrDTJe1QHpOxDbybDJil/ReshKEoatxJVJ0tg1l7FGg=="}}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/@ppa-web-components/ppa-hotel-collection/MAL-2026-18275.json"}}],"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection/v/99.0.1"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection/v/1.1.0"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection/v/3.0.0"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection/v/1.0.0"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection/v/2.0.1"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@ppa-web-components/ppa-hotel-collection"}],"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":"40b627825658a0f9b42441810b01e877ab73b687274803db083b4d5053447be5"},"note":"postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (@ppa-web-components/ppa-hotel-collection@1.1.0).","paths":["package.json"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"9edb87cd0f581c21b987585076020ecf1e71403753a4f11677bb12c998f545c5"},"note":"Executed by the postinstall script of @ppa-web-components/ppa-hotel-collection@1.1.0.","paths":["beacon.cjs"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"6715c5375ce52915787798b2f75316f0e5d620ac3466a0e21e39463a690dc2cd"},"note":"postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (@ppa-web-components/ppa-hotel-collection@1.0.0).","paths":["package.json"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"9edb87cd0f581c21b987585076020ecf1e71403753a4f11677bb12c998f545c5"},"note":"Executed by the postinstall script of @ppa-web-components/ppa-hotel-collection@1.0.0.","paths":["beacon.cjs"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"38acb4b8fb570e8e887a2c362d6d67227810c5deed9fadcfe7a7f5bb61d3107f"},"note":"postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (@ppa-web-components/ppa-hotel-collection@99.0.1).","paths":["package.json"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"9edb87cd0f581c21b987585076020ecf1e71403753a4f11677bb12c998f545c5"},"note":"Executed by the postinstall script of @ppa-web-components/ppa-hotel-collection@99.0.1.","paths":["beacon.cjs"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"9f8798d74299e7a66c05b1f0bcf0fdd48bb7c228cb77d5f2103cb31481243e0f"},"note":"postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (@ppa-web-components/ppa-hotel-collection@2.0.1).","paths":["package.json"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"9edb87cd0f581c21b987585076020ecf1e71403753a4f11677bb12c998f545c5"},"note":"Executed by the postinstall script of @ppa-web-components/ppa-hotel-collection@2.0.1.","paths":["beacon.cjs"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"e08f911e1d22b486416b4482c8b59fa502057e9d496980457d5715ddc5548901"},"note":"postinstall script runs `node beacon.cjs`, which POSTs hostname, install path and cwd to http://185.158.107.175:8787/_ah/dc (@ppa-web-components/ppa-hotel-collection@3.0.0).","paths":["package.json"],"source":"PACKAGE_ARCHIVE"},{"digests":{"sha256":"9edb87cd0f581c21b987585076020ecf1e71403753a4f11677bb12c998f545c5"},"note":"Executed by the postinstall script of @ppa-web-components/ppa-hotel-collection@3.0.0.","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-021655","import_time":"2026-10-25T14:39:51.8299629Z","modified_time":"2026-10-25T14:38:47Z","sha256":"79c01e5cd9accbd2f679b11f151a03bfb2793a50490ae9a97f8ebfd6515e5eb6","source":"amazon-inspector","versions":["99.0.1"]},{"id":"IN-MAL-2026-021651","import_time":"2026-10-25T14:39:51.70446155Z","modified_time":"2026-10-25T14:38:19Z","sha256":"e442008a433c1edbe8fb25f9b47dd3123f5664672c3901167fc9d3add8a6bd6e","source":"amazon-inspector","versions":["1.1.0"]},{"id":"IN-MAL-2026-021652","import_time":"2026-10-25T14:39:51.738789555Z","modified_time":"2026-10-25T14:38:26Z","sha256":"90e1177495a62104fc3642faacfc70682252b925c35632673e6357b844748791","source":"amazon-inspector","versions":["3.0.0"]},{"id":"IN-MAL-2026-021653","import_time":"2026-10-25T14:39:51.769471747Z","modified_time":"2026-10-25T14:38:33Z","sha256":"a086f064036e6d43268ce3396ae6068a3ac9e2f2fa7f1636f64039b88864ba98","source":"amazon-inspector","versions":["1.0.0"]},{"id":"IN-MAL-2026-021650","import_time":"2026-10-25T14:39:51.675236309Z","modified_time":"2026-10-25T14:38:09Z","sha256":"d5157f4c405a682213856c9849e643365295e3b95a7a2288dbc3b512960eb247","source":"amazon-inspector","versions":["2.0.1"]}]},"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"}]}