Vulnerabilidade no subsistema do núcleo do Linux Netfilter

No Netfilter, um subsistema do kernel Linux usado para filtrar e modificar pacotes de rede, foi identificada uma vulnerabilidade (CVE-2021-22555) que permite a um usuário local obter privilégios de root no sistema, mesmo estando em um contêiner isolado. Um protótipo funcional de um exploit foi desenvolvido para testar, contornando os mecanismos de proteção KASLR, SMAP e SMEP. O pesquisador que descobriu a vulnerabilidade recebeu da Google uma recompensa de 20 mil dólares por identificar o método de contorno da isolação de contêineres Kubernetes em um cluster kCTF.

O problema se manifesta a partir do kernel 2.6.19, lançado há 15 anos, e é causado por um erro nos manipuladores IPT_SO_SET_REPLACE e IP6T_SO_SET_REPLACE, resultando em um estouro de buffer ao enviar parâmetros especialmente formatados através da chamada setsockopt em modo compat. Normalmente, a chamada compat_setsockopt() só pode ser executada por um usuário root, mas as permissões necessárias para realizar o ataque também podem ser obtidas por um usuário não privilegiado em sistemas com suporte a namespaces de usuários habilitado.

O usuário pode criar um contêiner com um usuário root separado e explorar a vulnerabilidade a partir daí. Por exemplo, os "namespaces de usuários" estão habilitados por padrão no Ubuntu e Fedora, mas não ativados no Debian e RHEL. O patch corrigindo a vulnerabilidade foi incorporado ao kernel Linux em 13 de abril. As atualizações de pacotes já foram formadas pelos projetos Debian, Arch Linux e Fedora. No Ubuntu, RHEL e SUSE, as atualizações estão em preparação.

O problema ocorre na função xt_compat_target_from_user() devido ao cálculo incorreto do tamanho da memória ao salvar estruturas do kernel após a conversão de 32 para 64 bits. O erro permite gravar quatro bytes nulos em qualquer posição fora do buffer alocado, limitada pelo deslocamento 0x4C. Essa vulnerabilidade foi suficiente para criar um exploit que permite obter direitos de root — através da limpeza do ponteiro m_list->next na estrutura msg_msg, foram criadas condições para acessar dados após a liberação de memória (use-after-free), que foram então utilizados para obter informações sobre endereços e alterar outras estruturas através da manipulação da chamada de sistema msgsnd().

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster