Unos expertos en ciberseguridad descubrieron recientemente una vulnerabilidad en procesadores de ordenador. Tras alertar a los fabricantes de los chips para que pudieran poner en práctica las medidas capaces de neutralizar la amenaza potencial, han hecho público el problema.
Los procesadores modernos son rápidos, en parte, porque hacen suposiciones. En vez de esperar a descubrir qué rama tomará un programa, un chip predice la ruta probable y se adelanta. Cuando la predicción es correcta, se ahorra tiempo. Cuando es incorrecta, el trabajo se descarta, pero quedan rastros. Desde que se reveló la vulnerabilidad Spectre en 2018, los atacantes han sabido cómo leer esos rastros para extraer información confidencial de la memoria a la que nunca deberían haber tenido acceso.
Los fabricantes de chips y los desarrolladores de sistemas operativos han dedicado años a crear defensas. El nuevo estudio, llevado a cabo por Daniel Trujillo y Mengjia Yan, ambos del Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL), dependiente del Instituto Tecnológico de Massachusetts (MIT) en Estados Unidos, demuestra que una suposición clave en muchas de esas defensas no se cumple.
Las defensas funcionan borrando o aislando el trabajo de predicción del procesado en el momento preciso, eliminando cualquier información que un atacante pudiera haber introducido. El problema, como señalan Daniel Trujillo y Mengjia Yan, es que el borrado y el momento en que se utilizan las predicciones no pueden ocurrir simultáneamente. Siempre hay un lapso, a veces de tan solo unas pocas instrucciones. Cualquier cosa que se ejecute en ese lapso puede volver a contaminar el sistema. Los investigadores denominan a este tipo de ataque «TONTOU».
La contribución de Trujillo y Yan es una forma fiable de introducir código en ese lapso. Los ordenadores pausan constantemente sus tareas para gestionar las interrupciones: pequeñas tareas rutinarias activadas por temporizadores, tráfico de red y hardware. Los programas comunes pueden configurar esos temporizadores por sí mismos. Ajustando un temporizador con la precisión suficiente, Trujillo y Yan han comprobado que se puede hacer que el procesador realice la interrupción en el momento exacto en que no debe, y la ejecución de la interrupción es la que contamina el sistema. A esta técnica la denominan «inyección de interrupciones».
El equipo probó cuatro generaciones de procesadores de Intel y AMD, y obtuvo predicciones erróneas en ambas. En los chips de Intel, el ataque eludió dos protecciones diferentes: una integrada en el software para los procesadores más antiguos y otra integrada en el silicio de los más recientes. Curiosamente, la protección más reciente se mantuvo firme en una generación de Intel y falló en otra, lo que sugiere que los fabricantes de chips implementan la misma defensa nominal de maneras significativamente diferentes.
La defensa de AMD, llamada saferet, limpia la maquinaria de predicción inmediatamente antes de cada uso, dejando una ventana de vulnerabilidad de solo dos instrucciones de extensión, que normalmente se ejecutan en decenas de nanosegundos. Los investigadores la alcanzaron de todos modos, mediante la estrategia de ralentizar el procesador en ese punto exacto para facilitar el ataque.
A fin de demostrar lo que esto significa en la práctica, el equipo creó un exploit funcional en un sistema AMD con un kernel de Linux actual. Primero eliminaron una defensa que altera la ubicación del sistema operativo en la memoria, teniendo éxito en los 10 intentos realizados y tardando aproximadamente 9 minutos en cada uno. Esto les permitió leer la memoria protegida a unos cinco bytes por segundo, una velocidad lenta, pero lo bastante rápida como para localizar y copiar «/etc/shadow», el archivo que almacena el hash de la contraseña de root del sistema, en la mitad de sus intentos.
Los autores del estudio sugirieron un posible punto de partida para solucionar el problema en algunos procesadores: limpiar la maquinaria de predicción por segunda vez, cuando finaliza la interrupción. Parece viable en procesadores AMD. En procesadores Intel, no parece aconsejable, ya que podría aumentar las probabilidades de éxito del ataque en vez de reducirlas. Afortunadamente, los chips Intel más recientes incluyen una instrucción dedicada que parece ser útil.
La otra opción, bloquear las interrupciones durante el período vulnerable, probablemente afectaría demasiado al rendimiento de los procesadores como para resultar práctica.
Trujillo y Yan notificaron la vulnerabilidad a AMD y a Intel a principios de febrero y contactaron con los responsables del kernel de Linux en marzo, coordinándose con AMD para alertar a los proveedores de servicios en la nube y a otros clientes. Posteriormente, AMD publicó un parche que mitiga el ataque. El parche se puede obtener actualizando el sistema operativo. Su código está disponible públicamente.
El estudio se titula «TONTOU: On the Exploitability of Time-of-Neutralization to Time-of-Use Windows». Y se ha presentado públicamente en las convenciones Black Hat USA y USENIX Security, en agosto.
















