Novo bug descoberto permite elevação de privilégiosem sistemas Linux

Foi publicada uma exploração de prova de conceito de escalonamento de privilégios do Linux que, de acordo com o caçador de bugs que a desenvolveu, normalmente funciona sem esforço em versões do kernel entre pelo menos 5.14 e 6.6.14.

Executar o exploit como um usuário normal em uma máquina vulnerável concederá a você acesso root à caixa, permitindo que você faça o que quiser nela. Isso pode ser usado por invasores ou malware já instalado em um computador para causar mais danos e problemas.

Isso afeta Debian , Ubuntu , Red Hat , Fedora e, sem dúvida, outras distribuições Linux. O localizador de falhas, conhecido pelo nome Notselwyn, divulgou um relatório técnico altamente detalhado do bug esta semana e disse que sua exploração teve uma taxa de sucesso de 99,4% no kernel 6.4.16, por exemplo.

A vulnerabilidade é rastreada como CVE-2024-1086 . É classificado como 7,8 de 10 em termos de gravidade do CVSS. Ele foi corrigido no final de janeiro, as atualizações foram lançadas desde então e se você ainda não atualizou seu kernel vulnerável e o escalonamento de privilégios locais (LPE) é uma preocupação, dê uma olhada nisso.

“Nunca tive tanta alegria desenvolvendo um projeto, especificamente ao descartar o primeiro shell root com o bug”, disse Notselwyn entusiasmado.

A falha é um bug duplo no componente netfilter do kernel Linux envolvendo nf_tables. Como explicou o Banco de Dados Nacional de Vulnerabilidades dos EUA:

A função nft_verdict_init() permite valores positivos como erro de queda dentro do veredicto do gancho e, portanto, a função nf_hook_slow() pode causar uma vulnerabilidade dupla de liberação quando NF_DROP é emitido com um erro de queda semelhante a NF_ACCEPT. 

Tudo isso pode levar a uma falha ou execução arbitrária de código no kernel durante a exploração. Antes de sair para o fim de semana de Páscoa, sugerimos corrigir primeiro, novamente se o LPE for um problema crítico para você, então a única dor de cabeça que você sente na manhã de segunda-feira é a dor causada por muito chocolate.

Em sua análise, Notselwyn detalha as etapas necessárias para descartar um shell raiz universal em quase todos os kernels Linux afetados usando CVE-2024-1086. Isso inclui um método particularmente interessante que se baseia em uma técnica de exploração universal anterior do kernel Linux, chamada Dirty Pagetable , que envolve o abuso de bugs baseados em heap para manipular tabelas de páginas para obter controle não autorizado sobre a memória de um sistema e, portanto, sobre a operação.

O método mais recente foi chamado Dirty Pagedirectory, e Notselwyn diz que permite acesso de leitura/gravação ilimitado e estável a todas as páginas de memória em um sistema Linux, o que daria ao invasor controle total sobre a caixa: 

A técnica é bastante simplista por natureza: aloque um Page Upper Directory (PUD) e um Page Middle Directory (PMD) para o mesmo endereço de kernel usando um bug como um double-free. Os VMAs deverão ser separados, para evitar conflitos (portanto, não alocar o PMD dentro da área do PUD). Em seguida, escreva um endereço na página do intervalo PMD e leia o endereço na página correspondente do intervalo PUD.

Notselwyn também compartilhou o código-fonte para um exploit PoC , que é “trivial” de executar.

Explorar o bug requer que a opção de namespaces de usuários sem privilégios seja definida para acessar nf_tables, que é habilitada por padrão no Debian, Ubuntu e outras distribuições importantes. Um invasor precisaria então acionar uma liberação dupla, verificar a memória física em busca do endereço base do kernel, ignorando o KASLR e, em seguida, acessar a variável do kernel modprobe_path com privilégios de leitura/gravação.

Depois de substituir o modprobe_path, o exploit inicia um shell root e então o jogo termina.