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.
Fuente:
SecurityOnline

