PT-2024-30696 · Linux+7 · Linux Kernel+7
Publicado
2024-07-14
·
Atualizado
2025-09-29
·
CVE-2024-43834
CVSS v3.1
5.5
Média
| Vetor | AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Nome do software vulnerável e versões afetadas
Versões do kernel Linux anteriores à 6.6.50
Descrição
O problema decorre de um contexto de espera inválido da função
page pool destroy() quando um driver utiliza um pool de páginas e o XDP (eXpress Data Path). A função page pool create() cria um pool de páginas com uma contagem de referência padrão igual a 1. Quando o driver utiliza o XDP, ele registra um modelo de memória com xdp rxq info reg mem model(), o que aumenta a contagem de referência do pool de páginas para 2, caso o modelo de memória seja um pool de páginas. Para destruir o pool de páginas, o driver deve chamar tanto page pool destroy() quanto xdp unreg mem model(). No entanto, se page pool destroy() for chamada antes de xdp unreg mem model(), isso resulta em um aviso de contexto de espera inválido porque xdp unreg mem model() chama page pool destroy() com rcu read lock(), enquanto page pool destroy() adquire internamente mutex lock().O problema é corrigido usando
rhashtable lookup fast() em vez de rhashtable lookup() com rcu read lock(). O xa é liberado por xdp mem allocator rcu free(), que é chamado por call rcu() de mem xa remove(). O mem xa remove() é chamado por page pool destroy() quando a contagem de referências chega a 0. Como o xa já está protegido pelo mecanismo de contagem de referências no plano de controle, remover o rcu read lock() para page pool destroy() é seguro.Recomendações
Para resolver o problema, atualize o kernel do Linux para a versão 6.6.50 ou posterior. Para versões anteriores à 6.6.50, certifique-se de que `page poo
Exploit
Correção
Use After Free
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Alt Linux
Astra Linux
Linuxmint
Linux Kernel
Red Hat
Red Os
Suse
Ubuntu