Malicious code in @dransay/db (npm)
@dransay/db@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. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (dc3d55a63787b5f45312d0b8433f6e782b2a6b28e89ef6377e24e5d26c757a61) On npm install, the package's preinstall hook executes beacon.js, which performs a DNS lookup and HTTPS GET to a hardcoded interactsh (OAST) subdomain under oast.site, embedding the package name in the path. The implausibly high version number (99.0.0) combined with the generic scope-plus-name is the canonical shape of a dependency-confusion probe: publish a public package reusing an internal name at a version high enough to win resolution, and record every host that resolves it. Each install leaks the installer's egress IP and the fact that an internal-named package was pulled from the public registry to a third-party-controlled collector, confirming to the operator that the target organization is exploitable for a follow-on malicious release under the same name. No installer secrets, environment variables, or filesystem contents are read, and no remote code is executed from the response, but the beacon itself materializes attacker benefit (reconnaiss
- Products
- @dransay/db
- Affected versions
- 99.0.0
- Fixed versions
- Not specified
- CVEs
- Not specified
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 30 Oct 2026, 06:02 UTC · Revision 1
Source evidence
@dransay/db@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. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (dc3d55a63787b5f45312d0b8433f6e782b2a6b28e89ef6377e24e5d26c757a61) On npm install, the package's preinstall hook executes beacon.js, which performs a DNS lookup and HTTPS GET to a hardcoded interactsh (OAST) subdomain under oast.site, embedding the package name in the path. The implausibly high version number (99.0.0) combined with the generic scope-plus-name is the canonical shape of a dependency-confusion probe: publish a public package reusing an internal name at a version high enough to win resolution, and record every host that resolves it. Each install leaks the installer's egress IP and the fact that an internal-named package was pulled from the public registry to a third-party-controlled collector, confirming to the operator that the target organization is exploitable for a follow-on malicious release under the same name. No installer secrets, environment variables, or filesystem contents are read, and no remote code is executed from the response, but the beacon itself materializes attacker benefit (reconnaiss
osv:MAL-2026-17695
@dransay/db
Fixed versions: Not specified
Complete source record
{
"id": "4ca72edfbe1feedd92c8045e5a7f428bb2b86137c09c6d0d6b81893271066a52",
"url": "https://osv.dev/vulnerability/MAL-2026-17695",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Malicious code in @dransay/db (npm)",
"summary": "@dransay/db@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. --- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (dc3d55a63787b5f45312d0b8433f6e782b2a6b28e89ef6377e24e5d26c757a61) On npm install, the package's preinstall hook executes beacon.js, which performs a DNS lookup and HTTPS GET to a hardcoded interactsh (OAST) subdomain under oast.site, embedding the package name in the path. The implausibly high version number (99.0.0) combined with the generic scope-plus-name is the canonical shape of a dependency-confusion probe: publish a public package reusing an internal name at a version high enough to win resolution, and record every host that resolves it. Each install leaks the installer's egress IP and the fact that an internal-named package was pulled from the public registry to a third-party-controlled collector, confirming to the operator that the target organization is exploitable for a follow-on malicious release under the same name. No installer secrets, environment variables, or filesystem contents are read, and no remote code is executed from the response, but the beacon itself materializes attacker benefit (reconnaiss",
"evidence": "osv:MAL-2026-17695",
"products": [
{
"name": {
"value": "@dransay/db",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "99.0.0",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "unknown",
"structured": {
"id": "MAL-2026-17695",
"aliases": [
"MAL-2026-17695"
],
"affected": [
{
"package": {
"name": "@dransay/db",
"purl": "pkg:npm/%40dransay/db",
"ecosystem": "npm"
},
"versions": [
"99.0.0"
],
"database_specific": {
"cwes": [
{
"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."
}
],
"source": "https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/@dransay/db/MAL-2026-17695.json",
"indicators": {
"evidence_files": [
{
"path": "beacon.js",
"tlsh": "6f1165ac0ae42b00b1e8f4a4888e01e84b73d1a8844946c0f2cec3ab5e5347c17674fb",
"sha256": "0cd9afa4808217e8686a3cfa514b9d22d7b3eb8cfa7e33a51326a0d9b84dcb17"
}
],
"package_integrity": [
{
"hashes": {
"sha1": "e2187ad013e576c05de9c3d018da521c88c0ac17",
"sha512_sri": "sha512-G3PjRwIxfqXaOYaOQoOZI7MWgFb1vpL2NH6F/IYzvfVhqODTqMpWWg9fLZpOGqAKOnFCxk+SswZsBhDDCwKFsQ=="
},
"filename": "db-99.0.0.tgz"
}
]
}
}
}
],
"modified": "2026-10-12T04:45:05.857757525Z",
"provider": "osv",
"references": [
"https://www.npmjs.com/package/@dransay/db/v/99.0.0",
"https://www.npmjs.com/package/@dransay/db"
],
"provider_metadata": {
"iocs": {
"urls": [
"https://db3klhbi6i9hark1kegg174t38h33b6wt.oast.site/db"
],
"files": [
{
"note": "preinstall script: node beacon.js",
"paths": [
"package.json"
],
"source": "PACKAGE_ARCHIVE",
"digests": {
"sha256": "068d3e448a6e69cd3693b399cb1640ccac7efbf8039f52fe95ca352d9677901f"
}
},
{
"note": "Executed by the preinstall script of @dransay/db@99.0.0.",
"paths": [
"beacon.js"
],
"source": "PACKAGE_ARCHIVE",
"digests": {
"sha256": "0cd9afa4808217e8686a3cfa514b9d22d7b3eb8cfa7e33a51326a0d9b84dcb17"
}
}
],
"domains": [
"db3klhbi6i9hark1kegg174t38h33b6wt.oast.site"
]
},
"malicious-packages-origins": [
{
"id": "IN-MAL-2026-021216",
"sha256": "dc3d55a63787b5f45312d0b8433f6e782b2a6b28e89ef6377e24e5d26c757a61",
"source": "amazon-inspector",
"versions": [
"99.0.0"
],
"import_time": "2026-10-08T17:17:19.458804625Z",
"modified_time": "2026-10-08T16:54:37Z"
}
]
}
},
"related_cves": [],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 298563,
"published_at": "2026-10-08T07:56:57+00:00"
}