Linux · Linux Kernel · CVE-2024-57929
**Nome do Software Vulnerável e Versões Afetadas**
Versões do kernel do Linux anteriores à 6.6.74
**Descrição**
Uma vulnerabilidade no kernel do Linux foi resolvida, especificamente no array do dm, onde um bloco de array defeituoso poderia ser liberado duas vezes em dm array cursor end. Isso ocorre quando dm bm read lock() falha devido a erros de bloqueio ou checksum, liberando o bloco defeituoso implicitamente enquanto deixa um ponteiro de saída inválido para trás. O chamador de dm bm read lock() não deve operar sobre este ponteiro dm block inválido, ou isso levará a resultados indefinidos. Por exemplo, o dm array cursor armazena em cache incorretamente o ponteiro inválido ao ler um bloco de array defeituoso, causando uma liberação dupla em dm array cursor end(), acionando então o BUG ON em dm-bufio cache put().
O problema pode ser reproduzido inicializando um dispositivo de cache, limpando o segundo bloco de array offline e, em seguida, tentando reabrir o dispositivo de cache. Os logs do kernel mostram erros como device-mapper: array: array block check failed e kernel BUG at drivers/md/dm-bufio.c:638. A correção envolve definir o ponteiro do bloco em cache como NULL em caso de erros.
**Recomendações**
Para resolver o problema, atualize o kernel do Linux para a versão 6.6.74 ou posterior. Como solução temporária, considere desabilitar a função `dm array cursor end()` até que um patch esteja disponível. Restrinja o acesso à função vulnerável `dm bm read lock()` para minimizar o risco de exploração. Evite usar o ponteiro `dm block` no endpoint de API afetado até que o problema seja resolvido.