Linus Torvalds O próximo lançamento do núcleo Linux 5.4 inclui um conjunto de patches chamado "«, David Howells (trabalhando na Red Hat) e Matthew Garrett (, trabalhando no Google) para restringir o acesso do usuário root ao núcleo. A funcionalidade relacionada ao "lockdown" foi transferida para um módulo LSM opcionalmente carregado (), que estabelece uma barreira entre o UID 0 e o núcleo, limitando certas funcionalidades de baixo nível.
Se um invasor conseguir, através de um ataque, executar código com privilégios de root, ele poderá executar seu código também a nível de núcleo, por exemplo, através da substituição do núcleo com kexec ou leitura/escrita de memória via /dev/kmem. A consequência mais óbvia de tal atividade pode ser do UEFI Secure Boot ou a extração de dados confidenciais armazenados a nível de núcleo.
Inicialmente, as funções de restrição do root se desenvolveram no contexto de reforço da segurança da inicialização verificada, e distribuições já há bastante tempo aplicam patches de terceiros para bloquear a evasão do UEFI Secure Boot. Entretanto, tais restrições não foram incluídas no núcleo principal devido a na sua implementação e preocupações sobre a violação do funcionamento de sistemas existentes. O módulo "lockdown" incorporou patches já utilizados nas distribuições, que foram reformulados na forma de um subsistema separado, não vinculado ao UEFI Secure Boot.
No modo lockdown, o acesso a /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, modo de teste de kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), algumas interfaces ACPI e registradores MSR do CPU é restringido, chamadas kexec_file e kexec_load são bloqueadas, o modo de sono é proibido, o uso de DMA para dispositivos PCI é limitado, a importação de código ACPI a partir de variáveis EFI é proibida,
manipulações com portas de entrada/saída não são permitidas, incluindo alterações no número de interrupção e na porta de entrada/saída para a porta serial.
Por padrão, o módulo lockdown não está ativo, é criado ao especificar a opção SECURITY_LOCKDOWN_LSM no kconfig e ativado através do parâmetro do núcleo "lockdown=", do arquivo de controle "sys/kernel/security/lockdown" ou opções de compilação , que podem assumir os valores «integridade» e «confidencialidade». No primeiro caso, são bloqueadas as possibilidades que permitem fazer modificações no núcleo em funcionamento a partir do espaço do usuário, e no segundo caso, além disso, é desativada a funcionalidade que pode ser usada para extrair informações confidenciais do núcleo.
É importante notar que o lockdown apenas limita as capacidades nativas de acesso ao núcleo, mas não protege contra modificações resultantes da exploração de vulnerabilidades. Para bloquear a inserção de alterações no núcleo em funcionamento ao aplicar exploits, o projeto Openwall um módulo separado (Linux Kernel Runtime Guard).
Fonte: opennet.ru
