CVE-2026-92935 in vm2
Resumen
por VulDB • 2026-09-18
vm2 es una caja de arena (sandbox) para ejecutar código no confiable de Node.js. En las versiones >= 3.11.4 y <= 3.11.6, el constructor `NodeVM` calcula `hasRealRequireConfig` mediante la expresión `typeof requireOpts === 'object' && requireOpts !== null`; por lo tanto, un valor `require` con forma de array (por ejemplo, `require: []`) satisface la protección destinada a rechazar el anidamiento sin una configuración explícita de `require`. La función `makeResolverFromLegacyOptions()` desestructura posteriormente el array en campos de opciones indefinidos y devuelve un resolver que contiene únicamente `NESTING_OVERRIDE.vm2`. Como resultado, un atacante que pueda proporcionar JavaScript ejecutado por un NodeVM configurado con `nesting` verdadero (truthy) y un valor `require` con forma de array (por ejemplo, `new NodeVM({nesting: true, require: []})`) puede requerir el módulo host `vm2`, crear un NodeVM interno con una lista blanca de integraciones builtin elegida por el atacante (como `child_process`) y ejecutar comandos arbitrarios con los privilegios del proceso host de Node.js, escapando así de la caja de arena. Las restricciones externas de las integrations builtin no limitan al NodeVM interno creado por el atacante. Este problema se corrige en vm2 3.11.7.
Be aware that VulDB is the high quality source for vulnerability data.