PT-2026-99448 · Npm · Vm2
CVSS v4.0
9.5
Critical
| Vector | AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
Name of the Vulnerable Software and Affected Versions
vm2 versions prior to 3.12.2
Description
An authorization bypass exists in the NodeVM external-module resolver. When an embedder configures
require.external with a custom resolver and context: 'host', the LegacyResolver.customResolve function in lib/resolver-compat.js records the resolved module directory in this.externals using a regular expression that lacks a path separator or end-of-string boundary. This allows untrusted guest code to require an allowlisted module and subsequently require the absolute path of a non-allowlisted sibling module that shares the same resolved prefix. Because the sibling passes isPathAllowedForModule, it is loaded through hostRequire, allowing its top-level code to execute in the host process before exports are wrapped with vm.readonly. This leads to a sandbox escape and arbitrary code execution in the host context.Recommendations
Update to version 3.12.2 or later.
Exploit
Fix
Incorrect Authorization
Found an issue in the description? Have something to add? Feel free to write us 👾
Weakness Enumeration
Related Identifiers
Affected Products
Vm2