Un desarrollador de Google propuso una protección contra ataques LVI
Hace algunos días aquí en el blog hablábamos sobre LVI, la cual se clasifica como una nueva serie de ataques que afectan únicamente a CPUs de Intel y que se caracteriza por ser una secuencia de ataques que se basan en manipulaciones con las mismas estructuras microarquitectónicas que en los ataques de MDS, Spectre y Meltdown.
La principal diferencia entre los ataques LVI y MDS es que MDS manipula la determinación del contenido de las estructuras microarquitectónicas que permanecen en la memoria caché después del manejo de errores especulativos o las operaciones de carga y almacenamiento, mientras que los ataques LVI permiten que el atacante sea sustituido en estructuras microarquitectónicas para influir posterior ejecución especulativa del código de la víctima.
Aun que Intel menciona que se encuentra trabajando en dar solución a ello, mencionan que este fallo tiene una gran dificultad para poder realizar el proceso con éxito por lo que creen que se deben de cumplir varios requisitos para poder tener éxito en ello y esto es lo que tiene al fallo catalogado con dificultad extrema.
Por otro lado, Zola Bridges (un desarrollador de Google) estuvo trabajando en el asunto y ofreció recientemente un parche para el compilador LLVM con protección SESES (Supresión de efectos secundarios de ejecución especulativa) que ayuda a bloquear los ataques en motores de ejecución especulativa específicos que afectan a las CPUs de Intel como LVI.
El método de protección propuesto se implementa en el nivel del compilador y se basa en la adición de instrucciones LFENCE por parte del compilador al generar el código de máquina, que se inserta antes de cada instrucción de lectura o escritura en la memoria, así como tambien antes de la primera instrucción de bifurcación en el grupo de instrucciones que se completa en el bloque.
La mitigación consiste en un paso del compilador que inserta una LFENCE antes de
cada instrucción de lectura de memoria, instrucción de escritura de memoria y la primera
instrucción de ramificación en un grupo de terminadores al final de un
bloque básico.
La instrucción LFENCE espera confirmar todas las lecturas anteriores de la memoria y no permite la ejecución proactiva de instrucciones que siguen a LFENCE antes de que se complete la confirmación.
El uso de LFENCE conduce a una disminución significativa en el rendimiento, por lo tanto, se propone utilizar la protección en casos extremos para códigos especialmente críticos. Además de la protección total, el parche ofrece tres indicadores que se encargan de desactivar selectivamente ciertos niveles de protección para reducir el impacto negativo en el rendimiento.
En nuestras pruebas, el uso de la protección SESES para el paquete BoringSSL condujo a una disminución de 14 veces en el número de operaciones realizadas por la biblioteca por segundo: el rendimiento de la versión de la biblioteca ensamblada con protección resultó ser en promedio solo el 7.1% del rendimiento de la versión desprotegida (se extendió dependiendo de la prueba del 4% al 23% )
Además de la versión completa de la mitigación, este parche implementa tres indicadores para desactivar parte de la mitigación.
Estas banderas están deshabilitadas por defecto. Las banderas no están destinadas a dar como resultado una variante segura de la mitigación. Los indicadores están destinados a ser utilizados por usuarios que deseen experimentar para mejorar el rendimiento de
la mitigación.
A modo de comparación, el mecanismo propuesto previamente para GNU Assembler, que realiza la sustitución LFENCE después de cada operación de carga desde la memoria y antes de algunas instrucciones de bifurcación, mostró una disminución del rendimiento de aproximadamente 5 veces (22% del código sin protección).
El método de protección también ha sido propuesto e implementado por los ingenieros de Intel, pero los resultados de las pruebas de rendimiento aún no se han publicado. Inicialmente, los investigadores que detectaron un ataque LVI predijeron una disminución de 2-19 veces en el rendimiento al aplicar protección completa.
Finalmente, si quieres conocer más al respecto, puedes consultar los detalles en el siguiente enlace.