Skip to content
Heist/ feed
Back to feed
Unrated

Malicious code in @grabcad/preferences-client (npm)

Type: advisorySources: OSV

--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (c846a3e9766d663572fb4d716588823020e219af5c1fb75793661c5c87627ba5) The package presents itself as a 'Compatibility shim' under the @grabcad scope and exports a Proxy that returns no-op functions for any property access, allowing builds that import the real @grabcad/preferences-client to succeed. The main entry invokes require('./beacon.cjs').fire() at import time, and package.json wires the same beacon into a postinstall lifecycle script. beacon.cjs POSTs a payload containing the package name, os.hostname(), the install path, process.cwd(), and the Node version to the hardcoded plain-HTTP endpoint http://185.158.107.175:8787/_ah/dc. The destination is a bare IPv4 on a non-standard port with no relationship to any legitimate publisher infrastructure; the @grabcad scope belongs to a known vendor and the public registry entry is a stub whose only functional effect is the beacon. This is the canonical dependency-confusion reconnaissance pattern: a public squat under an internal/private scope that fires on install and on require to disclose internal hostnames and build paths to an attacker-controlled collector, establishing feasibility for a follow-on payload against installers whose resolver pulls the public package instead of the internal one. ## Source: ghsa-malware (a82ed4dbc46827de73b0ea395df43cb2572eab547dc0decc3360973b848ac66e) Any computer that has this package installed or running shou

Products
@grabcad/preferences-client
Affected versions
0.0.1, 1.0.0, 1.1.0, 2.0.0, 3.0.0
Fixed versions
Not specified
CVEs
Not specified
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 10:35 UTC · Revision 1

Source evidence

Malicious code in @grabcad/preferences-client (npm)

core-osv · Original source

Published 23 Oct 2026, 02:05 UTC

--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (c846a3e9766d663572fb4d716588823020e219af5c1fb75793661c5c87627ba5) The package presents itself as a 'Compatibility shim' under the @grabcad scope and exports a Proxy that returns no-op functions for any property access, allowing builds that import the real @grabcad/preferences-client to succeed. The main entry invokes require('./beacon.cjs').fire() at import time, and package.json wires the same beacon into a postinstall lifecycle script. beacon.cjs POSTs a payload containing the package name, os.hostname(), the install path, process.cwd(), and the Node version to the hardcoded plain-HTTP endpoint http://185.158.107.175:8787/_ah/dc. The destination is a bare IPv4 on a non-standard port with no relationship to any legitimate publisher infrastructure; the @grabcad scope belongs to a known vendor and the public registry entry is a stub whose only functional effect is the beacon. This is the canonical dependency-confusion reconnaissance pattern: a public squat under an internal/private scope that fires on install and on require to disclose internal hostnames and build paths to an attacker-controlled collector, establishing feasibility for a follow-on payload against installers whose resolver pulls the public package instead of the internal one. ## Source: ghsa-malware (a82ed4dbc46827de73b0ea395df43cb2572eab547dc0decc3360973b848ac66e) Any computer that has this package installed or running shou

osv:MAL-2026-18216

@grabcad/preferences-client

Fixed versions: Not specified

