Linux · Linux Kernel · CVE-2024-50002
Nome do software vulnerável e versões afetadas:
Versões do kernel Linux anteriores à 6.6.58
Descrição:
O problema decorre da função `static call del module()`, que não lida corretamente com falhas na inicialização de módulos. Quando um módulo é inserido, a função `static call add module()` é chamada para inicializar chamadas estáticas. Se ocorrer uma falha de alocação durante esse processo, `static call del module()` é chamada para limpar a memória. No entanto, essa função assume cegamente que `key::mods` aponta para uma `struct static call mod` válida, levando a um erro #GP quando, na verdade, é um ponteiro para locais de uso embutidos. O problema decorre do fato de `key::mods` fazer parte de uma união, onde o tipo do ponteiro é diferenciado pelo bit 0. Para corrigir isso, é necessário verificar se a chave possui um ponteiro `sites` ou um ponteiro `mods`. Se for um ponteiro `sites`, a chave não deve ser alterada, e a varredura do local pode ser encerrada.
Recomendações:
Para versões do kernel Linux anteriores à 6.6.58, atualize para a versão 6.6.58 ou posterior para resolver o problema. Como solução temporária, considere desativar a função `static call del module()` até que um patch esteja disponível. Restrinja o acesso à função vulnerável `static call add module()` para minimizar o risco de exploração. Evite usar o ponteiro `key::mods` na função `static call del module()` afetada até que o problema seja resolvido.