O kernel Linux 5.4 recibiu parches para restrinxir o acceso root aos internos do kernel

Linus Torvalds aceptada incluído na próxima versión do núcleo Linux 5.4 hai un conxunto de parches "bloqueo«, proposto David Howells (Red Hat) e Matthew Garrett (Matthew Garrett, funciona en Google) para restrinxir o acceso do usuario root ao núcleo. A funcionalidade relacionada co bloqueo inclúese nun módulo LSM cargado opcionalmente (Módulo de seguridade de Linux), que coloca unha barreira entre o UID 0 e o núcleo, restrinxindo certas funcionalidades de baixo nivel.

Se un atacante logra a execución de código con dereitos de root, pode executar o seu código a nivel do núcleo, por exemplo, substituíndo o núcleo mediante kexec ou a memoria de lectura/escritura a través de /dev/kmem. A consecuencia máis obvia desta actividade pode ser desvío UEFI Secure Boot ou recuperando datos confidenciais almacenados a nivel do núcleo.

Inicialmente, as funcións de restrición de raíz desenvolvéronse no contexto de reforzar a protección do arranque verificado e as distribucións estiveron usando parches de terceiros para bloquear o bypass de UEFI Secure Boot durante bastante tempo. Ao mesmo tempo, tales restricións non se incluíron na composición principal do núcleo debido a desacordos na súa implementación e temores de interrupción dos sistemas existentes. O módulo de "bloqueo" absorbeu os parches que xa se usaban nas distribucións, que foron redeseñados en forma de subsistema separado non vinculado ao arranque seguro de UEFI.

O modo de bloqueo restrinxe o acceso a /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes modo depuración, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), algunhas interfaces ACPI e CPU Os rexistros MSR, as chamadas kexec_file e kexec_load están bloqueadas, o modo de suspensión está prohibido, o uso de DMA para dispositivos PCI está limitado, a importación de código ACPI desde variables EFI está prohibida,
Non se permiten manipulacións con portos de E/S, incluído o cambio do número de interrupción e do porto de E/S para o porto serie.

Por defecto, o módulo de bloqueo non está activo, constrúese cando se especifica a opción SECURITY_LOCKDOWN_LSM en kconfig e está activado mediante o parámetro do núcleo "lockdown=", o ficheiro de control "/sys/kernel/security/lockdown" ou as opcións de montaxe. LOCK_DOWN_KERNEL_FORCE_*, que pode tomar os valores "integridade" e "confidencialidade". No primeiro caso, as funcións que permiten facer cambios no núcleo en execución desde o espazo do usuario están bloqueadas, e no segundo caso, a funcionalidade que se pode usar para extraer información sensible do núcleo tamén está desactivada.

É importante ter en conta que o bloqueo só limita o acceso estándar ao núcleo, pero non protexe contra as modificacións como resultado da explotación de vulnerabilidades. Para bloquear os cambios no núcleo en execución cando o proxecto Openwall utiliza exploits desenvólvese módulo separado LKRG (Linux Kernel Runtime Guard).

Fonte: opennet.ru

Engadir un comentario