Mend.io Vulnerability Database
The largest open source vulnerability database
What is a Vulnerability ID?
New vulnerability? Tell us about it!
CVE-2026-100721
Published:September 27, 2026
Updated:October 09, 2026
vm2 before 3.12.2 contains an authorization bypass in the NodeVM external-module resolver. When an embedder configures "require.external" with a custom resolver (and "context: 'host'"), "LegacyResolver.customResolve" in lib/resolver-compat.js records the resolved module directory in "this.externals" as "new RegExp('^' + escapeRegExp(resolvedPath))", without requiring a path separator or end-of-string boundary. Untrusted guest code can therefore require the allowlisted module (e.g. "foo") and then require the absolute path of a non-allowlisted sibling whose path merely shares the resolved prefix (e.g. ".../node_modules/foo2/index.js"); the sibling passes "isPathAllowedForModule" and is loaded through "hostRequire", so its top-level code runs in the host process before the exports are wrapped with "vm.readonly", resulting in a sandbox escape and arbitrary code execution in the host context.
Affected Packages
vm2 (NPM):
Affected version(s) >=0.1.0 <3.12.2
Fix Suggestion:
Update to version 3.12.2
vm2 (NPM):
Affected version(s) >=0.1.0 <3.12.2
Fix Suggestion:
Update to version 3.12.2
Do you need more information?
Contact Us
CVSS v4
Base Score:
9.5
Attack Vector
NETWORK
Attack Complexity
LOW
Attack Requirements
PRESENT
Privileges Required
NONE
User Interaction
NONE
Vulnerable System Confidentiality
HIGH
Vulnerable System Integrity
HIGH
Vulnerable System Availability
HIGH
Subsequent System Confidentiality
HIGH
Subsequent System Integrity
HIGH
Subsequent System Availability
HIGH
CVSS v3
Base Score:
9
Attack Vector
NETWORK
Attack Complexity
HIGH
Privileges Required
NONE
User Interaction
NONE
Scope
CHANGED
Confidentiality
HIGH
Integrity
HIGH
Availability
HIGH
Weakness Type (CWE)
Incorrect Authorization
EPSS
Base Score:
0.40