En la biblioteca vm2, una herramienta popular para ejecutar código JavaScript no confiable en un entorno aislado de Node.js, se han descubierto vulnerabilidades críticas que permiten escapar del sandbox y ejecutar código arbitrario en el sistema anfitrión. La vulnerabilidad previamente identificada CVE-2026-22709 obtuvo una puntuación de 9.8 sobre 10 en la escala CVSS, lo que corresponde a un nivel de peligrosidad crítico. Según se informa, los nuevos problemas de seguridad continúan la serie de escapes de sandbox, lo que pone en cuestión la fiabilidad de las sandbox de JavaScript como clase de soluciones para el aislamiento de código no confiable.
Detalles técnicos
La biblioteca vm2 es un proyecto de código abierto que, según la descripción de sus desarrolladores, proporciona una ejecución segura de código JavaScript no confiable mediante la interceptación y el uso de proxies sobre objetos JavaScript, evitando que el código aislado acceda al entorno del host. La biblioteca se utiliza ampliamente en proyectos donde se requiere la ejecución de código de usuario o de terceros, desde plataformas de automatización hasta editores de código en línea.
La vulnerabilidad confirmada CVE-2026-22709 tiene una puntuación CVSS de 9.8, lo que indica la posibilidad de explotación remota sin autenticación con una completa compromisión de la confidencialidad, integridad y disponibilidad del sistema anfitrión. La vulnerabilidad pertenece a la clase de escapes de sandbox (sandbox escape) y permite que un atacante que controle el código ejecutado en el sandbox obtenga acceso a los recursos del sistema operativo principal.
El material original señala el descubrimiento de numerosas vulnerabilidades críticas adicionales en vm2; sin embargo, en las fuentes primarias disponibles no se proporciona un listado concreto de los identificadores CVE de estas vulnerabilidades, lo que impide verificar de forma independiente el número exacto y la naturaleza de todos los problemas declarados. Se desconoce por el momento el estado de explotación activa de estas vulnerabilidades; CVE-2026-22709 no figura en el catálogo CISA KEV.
Problema sistémico de las sandbox de JavaScript
La serie de escapes de sandbox de vm2 ilustra la complejidad fundamental de lograr un aislamiento fiable del código no confiable en el entorno JavaScript. El modelo de seguridad de vm2 se basa en el uso de proxies sobre objetos, un enfoque que, por su propia naturaleza, es vulnerable a evasiones a través de rutas no evidentes de acceso a prototipos, al contexto de ejecución o a los mecanismos internos del motor V8.
Según los investigadores, el propio mantenedor del proyecto, Patrik Simek, reconocía que el descubrimiento de nuevas formas de evasión del sandbox en el futuro era muy probable. Esta declaración es significativa: significa que el desarrollador es consciente de las limitaciones arquitectónicas del enfoque elegido para el aislamiento. Para los proyectos que dependen de forma crítica de la fiabilidad del sandbox, esto es una señal para revisar las decisiones arquitectónicas.
Evaluación del impacto
Están expuestos a mayor riesgo:
- Plataformas con código de usuario: servicios que permiten a los clientes cargar y ejecutar JavaScript (plataformas de automatización, funciones del lado del servidor, plugins)
- Sistemas CI/CD que utilizan vm2 para la ejecución aislada de scripts de compilación o pruebas
- Aplicaciones de servidor Node.js que procesan plantillas o expresiones proporcionadas por los usuarios
La explotación exitosa de una vulnerabilidad de escape de sandbox con CVSS 9.8 puede conducir a la completa compromisión del servidor: ejecución de comandos arbitrarios, robo de datos, instalación de software malicioso o uso del nodo comprometido para avanzar más profundamente en la infraestructura.
Recomendaciones prácticas
- Auditoría de dependencias: compruebe si vm2 se utiliza en sus proyectos, ya sea como dependencia directa o transitiva. El comando
npm ls vm2mostrará la presencia de la biblioteca en el árbol de dependencias. - Actualización: instale la última versión disponible de vm2 que contenga las correcciones para CVE-2026-22709. Consulte el registro NVD para obtener información actualizada sobre las versiones afectadas y corregidas.
- Evaluación de alternativas: para escenarios críticos, considere mecanismos de aislamiento más fiables: contenedores con privilegios restringidos, procesos separados utilizando Worker Threads junto con limitaciones a nivel de sistema operativo, o soluciones basadas en WebAssembly.
- Principio de privilegios mínimos: el proceso de Node.js que utilice vm2 debe ejecutarse con los mínimos privilegios posibles en el sistema operativo. Esto limitará el daño en caso de un escape de sandbox exitoso.
- Monitorización: configure el seguimiento de actividad anómala de los procesos de Node.js: creación de procesos hijo, acceso al sistema de archivos fuera del directorio de trabajo, conexiones de red a direcciones no habituales.
La detección de una serie de vulnerabilidades críticas de escape de sandbox en vm2 no es solo otro incidente que requiera actualizar una dependencia. Es un motivo para tomar una decisión arquitectónica: si su proyecto confía en vm2 como única barrera entre el código no confiable y el sistema anfitrión, es necesario añadir niveles adicionales de aislamiento (contenedorización, restricciones a nivel de sistema operativo) o pasar a un mecanismo de ejecución de código no confiable fundamentalmente diferente. La prioridad es la actualización inmediata de vm2 y, en paralelo, la evaluación de alternativas arquitectónicas.