O kernel Linux 5.4 recebeu patches para limitar o acesso root aos componentes internos do kernel

Linus Torvalds aceitou o incluído na próxima versão do kernel Linux 5.4 está um conjunto de patches "lockdown«, a proposta David Howells (Red Hat) e Matthew Garrett (Mateus Garrett, trabalha no Google) para restringir o acesso do usuário root ao kernel. A funcionalidade relacionada ao bloqueio está incluída em um módulo LSM carregado opcionalmente (Módulo de segurança Linux), que coloca uma barreira entre o UID 0 e o kernel, restringindo certas funcionalidades de baixo nível.

Se um invasor conseguir a execução de código com direitos de root, ele poderá executar seu código no nível do kernel, por exemplo, substituindo o kernel usando kexec ou lendo/gravando memória via /dev/kmem. A consequência mais óbvia de tal actividade pode ser desviar Inicialização segura UEFI ou recuperação de dados confidenciais armazenados no nível do kernel.

Inicialmente, as funções de restrição de raiz foram desenvolvidas no contexto de fortalecer a proteção da inicialização verificada, e as distribuições têm usado patches de terceiros para bloquear o desvio da inicialização segura UEFI há algum tempo. Ao mesmo tempo, tais restrições não foram incluídas na composição principal do kernel devido a desentendimentos na sua implementação e receios de perturbação dos sistemas existentes. O módulo “lockdown” absorveu patches já utilizados em distribuições, que foram redesenhados na forma de um subsistema separado não vinculado ao UEFI Secure Boot.

O modo de bloqueio restringe o acesso a /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, modo de depuração kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (estrutura de informações do cartão), algumas interfaces ACPI e CPU Registros MSR, chamadas kexec_file e kexec_load são bloqueadas, o modo de suspensão é proibido, o uso de DMA para dispositivos PCI é limitado, a importação de código ACPI de variáveis ​​EFI é proibida,
Não são permitidas manipulações com portas de E/S, incluindo alteração do número de interrupção e da porta de E/S da porta serial.

Por padrão, o módulo de bloqueio não está ativo, ele é construído quando a opção SECURITY_LOCKDOWN_LSM é especificada no kconfig e é ativado através do parâmetro do kernel “lockdown=”, do arquivo de controle “/sys/kernel/security/lockdown” ou das opções de montagem LOCK_DOWN_KERNEL_FORCE_*, que pode assumir os valores “integridade” e “confidencialidade”. No primeiro caso, os recursos que permitem alterações no kernel em execução a partir do espaço do usuário são bloqueados e, no segundo caso, a funcionalidade que pode ser usada para extrair informações confidenciais do kernel também é desativada.

É importante notar que o bloqueio apenas limita o acesso padrão ao kernel, mas não protege contra modificações resultantes da exploração de vulnerabilidades. Para bloquear alterações no kernel em execução quando explorações são usadas pelo projeto Openwall está desenvolvendo módulo separado LKRG (Guarda de tempo de execução do kernel Linux).

Fonte: opennet.ru

Adicionar um comentário