4 puntos por GN⁺ 2024-04-06 | Aún no hay comentarios. | Compartir por WhatsApp
  • 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.

Aún no hay comentarios.