Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Vulnerabilidad crítica en vm2 (Node.js) permite escape de sandbox


Vulnerabilidad crítica en vm2 (CVE-2026-22709 con puntuación CVSS 9.8) permite a atacantes escapar del sandbox y ejecutar código arbitrario en el host al explotar un fallo en la gestión de promesas globales en versiones ≤3.10.0. Afecta a millones de aplicaciones Node.js con 3.7M descargas mensuales. Se recomienda actualizar urgentemente a vm2 3.10.2+ para mitigar el riesgo.


Se ha descubierto una vulnerabilidad crítica de seguridad en vm2, una biblioteca sandbox muy popular para Node.js, utilizada por millones de desarrolladores para ejecutar código no confiable. Identificada como CVE-2026-22709, la falla tiene una puntuación máxima de gravedad CVSS de 9.8, lo que permite a los atacantes eludir completamente el entorno sandbox y ejecutar código arbitrario en el equipo host.

En octubre pasado, el mantenedor Patrik Šimek decidió resucitar el proyecto vm2 y lanzar la versión 3.10.0 que solucionaba todas las vulnerabilidades conocidas en ese momento y "aún era compatible hasta el Nodo 6". 

La vulnerabilidad afecta a las versiones 3.10.0 y anteriores de vm2, lo que supone un grave riesgo para cualquier aplicación que dependa de ella para su aislamiento.

El núcleo del problema reside en cómo el sandbox gestiona las promesas de JavaScript, específicamente, la limpieza de las funciones de devolución de llamada. Si bien vm2 se diseñó para limpiar las devoluciones de llamada de Promise.prototype.then y Promise.prototype.catch locales, los investigadores descubrieron un punto ciego: la promesa global.

"En lib/setup-sandbox.js, la función de devolución de llamada de Promise.prototype.then local está saneada, pero no así la de globalPromise.prototype.then", explica el aviso.

Este descuido se vuelve explotable porque "el valor de retorno de las funciones asíncronas es un objeto globalPromise". Simplemente definiendo una función asíncrona, un atacante puede obtener una referencia a este objeto Promise no saneado y usarlo para escapar de la jaula.

Al aprovechar el método catch no saneado de la Promise global, un atacante puede acceder al constructor de un objeto de error. Desde allí, puede recorrer la cadena del prototipo para acceder al constructor de la función, lo que le permite generar código nuevo fuera de las restricciones del entorno de pruebas.

El código de explotación proporcionado en la divulgación demuestra cómo un atacante puede usar esta cadena para cargar el módulo child_process y ejecutar comandos del sistema, como execSync('echo HELLO WORLD!').

Dada la popularidad de vm2, que registra más de 3,7 millones de descargas mensuales, el alcance potencial de esta vulnerabilidad es inmenso.

Los mantenedores han publicado un parche para solucionar esta vulnerabilidad. Se insta a los usuarios a actualizar a vm2 versión 3.10.2+ inmediatamente para garantizar la seguridad de sus entornos de prueba.

ulnerabilidad en el sandbox de VM2

La vulnerabilidad explota una asimetría en la sanitización de callbacks a través de cadenas de promesas.

Los investigadores descubrieron que los callbacks de Promise.prototype.catch pueden manipularse mediante la manipulación de pilas de errores.

ID de CVEPaqueteVersiones afectadasPuntuación CVSSTipo de vulnerabilidadVector de ataque
CVE-2026-22709vm2 (npm)≤ 3.10.010.0Escape de sandboxRed

Al crear un objeto de error con un nombre simbólico y activar una función asíncrona, un atacante obtiene acceso al constructor Error, lo que finalmente permite la ejecución arbitraria de código a través del constructor Function.

La cadena de ataque aprovecha esta progresión para instanciar un objeto Function con un código de carga útil arbitrario.

En demostraciones de prueba de concepto, los atacantes han ejecutado con éxito comandos del sistema como execSync() mediante el acceso al módulo child_process, eludiendo por completo la capa de aislamiento del sandbox.

Los mantenedores de VM2 lanzaron la versión 3.10.2, una versión parcheada, para solucionar la falla.

Esta actualización sanitiza correctamente los callbacks de Promise en ambas cadenas de prototipos, local y global, cerrando el vector de escape del sandbox.

Las organizaciones que utilizan vm2 deben actualizar inmediatamente a la versión 3.10.2 o posterior.

El cofundador del paquete, Patrik Šimek, publicó un aviso en GitHub hace dos días, mostrando un mantenimiento activo y una respuesta rápida al problema de seguridad.

Los equipos de desarrollo que dependen de VM2 para el aislamiento de código deben tratar esto como una prioridad crítica.

Realiza una evaluación inmediata del inventario en tus entornos de desarrollo y producción para identificar implementaciones afectadas.

Implementa la versión 3.10.2 a través de tu pipeline de gestión de paquetes sin demora y verifica que ninguna instancia en producción permanezca en versiones vulnerables.

Hasta que se complete el parcheo, considera restringir los contextos de ejecución de VM2 solo a código confiable.

Fuente: SecurityOnline



Vía:
http://blog.segu-info.com.ar/2026/01/vulnerabilidad-critica-en-vm2-nodejs.html


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.