Errores críticos en la biblioteca vm2 de JavaScript podría conducir a código de ejecución remota

Una ronda fresca de parches ha sido liberada para la biblioteca vm2 de JavaScript los cuales apuntan a corregir dos errores críticos los cuales podrían ser explotados para quebrantar las protecciones de sandbox.

vm2

Vm2 es una biblioteca sandbox utilizada para la ejecución de código no confiable en un entorno aislado en Node.js. este usa el modulo interno de VM para crear un contexto seguro. Vm2 hace uso de Proxies para así prevenir fugas desde el sandbox. A su vez Anula el requisito incorporado para controlar el acceso a los módulos.

Las vulnerabilidades que se buscan corregir con estas actualizaciones serían CVE-2023-29199 y CVE-2023-30547 las cuales están catalogadas como vulnerabilidades críticas con un rating de 9.8 de 10 en el sistema de puntuación de CVSS. Ambas vulnerabilidades ya han sido abordadas en la versión 3.9.16 y 3.9.17, respectivamente.

el escape

Existe una vulnerabilidad en transformador de código fuente (Lógica de saneamiento de excepciones) en vm2 para las versiones hasta la 3.9.15, lo que permite al atacante pasar por alto el handleException() y filtrar excepciones de hosts no desinfectadas, lo que puede ser usado para escapar del sandbox y, a su vez, correr código arbitrario en host el cual hace ejecuta el sandbox.

Ya que las excepciones del host pueden filtrar objetos del host al sandbox, se procesa código con transformer() y así  poder instrumentar el código con la función santificadora. El nombre identificador de la cláusula catch se interpola en la función insertions como code para sanear la excepción capturada, la cual podría ser una excepción de host.

Esto es posteriormente post-procesado para reemplazar $tmpname con el valor de la cadena en tmpname (originalmente VM2_INTERNAL_TMPNAME) a el código de sanitización de casos ObjectPattern, que a su vez permite a un atacante eludir handleException() con identificadores que contengan la cadena $tmpname.

El atacante podrá, entonces, hacer uso de cualquier método para alcanzar una excepción de host y hacer uso de esta, para acceder a la función Constructor del host y así escapar de la sandbox y obtener la ejecución de código arbitrario en el contexto del host. A continuación, se presenta los exploits de prueba de concepto.

La revelación se produce poco más de una semana después de que vm2 subsanara otro fallo de escape de Sandbox (CVE-2023-29017, puntuación CVSS: 9,8) que podía conducir a la ejecución de código arbitrario en el sistema subyacente.

Related Post