André Konovalov da empresa Google método de desativação remota da proteção , oferecido no pacote com o núcleo Linux distribuído pelo Ubuntu (teoricamente métodos sugeridos para trabalhar com o núcleo do Fedora e outras distribuições, mas não foram testados).
O Lockdown limita o acesso do usuário root ao núcleo e bloqueia caminhos de contorno do UEFI Secure Boot. Por exemplo, no modo lockdown, o acesso a /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, o modo de depuração kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Estrutura de Informação do Cartão), algumas interfaces ACPI e registradores MSR da CPU é limitado, chamadas kexec_file e kexec_load são bloqueadas, a transição para o modo de suspensão é proibida, o uso de DMA para dispositivos PCI é limitado, a importação de código ACPI de variáveis EFI é proibida, e manipulações com portas de entrada/saída, incluindo a modificação do número da interrupção e a porta de entrada/saída para a porta serial, não são permitidas.
O mecanismo Lockdown foi adicionado recentemente ao núcleo principal do Linux , mas nas versões fornecidas nas distribuições, ainda está implementado na forma de patches ou complementos. Uma das diferenças entre os complementos fornecidos nas distribuições e a implementação embutida no núcleo é a possibilidade de desativar o bloqueio fornecido com acesso físico ao sistema.
No Ubuntu e no Fedora, a combinação de teclas Alt+SysRq+X está disponível para desativar o Lockdown. Presume-se que a combinação Alt+SysRq+X só possa ser usada com acesso físico ao dispositivo, e no caso de um ataque remoto com acesso root, o atacante não poderá desativar o Lockdown e, por exemplo, carregar um módulo no núcleo sem assinatura digital com um rootkit.
Andrei Konovalov demonstrou que os métodos relacionados ao uso do teclado para confirmar a presença física do usuário não são eficazes. A maneira mais simples de desativar o Lockdown seria uma simulação da pressão das teclas Alt+SysRq+X através do /dev/uinput, mas essa opção é inicialmente bloqueada. Ao mesmo tempo, pelo menos mais duas maneiras de injetar Alt+SysRq+X foram identificadas.
A primeira maneira está relacionada ao uso da interface "sysrq-trigger" — para simular, basta ativar essa interface gravando "1" em /proc/sys/kernel/sysrq e, em seguida, gravar "x" em /proc/sysrq-trigger. A brecha mencionada foi incluída na atualização de dezembro do núcleo do Ubuntu e no Fedora 31. É notável que os desenvolvedores, como no caso do /dev/uinput, inicialmente bloquear este método, mas o bloqueio não funcionou devido a no código.
O segundo método está relacionado à emulação do teclado através de e ao envio subsequente da sequência Alt+SysRq+X com o teclado virtual. No núcleo fornecido com o Ubuntu, o USB/IP está habilitado por padrão (CONFIG_USBIP_VHCI_HCD=m e CONFIG_USBIP_CORE=m) e os módulos usbip_core e vhci_hcd necessários para o funcionamento são fornecidos com assinatura digital verificada. O atacante pode um dispositivo USB virtual, um manipulador de rede na interface de loopback e conectando-o como um dispositivo USB remoto usando USB/IP. Sobre o método mencionado, aos desenvolvedores do Ubuntu, mas uma correção ainda não foi lançada.
Fonte: opennet.ru
