Se exploradas, essas falhas podem permitir que invasores obtenham acesso não autorizado a informações confidenciais ou geralmente causem problemas
alguns dias atráse divulgamos a notícia sobre a descoberta de uma vulnerabilidade no o subsistema Filtro de rede (usado para interceptar e manipular pacotes de rede), a vulnerabilidade catalogado sob CVE-2023-6817 Classificado com uma pontuação de gravidade elevada de 7.8, representa uma ameaça a considerar, pois permite que um utilizador local aumente os seus privilégios no sistema.
O Netfilter é um componente crucial que atua como um gatekeeper, gerenciando o fluxo de pacotes de dados na pilha da rede e facilitando diversas operações, como modificação de endereços, eliminação de pacotes e registro de atividades.
É mencionado que falha pode resultar em uso após condição de liberação, um cenário perigoso em que o sistema continua a usar memória após ela ter sido liberada, o que cria uma condição para que invasores explorem a falha e também pode levar a travamentos de aplicativos, divulgação de informações ou, em outras palavras, ainda mais alarmante, escalada de privilégios locais.
Vulnerabilidade aparece a partir da versão 5.6 do kernel Linux (excluindo Linux 5.10.204), bem como em Linux 5.11 (excluindo Linux 5.15.143), também em Linux 5.16 (excluindo Linux 6.1.68), Linux 6.2 (excluindo 6.6.7) e também RC1, 2, 3 e 4 do Linux 6.7 (embora este último já tenha sido lançado em sua versão estável onde a vulnerabilidade foi resolvida desde o RC5).
Em relação ao problema, é mencionado que Eu sei que é devido a um acesso à memória após uso gratuito no módulo nf_tables, que é fornecido pelo filtro de pacotes nftables e é devido a um bug na função nft_pipapo_walk, devido ao qual o processo de iteração sobre os elementos PIPAPO (Políticas de pacotes de pilha) não verifica a atividade de um elemento antes de operar nele, lou que pode causar uma vulnerabilidade de uso após liberação.
A função nft_rhash_walk() em outros back-ends de conjunto também não pula elementos inativos durante a caminhada do conjunto e, como resultado, o comando NFT_MSG_DELSETELEM pode ser chamado duas vezes em uma transação para remover cada elemento desse conjunto duas vezes, resultando em uma liberação dupla 1
Se o backend for um array pipapo, nft_pipapo_walk() será chamado. Esta função não verifica a atividade de um elemento antes de operar nele, como funções semelhantes em outros back-ends de conjunto, como nft_rhash_walk(). Portanto, o comando NFT_MSG_DELSETELEM pode ser chamado duas vezes em uma transação para excluir cada elemento desse conjunto duas vezes, resultando em uma liberação dupla.
Além disso, é mencionado que para que o processo de exploração de vulnerabilidades seja bem-sucedido, O ataque requer acesso a nftables, que podem ser obtidos com direitos CAP_NET_ADMIN em qualquer namespace de usuário ou namespace de rede, que pode ser fornecido, por exemplo, em contêineres isolados. Para demonstrar a vulnerabilidade, um protótipo de exploração foi publicado para teste.
Finalmente, deve ser mencionado que A decisão foi abordada muito antes de sua divulgação, já que, como mencionamos, A correção da vulnerabilidade foi proposta na versão de testes do kernel Linux 6.7-rc5. e mudou para as atuais ramificações estáveis do Linux 5.10.204, 5.15.143, 6.1.68 e 6.6.7.
Menciona-se que a solução envolve aplicar algumas alterações no modo de funcionamento da função `nft_pipapo_walk`, pois para solucionar o bug deve-se omitir elementos inativos durante os passeios estabelecidos. Essa abordagem evita efetivamente a dupla desabilitação de elementos PIPAPO (Pile Packet Policies), eliminando assim a condição de uso após liberação.
Por último, mas não menos importante, e como sempre fazemos, recomendamos a todos os nossos queridos leitores que implementem as correções relevantes, pois embora a vulnerabilidade dificilmente possa ser explorada remotamente, nunca é demais implementar as correções correspondentes.
Se você interessado em saber mais sobre o assunto, você pode verificar os detalhes em o seguinte link. Quanto aos interessados em poder testar o protótipo do exploit, podem consultar o código deste no link a seguir.