Los investigadores de seguridad han descubierto otra vulnerabilidad que afecta a numerosos microprocesadores AMD e Intel más antiguos que podrían eludir las defensas actuales y dar lugar a ataques de ejecución especulativa basados en Spectre.
Doblado vuelto a sangrar por los investigadores de ETH Zurich Johannes Wikner y Kaveh Razavi, los problemas se rastrean como CVE-2022-29900 (AMD) y CVE-2022-29901 (Intel), con los fabricantes de chips liberando software mitigaciones como parte de un proceso coordinado de divulgación.
Retbleed también es la última incorporación a una clase de ataques de Spectre conocidos como Spectre-BTI (CVE-2017-5715 o Spectre-V2), que explotan los efectos secundarios de una técnica de optimización llamada ejecución especulativa por medio de un canal lateral de temporización para engañar a un programa para que acceda a ubicaciones arbitrarias en su espacio de memoria y filtrar información privada.
La ejecución especulativa intenta llenar la canalización de instrucciones de un programa al predecir qué instrucción se ejecutará a continuación para obtener un aumento de rendimiento, mientras que también deshace los resultados de la ejecución si la suposición resulta ser incorrecta.
Los ataques como Spectre se aprovechan del hecho de que estas instrucciones ejecutadas erróneamente, como resultado de la predicción errónea, están destinadas a dejar rastros de la ejecución en el caché, lo que da como resultado un escenario en el que un programa no autorizado puede engañar al procesador para que ejecute rutas de código incorrectas y inferir datos secretos pertenecientes a la víctima.
Dicho de otra manera, Spectre es una instancia de ataque de ejecución transitoria, que se basa en fallas de diseño de hardware para “influir” en qué secuencias de instrucciones se ejecutan especulativamente y filtrar claves de cifrado o contraseñas desde el espacio de direcciones de memoria de la víctima.
Esto, a su vez, se logra a través de canales secundarios de microarquitectura como Flush+Reload que mide el tiempo necesario para realizar lecturas de memoria del caché que se comparte con la víctima, pero no antes de vaciar parte de la memoria compartida, lo que resulta en lecturas rápidas o lentas. dependiendo de si la víctima accedió a la línea de caché monitoreada desde que fue desalojada.
Mientras que salvaguardas como Retpolina (también conocido como “trampolín de retorno”) se han diseñado para evitar la inyección de destino de rama (BTI), Retbleed está diseñado para sortear esta contramedida y lograr la ejecución de código especulativo.
“Retpolines trabajo reemplazando saltos indirectos [branches where the branch target is determined at runtime] y llamadas con devoluciones”, explicaron los investigadores.
“Retbleed tiene como objetivo secuestrar una instrucción de retorno en el kernel para obtener la ejecución de código especulativo arbitrario en el contexto del kernel. Con suficiente control sobre los registros y/o la memoria en la instrucción de retorno de la víctima, el atacante puede filtrar datos arbitrarios del kernel”.
La idea central, en pocas palabras, es tratar instrucciones de devolución como vector de ataque para la ejecución de especulaciones y obligar a predecir los rendimientos como ramas indirectas, deshaciendo efectivamente las protecciones ofrecidas por Retpoline.
Como nueva línea de defensa, AMD ha introducido lo que se conoce como Jmp2Retmientras que Intel tiene recomendado usando especulación restringida de rama indirecta mejorada (eIBRS) para abordar la vulnerabilidad potencial, incluso si se aplican mitigaciones de Retpoline.
“El sistema operativo Windows usa IBRS de forma predeterminada, por lo que no se requiere actualización”, dijo Intel en un aviso, señalando que trabajó con la comunidad de Linux para hacer disponibles actualizaciones de software para la deficiencia.