LKRG, um módulo de segurança contra ataques e violações no Kernel

Conheça melhor o módulo o LKRG e as novidades da versão 0.8.

E foi lançado o LKRG 0.8, um módulo de segurança contra ataques e violações no Kernel. Conheça melhor esse módulo e as novidades dessa versão.

O projeto Openwall lançou o lançamento do módulo do kernel LKRG 0.8 (Linux Kernel Runtime Guard), projetado para detectar e bloquear ataques e violações da integridade das estruturas do kernel.

O módulo é adequado tanto para organizar a proteção contra explorações conhecidas no kernel do Linux (por exemplo, em situações em que é problemático atualizar o kernel no sistema) quanto para opor explorações a vulnerabilidades desconhecidas.

LKRG, um módulo de segurança contra ataques e violações no Kernel – lançado o LKRG 0.8

LKRG, um módulo de segurança contra ataques e violações no Kernel
LKRG, um módulo de segurança contra ataques e violações no Kernel

Nesta nova versão, o posicionamento do projeto LKRG foi alterado, que agora não é dividido em subsistemas separados para verificar a integridade e determinar o uso de explorações, mas é apresentado como um produto completo para identificar ataques e várias violações de integridade;

Quanto à compatibilidade, nesta nova versão, podemos descobrir que ele é compatível com os kernels do Linux 5.3 a 5.7, bem como com os kernels compilados com otimizações agressivas do GCC, sem as opções CONFIG_USB e CONFIG_STACKTRACE ou com a opção CONFIG_UNWINDER_ORC, bem como com núcleos onde não há funções interceptadas pelo LKRG, se você puder prescindir.

Além do suporte experimental para plataformas ARM de 32 bits (testado no Raspberry Pi 3 Modelo B), foi adicionado, enquanto no suporte anterior disponível para o AArch64 (ARM64), ele é complementado pela compatibilidade com o Raspberry Pi 4.

Por outro lado, novos ganchos foram adicionados, incluindo um manipulador de chamadas “hook()” para identificar melhor vulnerabilidades que manipulam “recursos”, em vez de identificadores de processo.

Nos sistemas x86-64, o bit SMAP (Supervisory Mode Access Prevention), projetado para bloquear o acesso aos dados no espaço do usuário a partir do código privilegiado executado no nível do kernel, é verificado e aplicado. A proteção SMEP (Supervisor Mode Execution Prevention) foi implementada anteriormente.

A escalabilidade do banco de dados de rastreamento de processos foi aumentada: em vez de uma única árvore RB protegida por um spinlock, uma tabela de hash de 512 árvores RB está envolvida, protegida por 512 bloqueios de leitura e gravação, respectivamente;

Um modo padrão é implementado e ativado, no qual a verificação da integridade dos identificadores de processo geralmente é realizada apenas para a tarefa atual e, opcionalmente, para as tarefas ativadas (ativar). Para outras tarefas que estão em estado suspenso ou que funcionam sem uma chamada de API do kernel controlada por LKRG, a verificação é feita com menos frequência.

Além disso, o arquivo da unidade systemd foi reprojetado para carregar o módulo LKRG em um estágio inicial de carregamento (a opção de linha de comando do kernel pode ser usada para desativar o módulo);

Durante a compilação, algumas das configurações obrigatórias do kernel CONFIG_* foram verificadas para gerar mensagens de erro significativas em vez de falhas pouco claras.

Das outras mudanças que se destacam nesta nova versão:

  • Adicionado suporte para os modos de espera (ACPI S3, suspender para RAM) e suspender (S4, suspender para disco).
  • Adicionado suporte para DKMS no Makefile.
  • Uma nova lógica é proposta para determinar as tentativas de sair das restrições do espaço para nome (por exemplo, nos contêineres do Docker).
  • No processo, a configuração do LKRG é colocada em uma página de memória, geralmente somente leitura.
  • A saída para os logs de informações que podem ser mais úteis para ataques (por exemplo, informações de endereço no kernel) é limitada pelo modo de depuração (log_level = 4 e superior), que é desativado por padrão.
  • Novos parâmetros de módulo e sysctl foram adicionados para ajustar o LKRG, bem como dois sysctl para uma configuração simplificada, escolhendo entre os perfis preparados pelos desenvolvedores.
  • As configurações padrão são alteradas para obter um equilíbrio mais equilibrado entre a velocidade de detecção de violações e a eficácia da reação, por um lado, e o impacto na produtividade e o risco de falsos positivos, por outro.
  • De acordo com as otimizações propostas na nova versão, a redução no desempenho ao aplicar o LKRG 0.8 é estimada em 2,5% no modo padrão (“pesado”) e 2% no modo leve (“leve”).

Se você quiser saber mais sobre isso, verifique os detalhes nesse endereço.

O que está sendo falado no blog

Veja mais artigos publicados neste dia…