Aviso de seguridad
Nivel de peligrosidad: Crítico
Descripción
VM2 es una biblioteca de espacio aislado de JavaScript que proporciona un entorno aislado para ejecutar código que no es de confianza en Node.js.
VM2 está diseñado para crear una zona de pruebas segura alrededor del código no confiable que se puede ejecutar de manera segura sin afectar la máquina host. Es muy utilizado en la comunidad Node.js, con casi cuatro millones de descargas semanales, y se utiliza en 721 paquetes.
Es especialmente útil para los desarrolladores que necesitan ejecutar código que no es de confianza en un entorno controlado, como cuando se desarrollan complementos o extensiones para aplicaciones web.
Con el módulo de VM interno, la biblioteca Sandbox de VM2 crea un contexto seguro para el código que no es de confianza. Esto garantiza que el código no pueda acceder ni modificar información confidencial en el proceso del host. La biblioteca también usa Proxies para interceptar y personalizar operaciones en objetos, evitando que el código que no es de confianza escape del entorno limitado y acceda a información confidencial.
CVE-2023-29017, es una vulnerabilidad crítica (CVSS 9.8) de escape de sandbox en VM2 que podría permitir a los atacantes eludir sus protecciones de sandbox y ejecutar shellcode arbitrario en la máquina host.
La falla existe específicamente en el método "clon()" utilizado por vm2. Este método crea una copia de un objeto pero no copia correctamente la propiedad "__proto__". Esto deja el nuevo objeto abierto a la manipulación, que luego se puede usar para salir de la sandbox.
Recursos afectados
Los recursos afectados por esta vulnerabilidad son:
- Versiones anteriores a la versión 3.9.15
Solución
- Actualizar VM2 a la versión 3.9.15 u otra versión posterior para mitigar la vulnerabilidad.
Prueba de concepto
Se ha publicado una prueba de concepto por los investigadores del Instituto Avanzado de Ciencia y Tecnología de Corea (KAIST) en el repositorio de github que demuestra cómo se puede explotar la falla.
Recomendaciones
Se deben tomar medidas inmediatas para mitigar esta vulnerabilidad debido a la existencia de un exploit público que puede ser utilizado por actores malintencionados para tomar el control del sistema.
Referencias
Vulnerabilidad crítica en la biblioteca VM2 de NodeJS