LWA-2026-13202 confirmed malware

@grabcad/grabcad-shop-shared@0.0.0-stage

Malicious code in @grabcad/grabcad-shop-shared (npm)

T1195.002 · Compromise Software Supply ChainT1059.007 · JavaScriptT1082 · System Information DiscoveryT1016 · System Network Configuration DiscoveryT1071.001 · Web ProtocolsT1041 · Exfiltration Over C2 Channel

Analysis

This package is part of a dependency-confusion campaign that claims internal-looking scoped names (@grabcad/*, @blueskydataplatform/*) using sentinel versions such as 99.0.1. Version 0.0.0-stage is a code-free placeholder — package.json and README.md only, 350 bytes, no scripts, no dependencies — that reserves the package name; its README describes it as a "Temporary Holding Version" placeholder awaiting a staged release. The same package name at 99.0.1 and 2.0.1 ships a postinstall hook "node beacon.cjs" that POSTs host metadata — the package name, os.hostname(), the install directory, process.cwd() and the Node version — to hxxp://185[.]158[.]107[.]175:8787/_ah/dc with an X-Beacon-Package header. index.js re-fires the same beacon when the module is required and exports a Proxy that returns no-op functions for any property access, so a build importing the real package completes instead of crashing; its comments describe the callback as a "build-provenance beacon" and note that "a build that completes and calls back is cleaner evidence". The identical beacon.cjs is shipped under @grabcad/user-license, @grabcad/preferences-client, @grabcad/company-server-shared and @blueskydataplatform/shared-ui.

analyzed by
Leitwacht
first seen
Oct 22, 2026, 11:56 PM
analyzed
Oct 22, 2026, 11:57 PM

Related advisories

browse all confirmed advisories →

Independently detected by the Leitwacht supply-chain probe. IOCs are defanged. Published CC0. Think this is a mistake? See the dispute policy.