Linux · Linux Kernel · CVE-2024-57883
**Nome do Software Vulnerável e Versões Afetadas**
Versões do kernel Linux anteriores a 6.13.0-rc2master+
**Descrição**
O problema está relacionado à manipulação de tabelas de páginas huge pelo kernel Linux. A contagem de referência (refcount) do folio pode ser incrementada inesperadamente através de `try get folio()` por chamadores como `split huge pages()`. Isso pode causar um vazamento na tabela de páginas, pois a verificação de tabelas de páginas compartilhadas em `huge pmd unshare()` está incorreta se a contagem de referência for incrementada. O problema pode ser acionado por `damon`, `offline page`, `page idle`, etc., que incrementam a contagem de referência da tabela de páginas. Isso pode levar a que a própria tabela de páginas seja descartada após relatar uma "contagem de mapeamento não zero" (nonzero mapcount) e a página HugeTLB mapeada pela tabela de páginas não ser liberada.
**Recomendações**
Para resolver o problema, introduza uma contagem compartilhada independente da tabela de páginas PMD. Isso pode ser alcançado reutilizando o campo `pt share count`, que é usado para pmds x86/arm64/riscv. Como solução temporária (workaround), considere desabilitar a função `split huge pages()` até que um patch esteja disponível. Restrinja o acesso à função `huge pmd unshare()` para minimizar o risco de exploração. Evite usar a função `try get folio()` no endpoint da API afetado até que o problema seja resolvido.