Métodos para desactivar a seguranza de bloqueo en Ubuntu para evitar o arranque seguro UEFI de forma remota

Andrey Konovalov de Google publicado forma de desactivar a protección de forma remota Bloqueoofrecido no paquete do núcleo de Linux enviado con Ubuntu (técnicas teoricamente suxeridas debería funcionan co núcleo de Fedora e outras distribucións, pero non se proban).

O bloqueo restrinxe o acceso do usuario root ao núcleo e bloquea as rutas de omisión de arranque seguro de UEFI. Por exemplo, no modo de bloqueo, o acceso a /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, modo de depuración de kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Estrutura de información da tarxeta), algúns interfaces limitadas. Os rexistros ACPI e MSR da CPU, as chamadas a 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, as manipulacións con portos de E/S non están limitadas. permitido, incluíndo o cambio do número de interrupción e do porto de E/S para o porto serie.

O mecanismo de bloqueo engadiuse recentemente ao núcleo principal de Linux 5.4, pero nos núcleos proporcionados nas distribucións aínda está implementado en forma de parches ou complementado con parches. Unha das diferenzas entre os complementos proporcionados nos kits de distribución e a implementación integrada no núcleo é a posibilidade de desactivar o bloqueo proporcionado se tes acceso físico ao sistema.

En Ubuntu e Fedora, ofrécese a combinación de teclas Alt+SysRq+X para desactivar o bloqueo. Enténdese que a combinación Alt+SysRq+X só se pode usar con acceso físico ao dispositivo e, no caso de pirateo remoto e obter acceso root, o atacante non poderá desactivar o bloqueo e, por exemplo, cargar un módulo cun rootkit que non estea rexistrado dixitalmente no núcleo.

Andrey Konovalov demostrou que os métodos baseados no teclado para confirmar a presenza física do usuario son ineficaces. A forma máis sinxela de desactivar o bloqueo sería mediante programación simulación premendo Alt+SysRq+X mediante /dev/uinput, pero esta opción está bloqueada inicialmente. Ao mesmo tempo, foi posible identificar polo menos dous métodos máis de substitución Alt+SysRq+X.

O primeiro método consiste en usar a interface "sysrq-trigger": para simulala, só tes que habilitar esta interface escribindo "1" en /proc/sys/kernel/sysrq e despois escribe "x" en /proc/sysrq-trigger. Dixo oco eliminado na actualización do núcleo de Ubuntu de decembro e en Fedora 31. Cabe destacar que os desenvolvedores, como no caso de /dev/uinput, inicialmente intentou bloquear este método, pero o bloqueo non funcionou debido a Erros en código.

O segundo método implica a emulación do teclado vía USB/IP e despois enviando a secuencia Alt+SysRq+X dende o teclado virtual. O núcleo USB/IP enviado con Ubuntu está activado por defecto (CONFIG_USBIP_VHCI_HCD=m e CONFIG_USBIP_CORE=m) e proporciona os módulos usbip_core e vhci_hcd asinados dixitalmente necesarios para o seu funcionamento. O atacante pode para crear dispositivo USB virtual, correndo controlador de rede na interface de loopback e conectándoo como un dispositivo USB remoto mediante USB/IP. Sobre o método especificado informou aos desenvolvedores de Ubuntu, pero aínda non se publicou unha corrección.

Fonte: opennet.ru

Engadir un comentario