Nueva vulnerabilidad de ejecución especulativa afecta a AMD, ARM e Intel

Afortunadamente, las correcciones existentes deberían proporcionar la protección que necesitamos.

Un nuevo ataque que utiliza las capacidades de ejecución especulativa de los procesadores para filtrar datos, denominado Speculative Store Bypass (SSB), ha sido publicado tras ser descubierto de forma independiente por el Security Response Center de Microsoft y Google Project Zero. Los procesadores de Intel y AMD, junto con algunos de los que utilizan diseños de ARM, están todos afectados.

“Meltdown” y “Spectre”: Cada procesador moderno tiene fallas de seguridad que no se pueden arreglar
Desde que se anunciaron las fallas de Fusión y Espectro a principios de este año, las capacidades especulativas y predictivas de los microprocesadores modernos han sido examinadas de cerca, revelando varios ataques nuevos.
Todos los ataques siguen un conjunto de principios comunes. Cada procesador tiene un comportamiento arquitectónico (el comportamiento documentado que describe cómo funcionan las instrucciones y del que dependen los programadores para escribir sus programas) y un comportamiento microarquitectónico (la forma en que se comporta una implementación real de la arquitectura).

Estos pueden divergir en formas sutiles. Por ejemplo, arquitectónicamente, un programa que carga un valor de una dirección particular en la memoria esperará hasta que se conozca la dirección antes de intentar realizar la carga. Sin embargo, desde el punto de vista microarquitectónico, el procesador puede intentar adivinar especulativamente la dirección para poder empezar a cargar el valor de la memoria (que es lenta) incluso antes de estar absolutamente seguro de qué dirección debería utilizar.

chip photo

Si el procesador adivina mal, ignorará el valor adivinado y volverá a realizar la carga, esta vez con la dirección correcta. De este modo se conserva el comportamiento arquitectónicamente definido. Pero esa suposición errónea alterará otras partes del procesador, en particular el contenido de la caché. Estas perturbaciones microarquitectónicas pueden ser detectadas y medidas, permitiendo que un programa malicioso haga inferencias sobre los valores almacenados en la memoria.

Los ataques de Fusión y Espectro explotan esta diferencia. También lo hace SSB. A partir del informe de Microsoft sobre el problema, la secuencia problemática de eventos es la siguiente:

Almacenar un valor en una posición de memoria “lentamente”.
Cargar el valor en la misma posición de memoria “rápidamente”.

Utilice el valor que acaba de leer para perturbar la caché de forma detectable.
Aquí, “despacio” y “rápido” se refieren a la rapidez con la que el procesador puede determinar la posición de memoria desde la que se va a leer y escribir. El truco es hacer que el primer paso, el almacenamiento, dependa de los resultados de las instrucciones anteriores; esto significa que el procesador tiene que esperar antes de saber dónde almacenar el valor.

En cambio, el segundo paso, la carga, está construida de tal manera que la dirección puede determinarse rápidamente, sin esperar. En esta situación, la ejecución especulativa del procesador “ignorará” o “desviará” el almacén (porque todavía no sabe dónde se está almacenando realmente el valor) y simplemente asumirá que los datos actualmente almacenados en la posición de memoria son válidos. Esto le da al ataque su nombre: el almacén es desviado especulativamente, permitiendo que el procesador sea engañado para que lea valores que no debería.

Eventualmente el procesador se dará cuenta de que el almacén y la carga usaron la misma dirección de memoria, por lo tanto la carga tomó el valor incorrecto. Se descarta la ejecución especulativa y se realiza el cálculo correcto con los valores correctos. Por lo tanto, el comportamiento arquitectónico se conserva adecuadamente. Pero en este punto el estado microarquitectónico del procesador ya ha cambiado. Estos cambios pueden ser detectados, y un atacante puede usar esos cambios para averiguar qué valor fue leído.

Buenas y malas noticias

Al igual que con Spectre y Meltdown, SSB requiere que el atacante sea capaz de ejecutar código en un sistema víctima. Esto lo hace especialmente preocupante para los proveedores de servicios cloud (donde una parte maliciosa puede intentar atacar al hipervisor y salir de su máquina virtual) y para los motores JavaScript de los navegadores (donde los scripts maliciosos pueden salir de su caja de arena), pero a la inversa, significa que fuera de estos escenarios el alcance es limitado.

Generalmente, la necesidad de poder ejecutar código de ataque arbitrario en primer lugar significa que uno o más fallos ya deben existir. Del mismo modo, este ataque sólo permite la lectura de datos. Aunque ocasionalmente esos datos son en sí mismos útiles (por ejemplo, contraseñas o claves de cifrado), lo más frecuente es que simplemente proporcionen información adicional (como detalles sobre la distribución de la memoria del núcleo) para ayudar a realizar otro ataque utilizando algún otro fallo.

 

En términos de riesgo y explotabilidad, este ataque es similar a la primera variante de Spectre. La primera variante de Spectre, el bypass de los límites del arreglo, utiliza un patrón similar de dos operaciones en secuencia (para SSB, un almacén luego una carga; para Spectre v1, una rama luego una carga), donde la primera operación cambia arquitectónicamente el resultado de la carga pero se ejecuta especulativamente como si no lo hiciera.

Dejar una respuesta