{"id":"MAL-2026-18278","revision":"83ec43346a204e619c7e07a7dc90ce59","records":[{"revision":"83ec43346a204e619c7e07a7dc90ce59","observedAt":"2026-10-25T16:17:16.268+00:00","statement":{"source":"osv","id":"MAL-2026-18278","aliases":[],"title":"Malicious code in @factoryz/apollo (npm)","description":"\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (5adaa62818c76a10cbf0b536a6854633e24a73028c803fc597c5b5ec1d78b8ad)\nThe package ships only an empty stub (`module.exports = {}`) and a manifest whose sole dependency `ltidisafe` is resolved from a hardcoded off-registry HTTPS URL (`https://ltidi.storage.googleapis.com/depenconf/ltidisafe-3.8.7.tgz`) rather than a registry version range. `npm install @factoryz/apollo` fetches whatever bytes that URL returns and installs them, executing any lifecycle scripts (preinstall/install/postinstall) contained in the fetched tarball. There is no version pin, no integrity (`sshasum`) check, and no publisher binding — the host controller can swap the tarball contents at any time. The version number `99.9.1` is implausibly high for a package whose shipped code is a one-line stub, consistent with a dependency-confusion / resolution-winning shape. The lure package itself contains no other logic; the manifest IS the payload.\n","state":0,"publishedAt":"2026-10-25T15:05:42+00:00","modifiedAt":"2026-10-25T15:30:05.5612722+00:00","affected":[{"ecosystem":"npm","name":"@factoryz/apollo","ranges":[],"versions":["99.9.1"],"rawVersionEvidence":null}],"metrics":[],"references":["https://www.npmjs.com/package/@factoryz/apollo/v/99.9.1"],"sourceUrl":"https://osv.dev/vulnerability/MAL-2026-18278","license":"OSV · upstream source license applies","key":"osv:MAL-2026-18278","identifiers":["MAL-2026-18278"]},"retained":false,"historicalAffected":[]}],"coverage":[]}