Un año después de los procesadores Arm comenzó a mitigar la especulación en línea recta, los desarrolladores de Linux han estado trabajando en mitigaciones similares de especulación en línea recta para procesadores x86/x86_64.

En los últimos meses hemos estado viendo kernel de Linux y parches GCC y LLVM/Clang en torno a la mitigación de la especulación en línea recta para los procesadores Intel/AMD. El problema en cuestión es que los procesadores ejecutan instrucciones de manera especulativa linealmente en la memoria más allá de un cambio incondicional en el flujo de control.

Los compiladores están agregando una opción”mharden-sls”para agregar instrucciones INT3 después de los retornos de funciones y ramas indirectas para proteger contra posibles especulaciones en línea recta. En el lado del kernel, los parches en los que se está trabajando deben hacer uso de la opción de endurecimiento SLS cuando esté presente. Los parches habilitarían este endurecimiento cuando se encuentre en una versión de kernel compatible (GCC 12+ y presumiblemente Clang 14+) y cuando se use una compilación de kernel con Retpolines (return trampolines) habilitado. Como esta opción controla la generación de código, sería solo una opción de tiempo de compilación y no controlable en tiempo de ejecución para el kernel.

El sábado se enviaron los últimos parches para el kernel en torno a este manejo de mitigación de SLS como principalmente una refactorización de los cambios propuestos anteriores, que también incluye los cambios de objtool para validar el manejo de mitigación de SLS con trampas de especulación después de llamadas indirectas y RET. Como efecto secundario conocido, la mitigación de SLS para el kernel aumenta el tamaño del texto de la compilación del kernel en aproximadamente un 2.4% debido a las instrucciones adicionales (INT3).

Categories: IT Info