Complete source record
{
  "id": "ba50b6fc76452a62c6f299639d302f1587327646baeb18b40142492f5e592d3f",
  "url": "https://osv.dev/vulnerability/MAL-2026-18216",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Malicious code in @grabcad/preferences-client (npm)",
    "summary": "--- _-= Per source details. Do not edit below this line.=-_ ## Source: amazon-inspector (c846a3e9766d663572fb4d716588823020e219af5c1fb75793661c5c87627ba5) The package presents itself as a 'Compatibility shim' under the @grabcad scope and exports a Proxy that returns no-op functions for any property access, allowing builds that import the real @grabcad/preferences-client to succeed. The main entry invokes require('./beacon.cjs').fire() at import time, and package.json wires the same beacon into a postinstall lifecycle script. beacon.cjs POSTs a payload containing the package name, os.hostname(), the install path, process.cwd(), and the Node version to the hardcoded plain-HTTP endpoint http://185.158.107.175:8787/_ah/dc. The destination is a bare IPv4 on a non-standard port with no relationship to any legitimate publisher infrastructure; the @grabcad scope belongs to a known vendor and the public registry entry is a stub whose only functional effect is the beacon. This is the canonical dependency-confusion reconnaissance pattern: a public squat under an internal/private scope that fires on install and on require to disclose internal hostnames and build paths to an attacker-controlled collector, establishing feasibility for a follow-on payload against installers whose resolver pulls the public package instead of the internal one. ## Source: ghsa-malware (a82ed4dbc46827de73b0ea395df43cb2572eab547dc0decc3360973b848ac66e) Any computer that has this package installed or running shou",
    "evidence": "osv:MAL-2026-18216",
    "products": [
      {
        "name": {
          "value": "@grabcad/preferences-client",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [],
        "affected_versions": [
          {
            "value": "0.0.1",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "3.0.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "2.0.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.1.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "1.0.0",
            "evidence": "/affected/0/versions"
          }
        ]
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "MAL-2026-18216",
      "aliases": [
        "GHSA-mfh5-wvcp-2v6v",
        "MAL-2026-18216"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "0"
                }
              ]
            }
          ],
          "package": {
            "name": "@grabcad/preferences-client",
            "purl": "pkg:npm/%40grabcad/preferences-client",
            "ecosystem": "npm"
          },
          "versions": [
            "0.0.1",
            "3.0.0",
            "2.0.0",
            "1.1.0",
            "1.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."
              },
              {
                "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/preferences-client/MAL-2026-18216.json",
            "indicators": {
              "evidence_files": [
                {
                  "path": "beacon.cjs",
                  "tlsh": "423161eba8e1a048aaa67098c54f0509b27bf0079401ab50f95c82959f6197c33fa8dc",
                  "sha256": "4842aa70534949cc24f48cccc2c521670364d70fa2e3863066a1e994a6e0ff50"
                },
                {
                  "path": "index.js",
                  "tlsh": "2201d0d7225661b10b5221a4978f43c4a3b99d74027941d0d84a9226365108c463b8ee",
                  "sha256": "a86a4da763bbb34c16f361abe7aab66d5df591b66867ac8160041f932159b08d"
                }
              ],
              "package_integrity": [
                {
                  "hashes": {
                    "sha1": "a7bbd9d1db282693dd2d4589f2145caa4dd08232",
                    "sha512_sri": "sha512-UWBdobnNLdcjmUi72pIcybkMfKzsNRTwV1LELQauNVhJ8y0jzDvwIDAd54TJeEfAJN1iwzSf9wFO5Qx1DXOM5Q=="
                  },
                  "filename": "preferences-client-0.0.1.tgz"
                }
              ]
            }
          }
        }
      ],
      "modified": "2026-10-26T06:00:04.231424928Z",
      "provider": "osv",
      "references": [
        "https://github.com/advisories/GHSA-mfh5-wvcp-2v6v",
        "https://www.npmjs.com/package/@grabcad/preferences-client/v/0.0.1",
        "https://www.npmjs.com/package/@grabcad/preferences-client/v/3.0.0",
        "https://www.npmjs.com/package/@grabcad/preferences-client/v/2.0.0",
        "https://www.npmjs.com/package/@grabcad/preferences-client/v/1.1.0",
        "https://www.npmjs.com/package/@grabcad/preferences-client/v/1.0.0"
      ],
      "provider_metadata": {
        "malicious-packages-origins": [
          {
            "id": "GHSA-mfh5-wvcp-2v6v",
            "ranges": [
              {
                "type": "SEMVER",
                "events": [
                  {
                    "introduced": "0"
                  }
                ]
              }
            ],
            "sha256": "a82ed4dbc46827de73b0ea395df43cb2572eab547dc0decc3360973b848ac66e",
            "source": "ghsa-malware",
            "import_time": "2026-10-23T02:36:25.384430919Z",
            "modified_time": "2026-10-23T02:05:20Z"
          },
          {
            "id": "IN-MAL-2026-021627",
            "sha256": "3c4e3941ac5d178f161937407f54a52f5121ae79b8a539b3d718974592f672b8",
            "source": "amazon-inspector",
            "versions": [
              "0.0.1"
            ],
            "import_time": "2026-10-23T20:18:05.521859915Z",
            "modified_time": "2026-10-23T19:53:46Z"
          },
          {
            "id": "IN-MAL-2026-021625",
            "sha256": "86b1e02c12c8101b88a0c4f114297b716a3593a7a12601705d3496f6422420f0",
            "source": "amazon-inspector",
            "versions": [
              "3.0.0"
            ],
            "import_time": "2026-10-23T20:18:05.373682403Z",
            "modified_time": "2026-10-23T19:53:32Z"
          },
          {
            "id": "IN-MAL-2026-021624",
            "sha256": "c846a3e9766d663572fb4d716588823020e219af5c1fb75793661c5c87627ba5",
            "source": "amazon-inspector",
            "versions": [
              "2.0.0"
            ],
            "import_time": "2026-10-23T20:18:05.322574568Z",
            "modified_time": "2026-10-23T19:53:24Z"
          },
          {
            "id": "IN-MAL-2026-021626",
            "sha256": "07817714eb1aa6844db07c06e63e755446398478522bb6f9e455eea3fabcfa93",
            "source": "amazon-inspector",
            "versions": [
              "1.1.0"
            ],
            "import_time": "2026-10-23T20:18:05.452830441Z",
            "modified_time": "2026-10-23T19:53:40Z"
          },
          {
            "id": "IN-MAL-2026-021716",
            "sha256": "9830cae60a978d6ecb1930dd60443a1b87f08a63f630aa5aaa24fa343d42ccee",
            "source": "amazon-inspector",
            "versions": [
              "1.0.0"
            ],
            "import_time": "2026-10-26T05:46:52.007250168Z",
            "modified_time": "2026-10-26T05:30:11Z"
          }
        ]
      }
    },
    "related_cves": [],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 446728,
  "published_at": "2026-10-23T02:05:19+00:00"
}