Se ha encontrado una vulnerabilidad crítica en vm2, una
biblioteca sandbox ampliamente utilizada en Node.js por millones
de desarrolladores para ejecutar código no confiable. Esta falla, identificada como
CVE-2026-22709,
tiene una puntuación CVSS máxima 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 del año pasado, el mantenedor Patrik Šimek decidió revitalizar el
proyecto vm2,
lanzando la versión 3.10.0, que solucionó todas las vulnerabilidades conocidas hasta
ese momento y «seguía siendo compatible hasta Node 6».
La vulnerabilidad afecta a las versiones 3.10.0 y anteriores de vm2,
lo que representa un riesgo significativo para cualquier aplicación que dependa de ella
para su seguridad.
El problema radica en cómo el sandbox maneja las promesas en JavaScript, sobre todo
en la limpieza de las funciones de devolución de llamada. Aunque vm2 fue diseñado para
sanitizar la función de devolución de llamada tanto de Promise.prototype.then
como de Promise.prototype.catch locales, los investigadores hallaron 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á correctamente saneada, pero
no así la de globalPromise.prototype.then»,
indica el aviso.
Este descuido resulta explotable porque
«el valor de retorno de las funciones asíncronas es un objeto globalPromise».
Simplemente creando una función asíncrona, un atacante puede obtener una
referencia a este objeto Promise no saneado, lo que le permite escapar de la
jaula.
Al utilizar el método catch no saneado de la Promise global, un atacante puede
acceder al constructor de un objeto de error. Desde ahí, puede navegar la cadena del
prototipo para alcanzar el constructor de la función, permitiéndole generar código
nuevo fuera de las restricciones del entorno de pruebas.
El código de prueba proporcionado en la divulgación muestra cómo un
atacante puede usar esta cadena para cargar el módulo child_process y ejecutar
comandos del sistema, tal como
execSync('echo HELLO WORLD!').
Dada la popularidad de vm2, que cuenta con más de
3,7 millones de descargas mensuales,
el impacto potencial de esta vulnerabilidad es inmenso.
Los mantenedores han puesto a disposición un parche para corregir esta vulnerabilidad.
Se recomienda a los usuarios actualizar a vm2 versión 3.10.2+ de inmediato
para garantizar la seguridad de sus entornos de prueba.
Fuente:
SecurityOnline
Con Información de blog.segu-info.com.ar