Las CPU de Intel y AMD son vulnerables a un nuevo ataque de ejecución especulativa
Algunos microprocesadores de Intel y AMD son vulnerables a un ataque de ejecución especulativa recientemente descubierto que puede filtrar subrepticiamente datos de contraseñas y otro material confidencial, lo que llevó a ambos fabricantes de chips una vez más a contener lo que está demostrando ser una vulnerabilidad persistente. Los investigadores de ETH Zurich llamaron a su ataque Retbleed porque explota una defensa de software llamada Retpoline que los fabricantes de chips introdujeron en 2018 para mitigar los efectos dañinos de los ataques de ejecución especulativa. Los ataques de ejecución especulativa, también conocidos como espectros, explotan el hecho de que las CPU modernas, cuando encuentran una rama de instrucción directa o indirecta, predicen la dirección de la siguiente instrucción que recibirán y la ejecutan automáticamente antes de que se confirme la predicción. Spectre funciona engañando a la CPU para que ejecute una instrucción que acceda a datos confidenciales en la memoria que normalmente están fuera del alcance de una aplicación de privilegios bajos. Luego, Retbleed extrae los datos después de cancelar la operación.
¿Es un trampolín o una honda?
Retpoline utiliza una serie de operaciones de devolución para aislar las ramas indirectas de los ataques de ejecución especulativa, creando el equivalente de software de un trampolín que garantiza que reboten de forma segura. En otras palabras, una retpoline funciona reemplazando saltos y llamadas indirectas con retornos que muchos investigadores asumieron que no eran vulnerables. La defensa fue diseñada para contrarrestar la variante 2 de los ataques de ejecución especulativa originales de enero de 2018. La variante, abreviada como BTI, obliga a una rama indirecta a ejecutar el llamado código «gadget», que a su vez genera datos que se filtran a través de un canal lateral. Algunos investigadores han advertido durante años que los retpolines son insuficientes para mitigar los ataques de ejecución especulativa porque los retpolines utilizados eran susceptibles a BTI. El creador de Linux, Linus Torvalds, hizo caso omiso de tales advertencias, argumentando que tales exploits no eran prácticos. Los investigadores de ETH han demostrado de manera concluyente que la retpolina es, de hecho, insuficiente para prevenir ataques de ejecución especulativa. Su nueva prueba de concepto funciona contra las CPU Intel con microarquitecturas Kaby Lake y Coffee Lake, así como contra las microarquitecturas AMD Zen 1, Zen 1+ y Zen 2. “Retpoline, como una mitigación de Spectre BTI, no considera las instrucciones de retorno como un vector de ataque ‘, escribieron los investigadores Johannes Wikner y Kaveh Razavi. “Si bien es posible defender las instrucciones de devolución agregando una entrada válida al RSB [return stack buffer] antes de ejecutar la declaración de devolución, tratar cada devolución como potencialmente explotable de esta manera incurriría en una sobrecarga enorme. El trabajo anterior intentó llenar condicionalmente el RSB con objetivos de devolución inofensivos cuando una profundidad de pila de llamadas de seguimiento de contador por CPU alcanza un cierto umbral, pero nunca se aprobó para upstream. Intel está reevaluando esta mitigación frente al resangrado, pero las CPU de AMD requieren una estrategia diferente». En un correo electrónico, Razavi explicó:
La variante 2 de Spectre explotaba ramas indirectas para lograr una ejecución especulativa arbitraria en el núcleo. Ramas indirectas convertidas en retornos usando retpoline para mitigar la variante 2 de Spectre. Retbleed muestra que, lamentablemente, las instrucciones de devolución se filtran en determinadas condiciones, de forma similar a las bifurcaciones indirectas. Desafortunadamente, estas condiciones ocurren en las plataformas Intel (Skylake y Skylake-based) y AMD (Zen, Zen+ y Zen2). Esto significa que, lamentablemente, Retpoline no fue un alivio suficiente para empezar.
En respuesta a la investigación, tanto Intel como AMD están aconsejando a los clientes que implementen nuevas medidas de mitigación, que según los investigadores darán como resultado hasta un 28 por ciento más de gastos generales operativos. Retbleed puede filtrar la memoria del kernel de las CPU Intel a alrededor de 219 bytes por segundo y con un 98 por ciento de precisión. El exploit puede extraer la memoria del núcleo de las CPU de AMD con un ancho de banda de 3,9 kB por segundo. Los investigadores dijeron que es capaz de localizar y filtrar el hash de la contraseña raíz de una computadora Linux de la memoria física en aproximadamente 28 minutos cuando se ejecutan CPU Intel y aproximadamente 6 minutos para CPU AMD. Retbleed funciona mediante el uso de un código que esencialmente envenena el motor de predicción de bifurcaciones en el que se basan las CPU para hacer sus conjeturas. Una vez que se completa el envenenamiento, esta BPU hace predicciones falsas que el atacante puede controlar. «Descubrimos que incluso como un usuario sin privilegios, podemos inyectar objetivos de rama que están dentro del espacio de direcciones del kernel», escribieron los investigadores en una publicación de blog. «Aunque no podemos acceder a los objetivos de la rama dentro del espacio de direcciones del kernel (una bifurcación a dicho objetivo da como resultado una falla de página), el motor de predicción de bifurcación se actualiza cuando observa una bifurcación y asume que se ejecutó legalmente incluso si lo hizo». es una dirección del kernel.”