Google ha demostrado la explotación de vulnerabilidades Spectre a través de la ejecución de JavaScript en el navegador

La empresa Google ha publicado varios prototipos de exploits que muestran la posibilidad de explotar vulnerabilidades de la clase Spectre al ejecutar código JavaScript en el navegador, eludiendo los métodos de protección previamente implementados. Los exploits pueden ser utilizados para acceder a la memoria del proceso que maneja el contenido web en la pestaña actual. Se ha lanzado el sitio leaky.page para probar el funcionamiento del exploit, y el código que describe la lógica de operación se encuentra en GitHub.

El prototipo propuesto está diseñado para llevar a cabo un ataque en sistemas con procesadores Intel Core i7-6500U en un entorno con Linux y Chrome 88. Para aplicar el exploit en otros entornos, se requieren modificaciones. El método de explotación no es específico de los procesadores Intel; tras la adaptación correspondiente, se ha confirmado el funcionamiento del exploit en sistemas con CPU de otros fabricantes, incluyendo Apple M1 basado en la arquitectura ARM. Después de algunos ajustes menores, el exploit también es funcional en otros sistemas operativos y en otros navegadores basados en el motor Chromium.

En un entorno basado en el Chrome estándar 88 y procesadores Intel Skylake, se logró una fuga de datos del proceso responsable del manejo del contenido web en la pestaña actual de Chrome (renderer process), a una velocidad de 1 kilobyte por segundo. Además, se desarrollaron prototipos alternativos, por ejemplo, un exploit que, a costa de reducir la estabilidad, aumenta la velocidad de fuga a 8kB/s utilizando el temporizador performance.now() con una precisión de 5 microsegundos (0.005 milisegundos). También se preparó una variante que funciona con una precisión del temporizador de un milisegundo, que podría usarse para acceder a la memoria de otro proceso a una velocidad de aproximadamente 60 bytes por segundo.

El código de demostración publicado consta de tres partes. La primera parte calibra el temporizador para evaluar el tiempo de ejecución de las operaciones necesarias para recuperar los datos que permanecen en la caché del procesador como resultado de la ejecución especulativa de instrucciones de la CPU. La segunda parte determina el diseño de memoria utilizado al colocar un arreglo de JavaScript.

La tercera parte explota directamente la vulnerabilidad Spectre para determinar el contenido de la memoria del proceso actual, creando así condiciones para la ejecución especulativa de ciertas operaciones, cuyos resultados son desechados por el procesador tras identificar una predicción fallida. Sin embargo, los rastros de ejecución permanecen en la caché general y pueden ser recuperados mediante métodos que determinan el contenido de la caché a través de canales laterales, analizando los cambios en el tiempo de acceso a datos almacenados en caché y no almacenados.

La técnica de explotación propuesta permite prescindir de temporizadores de alta precisión, disponibles a través de performance.now(), y de la compatibilidad con SharedArrayBuffer, que permite crear matrices en memoria compartida. El exploit incluye un gadget de Spectre que provoca la ejecución especulativa controlada de código y un analizador de filtraciones por canales laterales que determina los datos que han llegado a la caché obtenidos durante la ejecución especulativa.

El gadget se implementa mediante un array de JavaScript, en el que se intenta acceder a una zona fuera de los límites del búfer, afectando al estado del bloque de predicción de saltos debido a una verificación de tamaño de búfer añadida por el compilador (el procesador, anticipándose, ejecuta especulativamente el acceso, pero revierte el estado tras la comprobación). Para analizar el contenido de la caché en condiciones de insuficiente precisión del temporizador, se propone un método que engaña a la estrategia de reemplazo de datos en caché Tree-PLRU utilizada en los procesadores y que permite, al aumentar el número de ciclos, aumentar considerablemente la diferencia en el tiempo de entrega de un valor desde la caché frente a la ausencia de ese valor en la caché.

Se observa que Google ha publicado un prototipo de exploit para mostrar la viabilidad de los ataques que utilizan vulnerabilidades de la clase Spectre y para estimular a los desarrolladores web a aplicar técnicas que minimicen los riesgos de tales ataques. Google considera que, sin una revisión significativa del prototipo propuesto, no es posible crear exploits universales que estén listos no solo para demostraciones, sino también para su uso generalizado.

Para reducir el riesgo, se recomienda a los propietarios de sitios web utilizar los encabezados recientes Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame-Options, X-Content-Type-Options y SameSite Cookie. Estos mecanismos no protegen directamente contra los ataques, pero permiten aislar los datos del sitio de posibles filtraciones en procesos donde podría ejecutarse código JavaScript del atacante (la filtración ocurre desde la memoria del proceso actual, donde, además del código del atacante, pueden manejarse datos de otro sitio abierto en la misma pestaña). La idea principal es separar en diferentes procesos la ejecución del código del sitio del código externo recibido de fuentes no confiables, como aquel que se incluye a través de iframe.

Reproducir video


Fuente: opennet.ru
Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster