Malicious code in @grabcad/user-license (npm)
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (a248afa43b99998214621142f85910afc980f1a664c8f6a227b523984f88ea49) The package ships a `beacon.cjs` module that is wired to run both automatically on install (via `package.json` `postinstall: node beacon.cjs`) and on every load of the package (`index.js` calls `require('./beacon.cjs').fire()` at module top level). The beacon POSTs a JSON payload containing the installer's hostname, install directory, current working directory, and Node.js version to the hardcoded bare-IP endpoint `http://185.158.107.175:8787/_ah/dc` over cleartext HTTP. The main entry point additionally exports a `Proxy` whose `get` trap returns a no-op function for any accessed property, so consumer bundlers importing any named or default member of this package name silently succeed, concealing the fact that no real API is present while the beacon runs. The package name uses the `@grabcad` scope, consistent with a dependency-confusion lure targeting an internal package of that name. Self-descriptive strings framing this as an 'authorized dependency-confusion test' or 'build-provenance beacon' do not change the behavior: install and import of this package exfiltrate installer host identifiers to a hardcoded non-first-party bare-IP destination with no caller opt-in. ## Source: ghsa-malware (9ee7b26cd209a020227ba0c1f36114bf1b1e7a533339f9e546e058dcc4af9909) Any computer that has this package installed or running should be con
- Products
- @grabcad/user-license
- Affected versions
- 0.0.1, 1.0.0, 1.0.1, 1.1.0, 2.0.0, 2.0.1, 3.0.0
- Fixed versions
- Not specified
- CVEs
- Not specified
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 03:12 UTC · Revision 1
Source evidence
Malicious code in @grabcad/user-license (npm)
core-osv · Original sourcePublished 23 Oct 2026, 02:05 UTC
--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (a248afa43b99998214621142f85910afc980f1a664c8f6a227b523984f88ea49) The package ships a `beacon.cjs` module that is wired to run both automatically on install (via `package.json` `postinstall: node beacon.cjs`) and on every load of the package (`index.js` calls `require('./beacon.cjs').fire()` at module top level). The beacon POSTs a JSON payload containing the installer's hostname, install directory, current working directory, and Node.js version to the hardcoded bare-IP endpoint `http://185.158.107.175:8787/_ah/dc` over cleartext HTTP. The main entry point additionally exports a `Proxy` whose `get` trap returns a no-op function for any accessed property, so consumer bundlers importing any named or default member of this package name silently succeed, concealing the fact that no real API is present while the beacon runs. The package name uses the `@grabcad` scope, consistent with a dependency-confusion lure targeting an internal package of that name. Self-descriptive strings framing this as an 'authorized dependency-confusion test' or 'build-provenance beacon' do not change the behavior: install and import of this package exfiltrate installer host identifiers to a hardcoded non-first-party bare-IP destination with no caller opt-in. ## Source: ghsa-malware (9ee7b26cd209a020227ba0c1f36114bf1b1e7a533339f9e546e058dcc4af9909) Any computer that has this package installed or running should be con
osv:MAL-2026-18217
@grabcad/user-license
Fixed versions: Not specified
Complete source record
{
"id": "88f59e348c3482f2c45616ffcfccf133be54f30e3d79f07ec8e80a26fc5d1086",
"url": "https://osv.dev/vulnerability/MAL-2026-18217",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Malicious code in @grabcad/user-license (npm)",
"summary": "--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (a248afa43b99998214621142f85910afc980f1a664c8f6a227b523984f88ea49) The package ships a `beacon.cjs` module that is wired to run both automatically on install (via `package.json` `postinstall: node beacon.cjs`) and on every load of the package (`index.js` calls `require('./beacon.cjs').fire()` at module top level). The beacon POSTs a JSON payload containing the installer's hostname, install directory, current working directory, and Node.js version to the hardcoded bare-IP endpoint `http://185.158.107.175:8787/_ah/dc` over cleartext HTTP. The main entry point additionally exports a `Proxy` whose `get` trap returns a no-op function for any accessed property, so consumer bundlers importing any named or default member of this package name silently succeed, concealing the fact that no real API is present while the beacon runs. The package name uses the `@grabcad` scope, consistent with a dependency-confusion lure targeting an internal package of that name. Self-descriptive strings framing this as an 'authorized dependency-confusion test' or 'build-provenance beacon' do not change the behavior: install and import of this package exfiltrate installer host identifiers to a hardcoded non-first-party bare-IP destination with no caller opt-in. ## Source: ghsa-malware (9ee7b26cd209a020227ba0c1f36114bf1b1e7a533339f9e546e058dcc4af9909) Any computer that has this package installed or running should be con",
"evidence": "osv:MAL-2026-18217",
"products": [
{
"name": {
"value": "@grabcad/user-license",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [],
"affected_versions": [
{
"value": "1.1.0",
"evidence": "/affected/0/versions"
},
{
"value": "1.0.0",
"evidence": "/affected/0/versions"
},
{
"value": "2.0.1",
"evidence": "/affected/0/versions"
},
{
"value": "2.0.0",
"evidence": "/affected/0/versions"
},
{
"value": "3.0.0",
"evidence": "/affected/0/versions"
},
{
"value": "0.0.1",
"evidence": "/affected/0/versions"
},
{
"value": "1.0.1",
"evidence": "/affected/0/versions"
}
]
}
],
"severity": "unknown",
"structured": {
"id": "MAL-2026-18217",
"aliases": [
"GHSA-6w2v-744r-g5j5",
"MAL-2026-18217"
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
}
]
}
],
"package": {
"name": "@grabcad/user-license",
"purl": "pkg:npm/%40grabcad/user-license",
"ecosystem": "npm"
},
"versions": [
"1.1.0",
"1.0.0",
"2.0.1",
"2.0.0",
"3.0.0",
"0.0.1",
"1.0.1"
],
"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."
},
{
"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",
"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/@grabcad/user-license/MAL-2026-18217.json",
"indicators": {
"evidence_files": [
{
"path": "beacon.cjs",
"tlsh": "e53161eba8e1a008aaa67098c54f0409b17af0069401ab50f95c82919f7153c33fa8dc",
"sha256": "a213268b56bad2151ca7d8beff288ff8c19b76eb5bf018ec55bac45d6d639f75"
},
{
"path": "package.json",
"tlsh": "62d05e20da205e6364c46ee60d6a6a0e55a60e6b01147c0833e7505c8aad77729fe66e",
"sha256": "d4ed7f6f2260cad543764ded43c1fe2726827c441da433eccffc75c354a731f0"
}
],
"package_integrity": [
{
"hashes": {
"sha1": "80780a57b1e5f49a81e5d428d035d90c8c69f609",
"sha512_sri": "sha512-gDF/hdNPev/j9x4KnWIahz4a6JCPlOMFA+PphcNZEvcvr83L0fo1H2znNH3grEOJ92RHBAH9oCOCpmcC2U4PKw=="
},
"filename": "user-license-1.1.0.tgz"
}
]
}
}
}
],
"modified": "2026-10-23T20:30:05.010548181Z",
"provider": "osv",
"references": [
"https://github.com/advisories/GHSA-6w2v-744r-g5j5",
"https://www.npmjs.com/package/@grabcad/user-license/v/1.1.0",
"https://www.npmjs.com/package/@grabcad/user-license/v/1.0.0",
"https://www.npmjs.com/package/@grabcad/user-license/v/2.0.1",
"https://www.npmjs.com/package/@grabcad/user-license/v/2.0.0",
"https://www.npmjs.com/package/@grabcad/user-license/v/3.0.0",
"https://www.npmjs.com/package/@grabcad/user-license/v/0.0.1",
"https://www.npmjs.com/package/@grabcad/user-license/v/1.0.1"
],
"provider_metadata": {
"malicious-packages-origins": [
{
"id": "GHSA-6w2v-744r-g5j5",
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "0"
}
]
}
],
"sha256": "9ee7b26cd209a020227ba0c1f36114bf1b1e7a533339f9e546e058dcc4af9909",
"source": "ghsa-malware",
"import_time": "2026-10-23T02:36:25.367624051Z",
"modified_time": "2026-10-23T02:05:20Z"
},
{
"id": "IN-MAL-2026-021628",
"sha256": "fb6687a6ba7936ccacaffebb87b4d725ea1ea4fd8f4fa094732f792ebfdbd385",
"source": "amazon-inspector",
"versions": [
"1.1.0"
],
"import_time": "2026-10-23T20:18:05.58030721Z",
"modified_time": "2026-10-23T19:53:53Z"
},
{
"id": "IN-MAL-2026-021631",
"sha256": "028fec94ca864a72c77853b23c7b41507950f6ff3bceeb799f52313f060dcdf2",
"source": "amazon-inspector",
"versions": [
"1.0.0"
],
"import_time": "2026-10-23T20:18:05.756593509Z",
"modified_time": "2026-10-23T19:54:18Z"
},
{
"id": "IN-MAL-2026-021633",
"sha256": "194db4db4eabad243cb5adb654187a50fd83ed9b5a93fd5a2bac42d22849ffcd",
"source": "amazon-inspector",
"versions": [
"2.0.1"
],
"import_time": "2026-10-23T20:18:05.875075066Z",
"modified_time": "2026-10-23T19:54:32Z"
},
{
"id": "IN-MAL-2026-021640",
"sha256": "4ee1b75cbc044631a34520120f71fcae0810def30d4b34c849410b6a49f6200f",
"source": "amazon-inspector",
"versions": [
"2.0.0"
],
"import_time": "2026-10-23T20:18:06.323860335Z",
"modified_time": "2026-10-23T19:55:29Z"
},
{
"id": "IN-MAL-2026-021630",
"sha256": "a248afa43b99998214621142f85910afc980f1a664c8f6a227b523984f88ea49",
"source": "amazon-inspector",
"versions": [
"3.0.0"
],
"import_time": "2026-10-23T20:18:05.705525564Z",
"modified_time": "2026-10-23T19:54:08Z"
},
{
"id": "IN-MAL-2026-021632",
"sha256": "a787e41507e119511be699466617a6a3c37c353523556ef02f357f988ac1bf51",
"source": "amazon-inspector",
"versions": [
"0.0.1"
],
"import_time": "2026-10-23T20:18:05.826929014Z",
"modified_time": "2026-10-23T19:54:25Z"
},
{
"id": "IN-MAL-2026-021629",
"sha256": "aabf17337df582908676bebc504ea079c5a8499eeac3a45d4a073b43056a2385",
"source": "amazon-inspector",
"versions": [
"1.0.1"
],
"import_time": "2026-10-23T20:18:05.653131238Z",
"modified_time": "2026-10-23T19:53:59Z"
}
]
}
},
"related_cves": [],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 427017,
"published_at": "2026-10-23T02:05:19+00:00"
}