Investigadores de Google descubren un fallo relacionado con Spectre en el kernel de Linux
El equipo de respuesta de seguridad de productos de Google ha descubierto una vulnerabilidad relacionada con Spectre en la versión 6.2 del kernel de Linux, lo que amplía la amenaza planteada por el fallo que ha asolado a los proveedores de hardware y software desde 2018. El fallo de gravedad media se comunicó a los proveedores de servicios en la nube el 31 de diciembre de 2022, y Linux fue corregido el 27 de febrero de 2023.
El fallo se detectó cuando se activó el IBRS convencional, en lugar del IBRS mejorado, y el kernel contenía cierta lógica que decidía que los predictores de bifurcación indirecta de un único hilo (STIBP) no eran necesarios. Debido a que el bit IBRS se borraba al volver al espacio de usuario con el antiguo IBRS, los subprocesos del espacio de usuario quedaban expuestos a la inyección cruzada de rama, contra la que protege STIBP.
El fallo, presente en el Kernel 6.2, implementa una optimización que desactiva STIBP si la mitigación es IBRS o eIBRS. Sin embargo, IBRS no mitiga los ataques multithreading simultáneos en el espacio de usuario como lo hace eIBRS. Establecer spectre_v2=ibrs en los parámetros de arranque del kernel para máquinas bare metal sin soporte de eIBRS también desencadena el fallo. El kernel no protege las aplicaciones que intentan protegerse contra Spectre v2, dejándolas abiertas a ataques de otros procesos que se ejecutan en el mismo núcleo físico en otro hyperthread. La consecuencia del ataque es la potencial exposición de información, como claves privadas filtradas, a través de este pernicioso problema.
El apodo Spectre describe un conjunto de vulnerabilidades que abusan de la ejecución especulativa, una optimización del rendimiento del procesador en la que las instrucciones potenciales se ejecutan por adelantado para ahorrar tiempo. Spectre v2 -la variante implicada en esta vulnerabilidad concreta- se basa en canales secundarios de temporización para medir las tasas de error de predicción indirecta de bifurcaciones con el fin de inferir el contenido de la memoria protegida. Esto dista mucho de ser óptimo en un entorno de nube con hardware compartido.
Después de que The Register informara sobre la lucha por corregir los fallos Meltdown y Spectre, Intel publicó detalles sobre Indirect Branch Restricted Speculation (IBRS), un mecanismo para restringir la especulación de ramas indirectas. IBRS ofrece una defensa contra Spectre v2, que Intel denomina Branch Target Injection. Los cazadores de errores que identificaron el problema descubrieron que los procesos del espacio de usuario de Linux para defenderse de Spectre v2 no funcionaban en las máquinas virtuales de al menos uno de los principales proveedores de servicios en la nube.
Rodrigo Rubira Branco (BSDaemon) y José Luiz descubrieron el fallo, y KP Singh, parte del equipo del kernel de Google, trabajó en la corrección y se coordinó con los mantenedores de Linux para resolver el problema. La corrección eliminó IBRS básico de la comprobación spectre_v2_in_ibrs_mode() para mantener STIBP activado por defecto.
En conclusión, el fallo relacionado con Spectre en la versión 6.2 del kernel de Linux, descubierto por el equipo de respuesta de seguridad de productos de Google, dejaba las aplicaciones expuestas a ataques de otros procesos que se ejecutaban en el mismo núcleo físico en otro hyperthread. La vulnerabilidad se descubrió cuando estaba habilitado el IBRS simple, no el IBRS mejorado, lo que dejaba a los subprocesos del espacio de usuario vulnerables a la inyección de destino de bifurcación entre subprocesos, contra la que protege STIBP. La vulnerabilidad se comunicó a los proveedores de servicios en la nube el 31 de diciembre de 2022 y se parcheó en Linux el 27 de febrero de 2023.
Las fuentes de este artículo incluyen un artículo en TheRegister.