CVE-2026-92957: vm2 before 3.11.7 Authentication Bypass via node: Prefix

Published Sep 17, 2026
·
Updated

vm2 through 3.11.6 does not normalize node:-prefixed builtin specifiers when evaluating user-supplied negative (deny) entries in a NodeVM wildcard require policy. Although NodeVM strips the node: prefix during require() resolution, negative wildcard entries are matched by exact string comparison against the canonical builtin names, so a policy such as new NodeVM({ require: { builtin: ['', '-node:childprocess'] } }) fails to deny the canonical childprocess module. Sandboxed code can therefore obtain the host childprocess builtin via require('childprocess') or require('node:childprocess'), gaining references to process-spawning APIs such as execSync and spawn, which is equivalent to host command-execution capability for untrusted sandbox code. Fixed in vm2 3.11.7. (Suggested title: "vm2 before 3.11.7: NodeVM builtin deny-list bypass via node:-prefixed specifiers exposes childprocess")

Affected Software

1 affected component
vm2<=3.11.6

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.7
  2. Configuration

    Ensure the deny list correctly blocks the canonical builtin name 'child_process' (not only 'node:child_process'). In affected vm2 versions through 3.11.6, negative wildcard entries are matched by exact string comparison and do not normalize 'node:'-prefixed specifiers, so '-node:child_process' may not deny 'child_process'.

    vm2 NodeVM require builtin wildcard policy require.builtin = ['*', '-node:child_process']

Event History

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

Frequently Asked Questions

1

Which deployments are exposed to this issue?

Deployments using NodeVM with a wildcard builtin require policy that attempts to deny a builtin using a node:-prefixed negative entry are exposed. For example, ['*', '-node:child_process'] does not block access to the canonical child_process builtin.

2

What does an attacker need to exploit the bypass?

An attacker needs the ability to run untrusted code in the affected NodeVM sandbox. That code can call require('child_process') or require('node:child_process') to obtain process-spawning APIs.

3

Are default configurations affected?

The issue affects the described wildcard allow policy combined with node:-prefixed deny entries. The provided information does not establish that configurations without this policy pattern are affected.

4

What should be done if upgrading cannot happen immediately?

Do not rely on node:-prefixed negative builtin entries to restrict sandboxed code. Remove wildcard builtin access or ensure sensitive builtins such as child_process are not available through the NodeVM require policy until vm2 3.11.7 can be deployed.

5

How can I identify a vulnerable policy?

Review NodeVM require.builtin settings for wildcard entries together with exclusions such as '-node:child_process'. On affected versions through 3.11.6, test whether sandboxed code can successfully require child_process despite that exclusion.

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