Una actualización sobre el trabajo en curso de Meltdown y Spectre

La semana pasada, una serie de vulnerabilidades críticas llamadas Spectre y Meltdown fueronAnunciado. Debido a la naturaleza de estos problemas, las soluciones son complejas y requieren corregir un código delicado. Las correcciones para Meltdown están en su mayoría en marcha. La solución Meltdown para x86 es KPTI. KPTI se ha fusionado con el árbol principal de Linux y muchos árboles estables, incluidos los Fedora usos. Las correcciones para otros arcos son close a ser hecho y debería estar disponible pronto. Arreglar Spectre es más difícil y requiere correcciones en múltiples áreas.

De manera similar a Meltdown, Spectre se aprovecha de la especulación realizada por las CPU. Parte de la solución para Spectre es prohibir que la CPU especule en secuencias vulnerables particulares. Una solución desarrollada por Google y otros es introducir “retpolines” que no permiten la especulación. Una secuencia de código que podría permitir especulaciones peligrosas se reemplaza con una “retpolina” que no especulará. La parte difícil de esta solución es que el compilador debe saber dónde colocar una retpoline. Esto significa que una solución completa también involucra al compilador.

La primera parte del trabajo necesario para la retpolina ya está hecha. Esto debería fusionarse por completo en los próximos días y estar disponible en Fedora lanzamientos estables en breve. Estos parches por sí mismos brindan un grado de protección contra los ataques de Spectre, pero se necesita más trabajo para ser una solución completa. El soporte del compilador para brindar mayor protección aún está bajo revisión por parte de los desarrolladores ascendentes. El soporte para otros arcos está en curso.

Una alternativa a los parches de retpoline consiste en exponer algunas características de hardware para controlar más estrictamente la especulación. Algunas CPU tienen una característica llamada Especulación restringida de rama indirecta (IBRS). Cuando esta característica está habilitada, los programas de espacio de usuario están más restringidos en la forma en que pueden ejecutar instrucciones especulativamente. La compatibilidad completa con esta función requiere actualizaciones de microcódigos, algunas de las cuales están disponibles ahora y otras estarán disponibles en breve. IBRS proporciona una solución más completa sin necesidad de soporte de compilador pero a un mayor costo de rendimiento. Los parches de IBRS todavía están bajo revisión y deberían fusionarse eventualmente, pero no estarán disponibles a tiempo para la versión 4.15. Cuando los parches de IBRS estén disponibles, los actualizaremos a Fedora ramas estables.

Tanto IBRS como retpoline cubren la versión “variante 2” de Spectre. La versión “variante 1” de Spectre no tiene una solución con un nombre rápido y pegadizo. La solución para la variante 1 implica escanear el código en busca de secuencias que puedan ser problemáticas. El método para escanear el código tiende a producir muchos falsos positivos (secuencias que en realidad no son vulnerables), por lo que los desarrolladores ascendentes están tratando de reducir las partes del código que realmente necesitan reparación. Se han fusionado las correcciones para las secuencias que se sabe que son vulnerables.

Aunque Spectre es un problema de seguridad importante, igual de importante es la revisión cuidadosa de las correcciones para asegurarse de que la solución se pueda mantener. Apurar una solución podría causar más problemas en el futuro. los Fedora El equipo está monitoreando continuamente las correcciones de Spectre para traerlas cuando estén listas.

Actualizaciones del boletín

Ingrese su dirección de correo electrónico a continuación para suscribirse a nuestro boletín