MAL-2026-18356: Malicious code in @webapp-shared/login-vmok (npm)
@webapp-shared/login-vmok is a dependency-confusion package: it uses the @webapp-shared scope, which matches a private internal package scope, and was published on 2026-10-27 in versions 1.0.0, 1.0.1, 1.1.0, 2.0.1, 3.0.0 and 99.0.1 so that builds resolving the internal name from the public registry install it instead. Its postinstall script runs node beacon.cjs, which sends an HTTP POST over cleartext HTTP to the hardcoded IP endpoint http://13.140.137.222:8787/ah/dc with the package name, the machine's hostname, the install directory, the current working directory and the Node.js version; the entry point index.js sends the same request again whenever the package is loaded and otherwise has no functionality. The beacon code is the same as in other dependency-confusion packages sending to http://185.158.107.175:8787/ah/dc (e.g. MAL-2026-18276), with only the endpoint and package name changed. The inert 0.0.0-stage and 0.1.0 placeholder versions carry no install script and are not affected. Any machine that installed an affected version has disclosed its hostname and filesystem layout to a third party; remove the package, pin or scope internal package names to the internal registry, and block 13.140.137.222 on build hosts.
--- -= Per source details. Do not edit below this line.=-
Source: amazon-inspector (038927c39e3df3caeb1629368073886842fe7abed1413e3ac6d8a215c9cd68bf) The package is a stub with no real functionality (described as a 'compatibility shim') under the scoped name @webapp-shared/ with implausibly high version 99.0.1 — the shape of a dependency-confusion squat. On install, package.json runs node beacon.cjs as a postinstall script, and the main entrypoint index.js calls require('./beacon.cjs').fire() on load, so the beacon fires both at npm install and on any require. beacon.cjs POSTs a JSON payload containing the package name, os.hostname(), dirname install path, process.cwd(), and process.version to the hardcoded bare-IP cleartext HTTP endpoint http://13.140.137.222:8787/ah/dc. index.js exports a Proxy no-op so consumer builds complete without errors, concealing that the module provides no functionality. The transmitted host identifiers disclose internal hostnames and filesystem paths of installers whose private-registry resolution was captured by the scoped squat, enabling targeted follow-on supply-chain attacks against those environments.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Remove
Remove
@webapp-shared/login-vmokfrom your environment.Remove the package from machines that installed an affected version.
- Configuration
Pin or scope internal @webapp-shared package names to the internal registry so they cannot resolve from the public registry.
npm package resolution @webapp-shared registry scope = internal registry - Compensating control
Block 13.140.137.222 on build hosts.