Linus Torvalds La futura versión del núcleo Linux 5.4 incluirá un conjunto de parches "«, David Howells (quien trabaja en Red Hat) y Matthew Garrett (, quien trabaja en Google) para restringir el acceso del usuario root al núcleo. La funcionalidad relacionada con "lockdown" se ha trasladado a un módulo LSM (), que establece una barrera entre UID 0 y el núcleo, limitando cierta funcionalidad de bajo nivel.
Si un atacante consigue ejecutar código con privilegios de root, puede ejecutar su código también a nivel de núcleo, por ejemplo, mediante la sustitución del núcleo usando kexec o leyendo/escribiendo memoria a través de /dev/kmem. La consecuencia más obvia de tal actividad puede ser UEFI Secure Boot o la extracción de datos confidenciales almacenados a nivel de núcleo.
Al principio, las funciones de limitación de root se desarrollaron en el contexto de mejorar la protección del arranque verificado, y las distribuciones ya han estado utilizando parches de terceros durante bastante tiempo para bloquear el eludir UEFI Secure Boot. Sin embargo, tales limitaciones no se incluyeron en el núcleo principal debido a en su implementación y preocupaciones sobre la posible interrupción del funcionamiento de sistemas existentes. El módulo "lockdown" ha incorporado parches ya utilizados en distribuciones que han sido reformulados en forma de un subsistema separado, no vinculado a UEFI Secure Boot.
En modo lockdown se limita el acceso a /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, el modo de depuración de kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Estructura de Información de la Tarjeta), ciertas interfaces ACPI y registros MSR de CPU, se bloquean las llamadas kexec_file y kexec_load, se prohíbe entrar en modo de suspensión, se limita el uso de DMA para dispositivos PCI, se prohíbe la importación de código ACPI de variables EFI,
no se permiten manipulaciones con puertos de entrada/salida, incluyendo el cambio de número de interrupción y puerto de entrada/salida para el puerto serie.
Por defecto, el módulo lockdown no está activo, se compila con la opción SECURITY_LOCKDOWN_LSM indicada en kconfig y se activa a través del parámetro del núcleo "lockdown=", el archivo de control " /sys/kernel/security/lockdown" o las opciones de compilación , que pueden tomar valores de «integridad» y «confidencialidad». En el primer caso, se bloquean las posibilidades de realizar cambios en el núcleo operativo desde el espacio de usuario, y en el segundo caso, además, se desactiva la funcionalidad que puede utilizarse para extraer información confidencial del núcleo.
Es importante señalar que el lockdown solo limita las capacidades de acceso del núcleo, pero no protege contra modificaciones resultantes de la explotación de vulnerabilidades. Para bloquear los cambios en el núcleo operativo al aplicar exploits, el proyecto Openwall un módulo separado (Linux Kernel Runtime Guard).
Fuente: opennet.ru
