Is @grabcad/user-license malicious?
Yes. Protet confirmed 4 versions of @grabcad/user-license as malicious
First confirmed on 2026-10-23.
Affected versions
| Version | Confirmed | Protet record |
|---|---|---|
| 1.1.0 | 2026-10-23 | PROTET-NPM-2026-38 |
| 2.0.0 | 2026-10-23 | PROTET-NPM-2026-37 |
| 1.0.0 | 2026-10-23 | PROTET-NPM-2026-36 |
| 0.0.1 | 2026-10-23 | PROTET-NPM-2026-35 |
What it does
Install hook and require-time code send the host name and install paths to a hardcoded IP over HTTP
Installing @grabcad/user-license 1.1.0 runs the postinstall script node beacon.cjs. It sends an HTTP POST to http://185.158.107.175:8787/_ah/dc with the package name, the machine's host name, the install directory, the current working directory and the Node.js version. Loading the package runs the same report again from index.js. The package then exports a stub that returns empty no-op functions for every member, in place of any real functionality. The package name copies a private organisation scope, and the version numbers are inflated (up to 99.0.x) so that a resolver which also queries the public registry prefers this copy. The same beacon and endpoint appear in @cecm-web-sdk/core. Impact: any developer or CI machine that installs or imports the package discloses its host name and internal directory layout to a third party, and the build gets a non-functional stub instead of the intended internal library. Remediation: remove the package, pin the scope to the private registry (for example a scoped registry entry in .npmrc), and review build hosts that installed it for unexpected connections to 185.158.107.175.
Other reports
- Also reported in OSV as MAL-2026-18217
What to do if you installed it
- Remove the package from every project that uses it, directly or through another dependency.
- Pin a clean version if you need the package: one that is not listed above and that you have checked yourself, or replace the package. A version missing from this page is not cleared.
- Check your lockfiles (
package-lock.json,yarn.lock,pnpm-lock.yaml) for the affected versions, including as a transitive dependency, and in CI caches. - Rotate credentials that were reachable from any machine or build that installed it: npm and GitHub tokens, cloud keys, SSH keys, and secrets in environment variables or CI settings.
Status history
- 2026-10-23: 0.0.1, 1.0.0, 2.0.0, 1.1.0 named by Protet Intel