MAL-2026-18356: Malicious code in @webapp-shared/login-vmok (npm)

Published Oct 27, 2026
·
Updated

@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

1 affected component
npm/@webapp-shared/login-vmok=1.0.0, =1.0.1, =1.1.0, =2.0.1, =3.0.0, =99.0.1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Remove

    Remove @webapp-shared/login-vmok from your environment.

    Remove the package from machines that installed an affected version.

  2. 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
  3. Compensating control

    Block 13.140.137.222 on build hosts.

Event History

Oct 27, 2026
Advisory Published
via OSV·05:08 PM
Data Sourced
via OSV·05:08 PM
DescriptionAffected Software

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203