CVE-2026-100721
vm2 anterior a 3.12.2 elusión de autorización mediante un resolutor personalizado
- Publicado
- 27 sept 2026
- Actualizado
- 27 sept 2026
- Asignación de CNA
- VulnCheck
- Evidencia observada
- 3 oct 2026
CVSS primario
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XResumen
vm2 anterior a 3.12.2 contiene un bypass de autorización en el resolvedor de módulos externos de NodeVM. Cuando un embedder configura `require.external` con un resolvedor personalizado (y `context: 'host'`), `LegacyResolver.customResolve` en lib/resolver-compat.js registra el directorio del módulo resuelto en `this.externals` como `new RegExp('^' + escapeRegExp(resolvedPath))`, sin requerir un separador de ruta ni un límite de fin de cadena. Por lo tanto, el código invitado no confiable puede requerir el módulo incluido en la lista de permitidos (p. ej., `foo`) y luego requerir la ruta absoluta de un módulo hermano no incluido en la lista de permitidos cuya ruta simplemente comparte el prefijo resuelto (p. ej., `.../node_modules/foo2/index.js`); el módulo hermano pasa `isPathAllowedForModule` y se carga a través de `hostRequire`, por lo que su código de nivel superior se ejecuta en el proceso host antes de que las exportaciones se envuelvan con `vm.readonly`, lo que resulta en un escape del sandbox y ejecución de código arbitrario en el contexto del host.
Fuentes
PoC en Python para CVE-2026-100721: detecta y explota el bypass de la lista de permitidos externa de NodeVM en vm2 <3.12.2, logrando un escape del sandbox y RCE en el host mediante un laboratorio local o objetivos HTTP masivos.
Uso responsable
Utilice información sobre vulnerabilidades solo en sistemas de su propiedad o que esté autorizado a probar. Kitploit enlaza con metadatos de investigación pública y no almacena código de explotación ni cargas útiles maliciosas.