CVE-2026-92954: vm2 3.10.0 through 3.11.5 Denial of Service via Host Promise

Published Sep 17, 2026
·
Updated

vm2 is a sandbox library for running untrusted JavaScript in Node.js. In versions >= 3.10.0 and <= 3.11.7, Promises returned from the host realm into the sandbox are not marked as handled at the bridge boundary; only Promises created inside the sandbox are wrapped with a rejection-swallowing handler (lib/setup-sandbox.js), and the bridge only installs host-side rejection sanitizers when sandbox code calls .then/.catch/.finally. As a result, code running in the sandbox can invoke a host function that returns a rejected Promise (for example events.once() exposed via the NodeVM events builtin, or any embedder-provided Promise-returning API) and simply ignore the return value, leaving the host Promise unhandled so that Node.js's default unhandled-rejection behavior terminates the host process. This is an incomplete fix of GHSA-hw58-p9xv-2mjh. The issue is fixed in version 3.11.8.

Affected Software

1 affected component
vm2 vm2>=3.10.0<=3.11.7

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade vm2 to a version that resolves this vulnerability.

    Fixed in 3.11.8Patch GHSA-hw58-p9xv-2mjh
  2. Upgrade

    Upgrade vm2 to a version that resolves this vulnerability.

    Fixed in 3.11.8

Event History

Sep 17, 2026
CVE Published
via MITRE·01:46 PM
Data Sourced
via MITRE·01:46 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Who is exposed to this denial-of-service condition?

Applications using vm2 versions 3.10.0 through 3.11.7 to execute untrusted JavaScript are exposed when sandboxed code can call a host function that returns a Promise which may reject. This includes the NodeVM events builtin when events.once() is available, as well as embedder-provided Promise-returning APIs.

2

What must an attacker do to trigger the issue?

The attacker needs the ability to run code in the vm2 sandbox and invoke an exposed host-side function that returns a rejected Promise. They can then ignore that returned Promise, leaving it unhandled and allowing Node.js default unhandled-rejection behavior to terminate the host process.

3

What should be done if the affected functionality cannot be removed immediately?

Upgrade vm2 to version 3.11.8, which fixes the issue. Until then, avoid exposing Promise-returning host APIs to untrusted sandbox code, including APIs that can return rejected Promises such as events.once().

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