Noticia TONTOU: Un nuevo ataque Spectre v2 en AMD e Intel

TONTOU attack


¿Es posible que la velocidad de tu procesador sea precisamente lo que comprometa tu seguridad? Para entender el como los procesadores logran su rapidez, debemostomar en cuenta que estos trabajan «adivinando el futuro»… No, no es que sean magicos o tengan una pequeña espera de cristal…

La forma en como trabajan los procesadores es que en lugar de esperar para saber qué camino tomará un programa, el chip predice la ruta probable y se adelanta. Si la predicción es incorrecta, el trabajo se descarta, pero quedan rastros en la memoria. Aqui es donde entra Spectre, una de las vulnerabilidades mas importantes descubierta en los ulitmos años. Y es que desde su descubrimiento los atacantes han sabido cómo leer estos rastros creando variantes cada vez mas sofisticas, TONTOU es una de estas nuevas vulnerbilidades.

Investigadores del MIT han descubierto TONTOU (Time-of-Neutralization to Time-of-Use), una nueva y sofisticada técnica para explotar vulnerabilidades de la clase Spectre v2, permitiendo leer la memoria del kernel desde el espacio de usuario.

Y es que aunque durante años los fabricantes y desarrolladores han diseñado diversos mecanismos de proteccion contra los ataques de predicción, los atacantes han logrado descubrir nuevas rutas y este nuevo estudio de CSAIL demuestra el como burlar estas protecciones.

Los investigadores descubieron que existe una brecha de tiempo inevitable entre el momento en que se limpia el búfer y el instante en que se utilizan las predicciones y en esta pequeña brecha es donde se aprovecha para inyectar código (a veces de solo un puñado de instrucciones) a través de interrupciones del sistema, es posible volver a contaminar el hardware y extraer datos críticos.

Sobre el Ataque: Interrupciones y la Brecha en Safe-RET​


AMD cuenta con una defensa contra las vulnerabilidades SRSO (Speculative Return Stack Overflow), denominada saferet, esta se encarga de limpiar la maquinaria de predicción inmediatamente antes de cada uso. Esto deja una ventana de vulnerabilidad que se puede ejecutar en unas pocas decenas de nanosegundos. Para atacar una ventana tan pequeña, los investigadores desarrollaron una técnica que denominaron INTERRUPT INJECTION.

Los procesadores pausan constantemente sus tareas para gestionar interrupciones y los programas comunes pueden configurar estos temporizadores. Con esto en mente, los investigadores ajustaron un temporizador con extrema precisión y utilizando una técnica para ralentizar la CPU lograron que el procesador se desviara exactamente en el momento incorrecto. Durante esta interrupción, el atacante puede forzar a ejecutar una gran cantidad de llamadas, desbordando la pila de direcciones. Al finalizar la ejecución errónea, el procesador descarta el proceso, pero los datos consultados permanecen en las memorias caché compartidas, de donde pueden extraerse analizando los tiempos de acceso.

Extracción de Contraseñas y Pruebas en Sistemas Reales​


Para demostrar la gravedad de TONTOU, el equipo construyó un exploit funcional sobre un sistema AMD ejecutando un kernel de Linux actual. El primer obstáculo fue evadir la defensa que aleatoriza la posición del sistema operativo en la memoria, lo cual lograron en sus diez intentos, tomando unos nueve minutos por prueba.

Posteriormente, demostraron un ataque local como usuario no privilegiado para determinar el hash de la contraseña root logrando extraer datos a una velocidad de 5.47 bytes por segundo con una precisión del 91.97%. En el 50% de las pruebas (que promediaron 18 minutos), detectaron y extrajeron con éxito el contenido del archivo de contraseñas. Si bien es una velocidad lenta, es más que suficiente para comprometer críticamente un servidor.

Impacto en Intel, AMD y el parche de mitigación​


El equipo probó cuatro generaciones de procesadores de Intel y AMD, logrando fallos de predicción en ambas arquitecturas. Mientras que en AMD la técnica se demostró viable en las familias Zen 1 a 4, en los chips de Intel el ataque superó dos protecciones diferentes, aunque se observó un comportamiento inconsistente entre distintas generaciones de Intel, lo que sugiere que las defensas nominales se implementan de forma distinta en el hardware.

Como solución los investigadores sugieren limpiar la maquinaria de predicción por segunda vez al finalizar la interrupción. Mientras que esta medida parece viable para AMD, en Intel podría ser contraproducente, ya que el ataque depende de que la interrupción deje un estado consistente y podría hacer el ataque más confiable.

Los investigadores notificaron a AMD e Intel a principios de febrero y a los mantenedores del kernel de Linux en marzo. Como resultado, el bloqueo de código para mitigar la vulnerabilidad se integró en el kernel de Linux el pasado 5 de agosto.

Finalmente, si estas interesado en poder conocer mas al respecto puedes consultar los detalles en el siguiente enlace.

Continúar leyendo...