- El sandbox de V8 es un sandbox ligero, dentro del proceso, para el motor V8
- Ahora ya salió de la fase experimental y fue incluido en el Programa de Recompensas por Vulnerabilidades (VRP) de Chrome
- Aún quedan problemas de seguridad por resolver, y la versión 123 de Chrome puede considerarse una versión "beta" del sandbox
Motivación
- La seguridad de memoria sigue siendo un problema importante, y todos los exploits de Chrome descubiertos en los últimos 3 años comenzaron con vulnerabilidades de corrupción de memoria en V8
- El 60% de estas vulnerabilidades se originaron en V8, pero la mayoría no eran bugs de corrupción de memoria "típicos", sino problemas lógicos sutiles
- La mayoría de las soluciones actuales de seguridad de memoria no se aplican a V8, y ni la migración a lenguajes seguros para memoria como Rust ni funciones de hardware como memory tagging ayudan con los desafíos de seguridad de V8
Sandbox (heap) de V8
- La idea básica del sandbox es aislar la memoria heap de V8 para que la corrupción de memoria no se "propague" a otras partes del proceso
- Puede implementarse con soporte de hardware, pero como actualmente no hay funciones de hardware adecuadas, se implementó por software
- El sandbox reemplaza todos los tipos de datos que pueden acceder a memoria externa con alternativas "compatibles con sandbox"
- Solo el heap de V8 dentro del sandbox está dentro del sandbox, lo que es similar al modelo de sandboxing de WebAssembly
Rendimiento
- La principal ventaja del enfoque de sandbox es que, en esencia, tiene un costo bajo
- La sobrecarga causada por el sandbox proviene principalmente de la indirección de tablas de punteros hacia objetos externos, y actualmente la sobrecarga es menor al 1% en cargas de trabajo típicas
Pruebas
- La capacidad de probar el límite de seguridad significa poder verificar, de forma manual y automática, si las garantías de seguridad realmente se mantienen
- El sandbox de V8 cumple con un modelo de atacante claro, una forma de emular al atacante y un método para determinar automáticamente cuándo falla el límite de seguridad
Uso
- El sandbox de V8 debe activarse o desactivarse en tiempo de compilación usando el build flag
v8_enable_sandbox.
- Solo puede usarse en sistemas de 64 bits y actualmente requiere reservar 1 terabyte de espacio de direcciones virtuales.
- El sandbox de V8 ya está habilitado por defecto desde hace aproximadamente 2 años en Chrome de 64 bits para Android, ChromeOS, Linux, macOS y Windows.
Conclusión
- El sandbox de V8 es un nuevo mecanismo de seguridad diseñado para evitar que la corrupción de memoria en V8 afecte a otra memoria del proceso
- Las tecnologías actuales de seguridad de memoria en su mayoría no se aplican a motores de JavaScript optimizados, pero sí son efectivas para proteger la superficie de ataque del sandbox de V8
- El sandbox es un paso esencial hacia la seguridad de memoria
Opinión de GN⁺
- El sandbox de V8 es una respuesta moderna a las vulnerabilidades de corrupción de memoria y ofrece una solución a problemas que las tecnologías existentes de seguridad de memoria no han podido resolver
- Considerando la complejidad de los motores de JavaScript, este sandbox cumple un papel importante al reforzar aún más el límite de seguridad y mejorar la seguridad de memoria
- El bajo overhead de rendimiento del sandbox puede resultar atractivo para los desarrolladores, lo que ayudará a su adopción generalizada
- Sin embargo, la tecnología de sandbox también podría introducir vulnerabilidades de seguridad completamente nuevas, y esto debe gestionarse mediante monitoreo y pruebas continuas
- Una implementación efectiva del sandbox cumple un papel clave para impedir que un atacante propague corrupción de memoria a otras partes del sistema, lo que contribuirá a reforzar la seguridad web
Aún no hay comentarios.