La semana pasada, se anunciaron una serie de vulnerabilidades críticas llamadas Spectre y Meltdown .Debido a la naturaleza de estos problemas, las soluciones son complejas y es necesario corregir el código delicado. Las soluciones para Meltdown están en su mayoría en marcha. La solución Meltdown para x86 es KPTI . KPTI se ha fusionado en el árbol de Linux principal y en muchos árboles estables, incluidos los que usa Fedora. Las reparaciones para otros arcos están a punto de completarse y deberían estar disponibles pronto. La reparación de Spectre es más difícil y requiere soluciones en múltiples áreas.

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

La primera parte del trabajo necesario para retpoline ahora está hecho. Esto debería fusionarse por completo en los próximos días y estar disponible en las versiones estables de Fedora en breve. Estos parches por sí mismos proporcionan un grado de protección contra los ataques de Espectro, pero se necesita más trabajo para ser una solución completa. El soporte del compilador para proporcionar más protección aún está bajo revisión por parte de los desarrolladores iniciales. El soporte para otros arcos está en curso.

Una alternativa a los parches de retpoline implica exponer algunas características de hardware para controlar más estrictamente la especulación. Algunas CPU tienen una función llamada especulación restringida de rama indirecta (IBR). Cuando esta característica está habilitada, los programas de espacio de usuario tienen restricciones adicionales sobre cómo pueden ejecutar instrucciones especulativamente. Completamente compatible con esta característica requiere actualizaciones de microcódigo, algunas de las cuales están disponibles ahora con otras disponibles en breve. IBRS ofrece una solución más completa sin la necesidad de soporte del compilador pero a un costo de rendimiento más alto. Los parches de IBRS aún se están revisando y deberían fusionarse eventualmente, pero no estarán disponibles a tiempo para 4.15. Cuando los parches de IBRS estén disponibles, los llevaremos a las sucursales estables de Fedora.

Tanto IBRS como retolina 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 para detectar secuencias que pueden 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 de alto rendimiento están tratando de reducir qué partes del código realmente necesitan ser reparadas. Se han fusionado soluciones para secuencias que se sabe que son vulnerables.

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

Articulo original: https://fedoramagazine.org/update-ongoing-meltdown-spectre-work/