Uma exploração para a sétima vulnerabilidade (1, 2-3, 4, 5, 6) no núcleo do Linux foi divulgada publicamente, permitindo que um usuário local não privilegiado obtenha direitos de root, sobrescrevendo dados no cache de página. O identificador CVE ainda não foi atribuído; além do código da exploração, não há informações disponíveis sobre o problema. A correção está disponível apenas na forma de um patch, publicado em 20 de maio e aceito na ramificação principal do núcleo do Linux em 21 de maio (as versões corretivas do núcleo ainda não estão disponíveis).
A vulnerabilidade está presente na implementação da tecnologia GRO (Generic Receive Offload), utilizada para acelerar o processamento de pacotes segmentados. A vulnerabilidade é causada por um erro na implementação do mecanismo zerocopy na função skb_gro_receive(), que realiza a modificação direta de dados no cache de página para evitar bufferização excessiva. Com a flag SKBFL_MANAGED_FRAG_REFS definida, a referência às páginas de memória liberadas era ignorada no campo shinfo->frags, e esse campo era então anexado a outro skb sem alterar o contador de referências, resultando em acesso à memória após sua liberação (use-after-free). O problema conseguiu ser explorado para sobrescrever dados no cache da página, manipulando o ponteiro para o buffer io_uring.
O ataque é possível em sistemas com o subsistema io_uring ativado (io_uring_disabled=0). Para que a exploração funcione, deve haver um arquivo executável de leitura com a flag SUID-root disponível no sistema. O mecanismo de exploração consiste em o atacante fazer com que a base de usuários seja armazenada no cache de página, após o que insere no cache a string "hax::0:0::/root:/bin/sh". Em seguida, o comando "su hax" é executado, que obtém não a base original de usuários do armazenamento, mas uma cópia alterada com o login falso "hax", que possui direitos de root e senha vazia. O funcionamento da exploração foi testado no Ubuntu 24.04.
Fonte: opennet.ru
