Métodos para deshabilitar la seguridad de bloqueo en Ubuntu para omitir el arranque seguro de UEFI de forma remota

Andrey Konovalov de Google publicado forma de desactivar remotamente la protección Lockdownofrecido en el paquete del kernel de Linux incluido con Ubuntu (técnicas teóricamente sugeridas tener funcionan con el kernel de Fedora y otras distribuciones, pero no están probadas).

Lockdown restringe el acceso del usuario root al kernel y bloquea las rutas de omisión de arranque seguro UEFI. Por ejemplo, en modo de bloqueo, 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), algunos las interfaces están limitadas, los registros ACPI y MSR de la CPU, las llamadas a kexec_file y kexec_load están bloqueadas, el modo de suspensión está prohibido, el uso de DMA para dispositivos PCI está limitado, la importación de código ACPI desde variables EFI está prohibida, las manipulaciones con los puertos de E/S no están permitidas permitido, incluido el cambio del número de interrupción y el puerto de E/S por el puerto serie.

El mecanismo Lockdown se agregó recientemente al kernel principal de Linux 5.4, pero en los núcleos suministrados en las distribuciones todavía se implementa en forma de parches o se complementa con parches. Una de las diferencias entre los complementos proporcionados en los kits de distribución y la implementación integrada en el kernel es la capacidad de desactivar el bloqueo proporcionado si tiene acceso físico al sistema.

En Ubuntu y Fedora, se proporciona la combinación de teclas Alt+SysRq+X para desactivar el bloqueo. Se entiende que la combinación Alt+SysRq+X solo se puede utilizar con acceso físico al dispositivo, y en el caso de piratería remota y obtención de acceso root, el atacante no podrá desactivar Lockdown y, por ejemplo, cargar un módulo con un rootkit que no está registrado digitalmente en el kernel.

Andrey Konovalov demostró que los métodos basados ​​en el teclado para confirmar la presencia física del usuario son ineficaces. La forma más sencilla de desactivar Lockdown sería mediante programación simulación presionando Alt+SysRq+X a través de /dev/uinput, pero esta opción está inicialmente bloqueada. Al mismo tiempo, fue posible identificar al menos dos métodos más de sustitución Alt+SysRq+X.

El primer método implica utilizar la interfaz “sysrq-trigger”; para simularla, simplemente habilite esta interfaz escribiendo “1” en /proc/sys/kernel/sysrq y luego escriba “x” en /proc/sysrq-trigger. dicha laguna jurídica eliminado en la actualización del kernel de Ubuntu de diciembre y en Fedora 31. Es de destacar que los desarrolladores, como en el caso de /dev/uinput, inicialmente trató de bloquear este método, pero el bloqueo no funcionó debido a Errores en el código.

El segundo método implica la emulación del teclado mediante USB/IP y luego enviando la secuencia Alt+SysRq+X desde el teclado virtual. El kernel USB/IP incluido con Ubuntu está habilitado de forma predeterminada (CONFIG_USBIP_VHCI_HCD=m y CONFIG_USBIP_CORE=m) y proporciona los módulos usbip_core y vhci_hcd firmados digitalmente necesarios para la operación. El atacante puede создать dispositivo USB virtual, corriendo controlador de red en la interfaz loopback y conectándolo como un dispositivo USB remoto mediante USB/IP. Acerca del método especificado reportado a los desarrolladores de Ubuntu, pero aún no se ha publicado una solución.

Fuente: opennet.ru

Añadir un comentario