spectre

Google dio a conocer hace ya varios dias varios prototipos de exploits que demuestran la posibilidad de explotar las vulnerabilidades de la clase Spectre al ejecutar código JavaScript en un navegador, sin pasar por los métodos de seguridad añadidos anteriormente.

Los exploits se pueden utilizar para obtener acceso a la memoria de un proceso que está procesando contenido web en la pestaña actual. Para probar el funcionamiento del exploit, se lanzó el sitio web de la página con fugas y el código que describe la lógica de la operación se publica en GitHub.

El prototipo propuesto está diseñado para atacar sistemas con procesadores Intel Core i7-6500U en un entorno con Linux y Chrome 88, aun que esto no deja de lado que se pueden realizar cambios para usar el exploit en otros entornos.

El método de operación no es específico para los procesadores Intel: después de la adaptación adecuada, se confirmó que el exploit funciona en sistemas con CPU de otros fabricantes, incluido el Apple M1 basado en la arquitectura ARM. Después de pequeños ajustes, el exploit también funciona en otros sistemas operativos y otros navegadores basados ​​en el motor Chromium.

En un entorno basado en procesadores estándar Chrome 88 e Intel Skylake, logramos una fuga de datos del proceso responsable de procesar el contenido web en la pestaña actual de Chrome ( proceso de renderizado ) a una velocidad de 1 kilobyte por segundo. Además, se desarrollaron prototipos alternativos, por ejemplo, un exploit que permite, a costa de una estabilidad reducida, aumentar la tasa de fuga a 8kB / s cuando se usa el temporizador performance.now () con una precisión de 5 microsegundos (0.005 milisegundos ). También se preparó una variante que funcionaba con una precisión de temporizador de un milisegundo, que podía usarse para organizar el acceso a la memoria de otro proceso a una velocidad de unos 60 bytes por segundo.

El código de demostración publicado consta de tres partes:

  • La primera parte calibra el temporizador para estimar el tiempo de ejecución de las operaciones necesarias para recuperar los datos que quedan en la caché del procesador como resultado de la ejecución especulativa de las instrucciones de la CPU.
  • La segunda parte define el diseño de memoria utilizado al asignar la matriz de JavaScript.
  • La tercera parte explota directamente la vulnerabilidad Spectre para determinar el contenido de la memoria del proceso actual como resultado de la creación de condiciones para la ejecución especulativa de ciertas operaciones, cuyo resultado es descartado por el procesador después de determinar un pronóstico fallido, pero los rastros de ejecución se asientan en la caché compartida y se pueden restaurar utilizando métodos para determinar el contenido de la caché mediante canales de terceros que analizan el cambio en el tiempo de acceso a los datos almacenados en caché y no almacenados en caché.

La técnica de explotación propuesta permite prescindir de los temporizadores de alta precisión disponibles a través de la API performance.now() y sin soporte para el tipo SharedArrayBuffer, que permite crear arreglos en memoria compartida.

El exploit incluye el dispositivo Spectre, que provoca la ejecución de código especulativo controlado, y un analizador de fugas de canal lateral, que determina los datos que se han introducido en la caché durante la ejecución especulativa.

El gadget se implementa utilizando una matriz de JavaScript, en la que se intenta acceder a un área fuera de los límites del búfer, lo que afecta el estado del bloque de predicción de la rama debido a la presencia de una verificación del tamaño del búfer agregada por el compilador (el procesador realiza especulativamente un acceso antes de tiempo, pero revierte el estado después de verificar).

Para analizar el contenido de la caché en condiciones de precisión de temporizador insuficiente, se propuso un método que engaña la estrategia de desalojo de datos de la caché Tree-PLRU utilizada en procesadores y permite, al aumentar el número de ciclos, aumentar significativamente la diferencia de tiempo cuando el valor se devuelve de la caché y en ausencia de un valor en la caché.

Google ha publicado un prototipo del exploit para mostrar la viabilidad de los ataques utilizando vulnerabilidades de clase Spectre e incentivar a los desarrolladores web a utilizar técnicas que minimicen los riesgos de tales ataques.

Al mismo tiempo, Google cree que sin una revisión significativa del prototipo propuesto, es imposible crear exploits universales que estén listos no solo para demostración, sino también para uso generalizado.

 

Fuente: googleblog | desdelinux

¿Quién está en línea?

Hay 10173 invitados y ningún miembro en línea