{"id":"MAL-2026-17805","summary":"Malicious code in @dransay/api (npm)","details":"@dransay/api@99.0.0 is a dependency-confusion probe claiming the internal `@dransay/*` namespace, not an identified public package. Its `preinstall` hook runs on npm install as `node beacon.js` and sends a DNS lookup and an HTTPS GET to `db3klhbi6i9hark1kegg174t38h33b6wt.oast.site`, using the package name in the request; npm account `0xamino_hunter` published it on 2026-10-08.\n\n---\n_-= Per source details. Do not edit below this line.=-_\n\n## Source: amazon-inspector (e237d11d4a80279031cdf312f3c879913d5ce485a74538e52b64a03a4332da34)\n@dransay/api@99.0.0 is a dependency-confusion-shaped package (unscoped-sounding name with an implausibly high version 99.0.0 and publishConfig public) whose package.json declares a preinstall script `node beacon.js`. On every `npm install`, beacon.js performs a DNS lookup and HTTPS GET to a hardcoded Interactsh out-of-band collaborator host `db3klhbi6i9hark1kegg174t38h33b6wt.oast.site`, with the package name included in the DNS label and HTTP path. This causes the installer's source IP, resolver IP, install timestamp, and the fact that the internal package name resolved against the public npm registry to be transmitted to a third-party OOB server. The pattern is consistent with a dependency-confusion probe: a package name chosen to collide with a target organization's internal package is published to the public registry at a very high version so that a misconfigured internal resolver pulls the public copy, and the preinstall beacon then signals the attacker that the confusion succeeded. No further payload is shipped in this version, but the install-time outbound call to an attacker-controlled OOB host occurs without installer opt-in and leaks installer-identifying information.\n","modified":"2026-10-12T14:30:19.845804313Z","published":"2026-10-08T07:58:05Z","database_specific":{"iocs":{"domains":["db3klhbi6i9hark1kegg174t38h33b6wt.oast.site"],"files":[{"paths":["package.json"],"source":"PACKAGE_ARCHIVE","digests":{"sha256":"28fe27a21165ca507e56156aef763eaa5694e4648bc2330347869d4a46d2e517"},"note":"preinstall script: node beacon.js"},{"digests":{"sha256":"b7e8039e3a8505c17e49d442c934bb1981da2fd904d4e87eb04b51420a749421"},"note":"Executed by the preinstall script of @dransay/api@99.0.0.","paths":["beacon.js"],"source":"PACKAGE_ARCHIVE"}],"urls":["https://db3klhbi6i9hark1kegg174t38h33b6wt.oast.site/api"]},"malicious-packages-origins":[{"sha256":"e237d11d4a80279031cdf312f3c879913d5ce485a74538e52b64a03a4332da34","source":"amazon-inspector","versions":["99.0.0"],"id":"IN-MAL-2026-021464","import_time":"2026-10-12T14:26:36.289766715Z","modified_time":"2026-10-12T14:24:29Z"}]},"references":[{"type":"PACKAGE","url":"https://www.npmjs.com/package/@dransay/api"},{"type":"PACKAGE","url":"https://www.npmjs.com/package/@dransay/api/v/99.0.0"}],"affected":[{"package":{"name":"@dransay/api","ecosystem":"npm","purl":"pkg:npm/%40dransay/api"},"versions":["99.0.0"],"database_specific":{"indicators":{"package_integrity":[{"hashes":{"sha1":"179268f42e2604acb96d91e4ebc8942909f1fd5f","sha512_sri":"sha512-pwoQJlSyHRkVGy3UEVPzJiyud1X32VUrvWyBw9FlQMG1VRGpdWS0+0VKprz1jOBvghESWu1J8S4Tj62LYG7Y8w=="},"filename":"api-99.0.0.tgz"}],"evidence_files":[{"path":"beacon.js","sha256":"b7e8039e3a8505c17e49d442c934bb1981da2fd904d4e87eb04b51420a749421","tlsh":"891125ad5ae42b00b1e9f4a4988e01e94b73d1a8844946c4f1cec3ab6e5347d17674fb"}]},"source":"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/@dransay/api/MAL-2026-17805.json","cwes":[{"description":"The product contains code that appears to be malicious in nature.","name":"Embedded Malicious Code","cweId":"CWE-506"},{"name":"Embedded Malicious Code","cweId":"CWE-506","description":"The product contains code that appears to be malicious in nature."}]}}],"schema_version":"1.9.0","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"}]}