Vulnerabilidad crítica en la biblioteca VM2 permite escapar del sandbox
Vulnerabilidad crítica en la biblioteca VM2 permite escapar del sandbox

Vulnerabilidad crítica en la biblioteca VM2 permite escapar del sandbox

Se ha publicado un código de explotación para una vulnerabilidad crítica recientemente revelada en la popular biblioteca VM2, un sandbox de JavaScript utilizado por diversos programas para ejecutar código de forma segura en un entorno virtualizado.

Vulnerabilidad y nivel de gravedad

La vulnerabilidad, identificada como CVE-2023-29017, recibió la puntuación máxima de gravedad en el CVSS, es decir 10. Fue descubierta por el equipo de investigación del Instituto Avanzado de Ciencia y Tecnología de Corea (KAIST).

Los investigadores encontraron que VM2 gestionaba incorrectamente los objetos de host pasados a la función Error.prepareStackTrace cuando se producía un error asíncrono. Esto permitió eludir las protecciones del sandbox y obtener la ejecución remota de código en el host.

El problema afecta a todas las versiones de VM2 desde la 3.9.14 en adelante. La solución se encuentra en la nueva versión 3.9.15, que debe instalarse para resolver el problema.

Código de explotación disponible

Tras la publicación de la nueva versión, un estudiante de doctorado del KAIST, Seongil Wi, publicó en GitHub dos variaciones del código de explotación para CVE-2023-29017. Los PoCs, en su forma publicada, simplemente crean un nuevo archivo llamado flag en el sistema, lo que demuestra la posibilidad de eludir las protecciones del sandbox.

En octubre de 2022, VM2 sufrió otro fallo crítico, CVE-2022-36067, que también permitía a los atacantes escapar del entorno sandbox y ejecutar comandos en el sistema anfitrión. Este problema fue solucionado con la publicación de una nueva versión.

La biblioteca VM2 está diseñada para ejecutar código no fiable en un contexto aislado en servidores NodeJS. Permite la ejecución parcial del código e impide el acceso no autorizado a recursos del sistema o a datos externos.

VM2 cuenta con más de 16 millones de descargas mensuales a través del repositorio NPM y es utilizada por entornos de desarrollo integrados (IDE), editores de código, soluciones de función como servicio (FaaS), entornos de Pentesting, herramientas de seguridad y diversos productos relacionados con JavaScript.

El término sandbox se refiere a un entorno aislado dentro del cual el código no fiable puede ejecutarse en un intento de mitigar el riesgo de que un código malicioso afecte a la máquina anfitriona. Aunque los sandboxes son extremadamente útiles como mecanismos de aislamiento, deben utilizarse con precaución, ya que es posible saltarse las restricciones.