TONTOU — un ataque a la CPU de Intel y AMD que permite evadir las protecciones contra vulnerabilidades Spectre v2

Investigadores del Instituto Tecnológico de Massachusetts han revelado una técnica de ataque TONTOU (Time-of-Neutralization to Time-of-Use), que ofrece una nueva forma de explotar vulnerabilidades microarquitectónicas del tipo Spectre v2. Esta vulnerabilidad permite determinar el contenido de la memoria del núcleo durante la ejecución de un exploit en el espacio del usuario. El código para bloquear la explotación de esta vulnerabilidad se incluyó en el núcleo de Linux el 5 de agosto y se integró en las versiones 7.1.7, 6.18.43, 6.12.102, 6.6.149, 6.1.181, 5.15.214 y 5.10.263.

Los investigadores han demostrado la posibilidad de que un usuario local no privilegiado realice un ataque para determinar el hash de la contraseña del usuario root, almacenado en el archivo /etc/shadow y cargado en la memoria durante la autenticación en el sistema. Los investigadores lograron filtrar datos de la memoria del núcleo a una velocidad de 5.47 bytes por segundo y con una precisión del 91.97%. De 10 ejecuciones de prueba del exploit, que en promedio duraron 18 minutos, en la mitad de los casos se pudo determinar con éxito la presencia en memoria del archivo /etc/shadow y extraer su contenido.

El exploit se demostró en sistemas con procesadores AMD y puede aplicarse con CPUs AMD de las familias Zen 1-4. En sistemas Intel, el ataque también es factible, pero la explotación es más compleja. Para protegerse contra el desbordamiento de la pila de direcciones de retorno y bloquear la vulnerabilidad SRSO (Speculative Return Stack Overflow) en los procesadores AMD, se utiliza un mecanismo de protección llamado Safe-RET, que limpia el búfer de predicción de saltos después de cada uso y reduce la ventana de ataque a 2 instrucciones, que se ejecutan en unos pocos decenas de nanosegundos.

Para eludir esta protección y ampliar la ventana de ejecución del ataque, se ha implementado una técnica de ralentización de la CPU que permite ejecutar la sustitución de la interrupción en el momento adecuado para redirigir el flujo de ejecución en el núcleo y utilizar el manejador de interrupciones para distorsionar la entrada en el búfer de predicción de saltos. Para explotar la vulnerabilidad SRSO, el atacante puede crear condiciones en las que el bloque de predicción de saltos ejecute especulativamente un gran número de llamadas CALL incorrectamente predichas, suficientes para desbordar la pila de direcciones de retorno y sobrescribir las direcciones de retorno correctamente predichas que están al principio de la pila. Como resultado, los elementos iniciales de la pila pueden ser sobrescritos con los valores elegidos por el atacante, lo que llevará al uso de estos valores reemplazados durante la ejecución especulativa de la instrucción RET en el contexto de otro proceso.

El procesador determinará que la predicción de bifurcación no fue correcta y revertirá la operación a su estado inicial, pero los datos procesados durante la ejecución especulativa se quedarán en la caché y en los búferes microarquitectónicos. Si el bloque erróneamente ejecutado accede a la memoria, su ejecución especulativa producirá una entrada en la caché general y en los datos leídos de la memoria. Para extraer información de la caché, puede utilizarse uno de los métodos de determinación del contenido de la caché basado en el análisis de los cambios en el tiempo de acceso a los datos en caché y los que no están en caché.

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