Descubren tres vulnerabilidades en Linux que afectan a las defensas contra Spectre
Un ingeniero de Google ha descubierto tres agujeros de seguridad (1, 2 y 3) que afectan a las defensas contra Spectre incluidas en el kernel Linux, concretamente aquellas diseñadas para los procesadores de AMD e Intel.
Para los que anden perdidos, las vulnerabilidades tipo Spectre, que en esencia son de canal lateral, han afectado a procesadores de todos los fabricantes conocidos y son imposibles de corregir debido a que requieren de parchear el propio silicio. En consecuencia, lo que se ha hecho ha sido implementar mitigaciones en todos los niveles posibles, abarcando los componentes esenciales de los sistemas operativos (incluyendo el kernel), el firmware, los microcódigos, los drivers e incluso las aplicaciones. Una vez explotadas con éxito, la vulnerabilidades pueden ser utilizadas para llevar a cabo operaciones como la extracción de datos.
Los tres fallos de seguridad, que fueron descubiertos por un empleado de Google llamado Anthony Steinhauser, han sido marcados como de parcheo urgente en la lista de correo de Linux el pasado martes y ponen en evidencia las defensas para mitigar vulnerabilidades tipo Spectre en los procesadores x86_64 que se apoyan en la ejecución especulativa, una característica muy necesaria para exprimir todo su potencial.
La primera vulnerabilidad consiste en la desactivación forzada de la IBPB (Barrera de Predicción Indirecta de Saltos) basada en STIBP (Predictores de Salto Indirecto de un Solo Hilo) e IBRS (Especulación Restringida de Salto Indirecto) mejorada. Este manejo incorrecto de la IBPB impacta en los procesadores AMD, yendo además contra las recomendaciones del fabricante, y tiene como consecuencia la posibilidad de hacer que las aplicaciones sean vulnerables ante la segunda variante de Spectre.
Anthony Steinhauser ha explicado que “cuando STIBP no está disponible o si está disponible IBRS mejorada, Linux inhabilita forzosamente la mitigación de IBPB del Búfer de Destino del Salto (BTB) de Spectre incluso cuando el multihilo simultáneo está desactivado”, pudiendo dejar de manera silenciosa una aplicación como Chromium vulnerable frente a Spectre v2.
Pero no solo a las aplicaciones que se ejecutan en la máquina anfitriona afecta este primer fallo de seguridad, ya que “IBRS mejorada está diseñada para proteger del envenenamiento del BTB de núcleo cruzado y los ataques de envenenamiento del BTB del espacio del usuario contra el núcleo (y los ataques de envenenamiento del BTB del huésped contra el hipervisor), no está diseñada para prevenir el envenenamiento del BTB entre procesos cruzados (o máquinas virtuales cruzadas) y entre procesos (o máquinas virtuales) que se ejecutan en el mismo núcleo. Por lo tanto, incluso con IBRS mejorada es necesario eliminar el BTB durante los cambios de contexto, por lo que no hay razón para forzar la desactivación de la IBPB cuando IBRS mejorada está disponible.”
La segunda vulnerabilidad descubierta consiste en un apagado en falso del proceso cruzado de la SSBD (Inhabilitación del Desvío del Almacenamiento Especulativo), afectando a una optimización de la SSBD que ha salido mal. En teoría la optimización tendría que evitar una escritura costosa del Registro de Modelo Específico (MSR), pero su defecto provoca que podría permitir a un atacante el bloqueo de la protección ofrecida por la SSBD, exponiendo el proceso afectado a la variante cuatro de Spectre.
La tercera vulnerabilidad descubierta en Linux permite habilitar la Especulación Indirecta de Salto incluso después de haber forzado su inhabilitación. La situación empeora si se tiene en cuenta que el comando de control de especulación “prctl” podría reportar que la Especulación Indirecta de Salto está inhabilitada cuando en realidad está habilitada. Aquí Steinhauser ha añadido que esto “es inconsistente frente a STIBP y la documentación que establece claramente que PR_SPEC_FORCE_DISABLE no se puede deshacer. Solucione esto forzando la Especulación Indirecta de Salto.”
Por suerte, los tres parches se encuentran fusionados en Linux, así que dentro de poco tendrían que ser portados hacia atrás a otras versiones mantenidas por los desarrolladores del kernel y a los sistemas operativos GNU/Linux que cuenten con mantenimiento (que no hayan llegado a su fin de ciclo). Sin embargo, no se descarta que próximamente se descubran más vulnerabilidades de este tipo, que afectan a las defensas incorporadas para mitigar el temido Spectre.