El kernel de Linux 5.4 recibió parches para restringir el acceso de root a las partes internas del kernel

Linus Torvalds donado En la próxima versión del kernel Linux 5.4 se incluye un conjunto de parches "lockdown", предложеный David Howells (Red Hat) y Matthew Garrett (Matthew Garrett, trabaja en Google) para restringir el acceso del usuario root al kernel. La funcionalidad relacionada con el bloqueo se incluye en un módulo LSM cargado opcionalmente (Módulo de seguridad de Linux), que coloca una barrera entre el UID 0 y el kernel, restringiendo cierta funcionalidad de bajo nivel.

Si un atacante logra la ejecución del código con derechos de root, puede ejecutar su código a nivel del kernel, por ejemplo, reemplazando el kernel usando kexec o leyendo/escribiendo memoria a través de /dev/kmem. La consecuencia más obvia de tal actividad puede ser derivación Arranque seguro UEFI o recuperación de datos confidenciales almacenados en el nivel del kernel.

Inicialmente, las funciones de restricción de raíz se desarrollaron en el contexto de fortalecer la protección del arranque verificado, y las distribuciones han estado utilizando parches de terceros para bloquear la omisión del arranque seguro UEFI durante bastante tiempo. Al mismo tiempo, tales restricciones no se incluyeron en la composición principal del núcleo debido a desacuerdos en su implementación y temores de perturbación de los sistemas existentes. El módulo de "bloqueo" absorbió parches ya utilizados en las distribuciones, que fueron rediseñados en forma de un subsistema separado no vinculado al arranque seguro UEFI.

El modo de bloqueo restringe el acceso a /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, modo de depuración kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (estructura de información de tarjeta), algunas interfaces ACPI y CPU. Los registros MSR, las llamadas kexec_file y kexec_load están bloqueados, el modo de suspensión está prohibido, el uso de DMA para dispositivos PCI es limitado, la importación de código ACPI desde variables EFI está prohibida.
No se permiten manipulaciones con puertos de E/S, incluido cambiar el número de interrupción y el puerto de E/S para el puerto serie.

Por defecto, el módulo de bloqueo no está activo, se construye cuando se especifica la opción SECURITY_LOCKDOWN_LSM en kconfig y se activa a través del parámetro del kernel “lockdown=”, el archivo de control “/sys/kernel/security/lockdown” u opciones de ensamblaje LOCK_DOWN_KERNEL_FORCE_*, que puede tomar los valores "integridad" y "confidencialidad". En el primer caso, se bloquean las funciones que permiten realizar cambios en el kernel en ejecución desde el espacio del usuario y, en el segundo caso, también se deshabilita la funcionalidad que se puede utilizar para extraer información confidencial del kernel.

Es importante señalar que el bloqueo sólo limita el acceso estándar al kernel, pero no protege contra modificaciones como resultado de la explotación de vulnerabilidades. Para bloquear cambios en el kernel en ejecución cuando el proyecto Openwall utiliza exploits está desarrollando módulo separado LKRG (Guardia del tiempo de ejecución del kernel de Linux).

Fuente: opennet.ru

Añadir un comentario