Consiguen romper el módulo de seguridad Lockdown en Ubuntu y Linux
Parece que las medidas de seguridad adicionales que se están implementando en Linux están saliendo un tanto ranas. Si la semana pasada informamos de fallos de seguridad en las defensas contra las vulnerabilidades tipo Spectre, ahora otra persona ha descubierto que es posible saltarse Lockdown utilizando tablas de ACPI.
Para los que anden perdidos, Lockdown es un módulo de seguridad introducido en Linux 5.4 que permite bloquear partes del kernel. La inclusión de esta tecnología fue sugerida hace 8 años por Matthew Garrett, uno de los mayores defensores de Secure Boot dentro del espectro Linux, pero sus propuestas fueron rechazadas por Torvalds hasta el año 2019, cuando se consiguió consensuar una vía para implementarlo. El principal punto de discrepancia fue si atar o no Lockdown a Secure Boot, cosa que el creador de Linux rechazó de plano.
El descubridor de los fallos de seguridad en Lockdown ha sido Jason Donenfeld, desarrollador principal de WireGuard, el VPN de nueva generación que está llamado a jubilar con el tiempo a soluciones como OpenVPN y que fue introducido en Linux 5.6. Profundizando en el tema que realmente nos ocupa, Donenfeld descubrió la semana pasada un fallo en Ubuntu 18.04 que permitía saltarse la protección de Lockdown y romper Secure Boot mediante inyección de tablas de ACPI, el estándar encargado de controlar el funcionamiento de la BIOS y proporcionar mecanismos avanzados para la gestión y ahorro de la energía.
El kernel Linux incluido en Ubuntu suele estar bastante modificado, así que en un principio se pensó que esto era un problema exclusivo del sistema de Canonical. Sin embargo, Donenfeld halló poco después otro fallo de seguridad muy similar que afecta a la rama principal del kernel Linux, el cual permite inhabilitar Lockdown inyectando tablas de ACPI.
La vulnerabilidad encontrada en la rama principal de Linux es incluso más peligrosa que la hallada en Ubuntu 18.04 al no necesitar de un reinicio para explotarla. El origen del problema está en el módulo ConfigFS, de ACPI, que permite añadir tablas de ACPI arbitrarias en tiempo de ejecución. Su explotación requiere de acceso como root y funciona alrededor del ASLR del kernel Linux “al obtener la base física de ‘/proc/kcore’ y las direcciones aleatorias del símbolo del kernel de ‘/proc/kallsysm’. Si no se tiene acceso a kcore, se podría agregar ‘nokaslr’ como en la versión anterior y usar el viejo y normal ‘/proc/iomem’, que funciona bien”. La prueba de concepto desarrollada por Jason Donenfeld funciona incluso en un sistema con Secure Boot habilitado, permitiendo la carga de módulos del kernel arbitrarios y sin firmar en el sistema.
Por suerte, el propio Donenfeld ha enviado el parche para corregir la vulnerabilidad, que consiste en tan solo 5 líneas de código que comprueban el estado de la funcionalidad de Lockdown antes de permitir las escrituras de las tablas de ACPI. Como es obvio, este parche será portado hacia atrás y tendría que ir llegando a los sistemas soportados en las próximas horas o días, si es que no lo ha hecho ya.