Vulnerabilidad en isolated-vm permite escapar del sandbox y ejecutar código en el host

Investigadores de ciberseguridad han divulgado una vulnerabilidad crítica en isolated-vm, una popular librería de sandboxing de código abierto con más de 2,900 estrellas y 190 forks en GitHub, que podría permitir a los atacantes escapar del entorno aislado.

La vulnerabilidad, identificada como GHSA-864f-rcv7-6rh4 y sin número CVE asignado aún, afecta a todas las versiones de la librería hasta la 7.0.0, incluyéndola. El fallo ya ha sido corregido en las versiones 6.2.0 y 7.0.1, lanzadas a principios de este mes.

isolated-vm es una librería de Node.js diseñada para ejecutar código JavaScript no confiable dentro de un V8 Isolate, una instancia independiente del motor JavaScript V8 de Google. Esto permite que múltiples entornos JavaScript aislados se ejecuten simultáneamente sin compartir datos ni interferir entre sí. El paquete npm ha registrado casi un millón de descargas en la última semana.

Debido a que cada V8 Isolate tiene un estado separado y su propio heap, no es posible pasar directamente objetos JavaScript desde el hilo principal de Node.js a un isolate de trabajo. Para ello, isolated-vm expone una clase llamada ExternalCopy, que serializa de forma segura objetos JavaScript desde el isolate anfitrión y los deserializa en el isolate invitado. La vulnerabilidad descubierta por Endor Labs reside en este componente, permitiendo que el código ejecutado dentro del sandbox pueda romper la barrera y corromper la memoria del host.

Una confusión de tipos en el manejo de la opción transferList de ExternalCopy permite que código dentro del sandbox corrompa la memoria del proceso anfitrión.

Staicu, quien descubrió y reportó la falla, explicó en un informe técnico compartido con The Hacker News que partiendo de una simple referencia ivm.Reference, la forma estándar en que los hosts otorgan capacidades a un sandbox, se pudo escalar el bug desde un fallo controlado hasta el secuestro del flujo de control del host, demostrando una completa evasión del sandbox de invitado a host.

La explotación exitosa de la vulnerabilidad permite la corrupción de memoria en el proceso anfitrión, provocando que el proceso se detenga con una violación de segmento (SIGSEGV). También puede conducir a una evasión del sandbox de invitado a host y a la erosión de la frontera de confianza, socavando el propósito mismo de isolated-vm.

El impacto mínimo demostrado es un fallo controlado y fiable (denegación de servicio) desencadenable por cualquier invitado que haya recibido una ivm.Reference, la forma estándar de otorgar capacidades a un sandbox. El impacto máximo demostrado es el secuestro del flujo de control del proceso anfitrión, es decir, una potencial ejecución remota de código en el host.

Se recomienda a los usuarios que tengan isolated-vm instalado en sus entornos de desarrollo que actualicen a la última versión para una protección óptima. Los detalles completos del exploit se han mantenido en reserva para evitar que actores malintencionados lancen sus propios ataques.

La conclusión más importante es que lo que no se rompió fue el primitivo de aislamiento en sí. El límite del isolate de V8 se mantuvo. Lo que falló fue el código de unión en C++ que maneja los valores a través de ese límite. Un bloque de construcción perfectamente sólido fue socavado por la capa de enlace que lo envuelve.

Cybersecurity
Cybersecurity
Cybersecurity
Cybersecurity

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *