CVE-2024-35798 in Linuxinformação

Sumário

de VulDB • 16/05/2026

No kernel do Linux, a seguinte vulnerabilidade foi corrigida:

btrfs: corrige condição de corrida (race condition) em read_extent_buffer_pages()

Há relatos do tree-checker que detectam nós corrompidos, sem nenhum padrão óbvio, o que sugere uma possível sobrescrita na memória. Após alguma depuração, descobriu-se que há uma condição de corrida ao ler um buffer de extensão (extent buffer), onde o status "uptodate" pode ser ignorado.

Para evitar leituras concorrentes do mesmo buffer de extensão, read_extent_buffer_pages() executa as seguintes verificações:

/* (1) */ if (test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags)) return 0;

/* (2) */ if (test_and_set_bit(EXTENT_BUFFER_READING, &eb->bflags)) goto done;

Neste ponto, parece seguro iniciar a operação de leitura real. Uma vez concluída, end_bbio_meta_read() executa:

/* (3) */ set_extent_buffer_uptodate(eb);

/* (4) */ clear_bit(EXTENT_BUFFER_READING, &eb->bflags);

Normalmente, isso é suficiente para garantir que apenas uma leitura ocorra, e todos os outros chamadores aguardam sua conclusão antes de retornar. Infelizmente, existe uma interleaving (intercalação) com condição de corrida:

Thread A | Thread B | Thread C ---------+----------+--------- (1) | | | (1) | (2) | | (3) | | (4) | | | (2) | | | (1)

Quando isso acontece, a thread B inicia uma leitura desnecessária. Pior ainda, a thread C verá UPTODATE definido e retornará imediatamente, enquanto a leitura da thread B ainda está em andamento. Essa condição de corrida pode resultar em erros do tree-checker como este, pois o buffer de extensão é modificado concurrentemente:

BTRFS critical (device dm-0): corrupted node, root=256 block=8550954455682405139 owner mismatch, have 11858205567642294356 expect [256, 18446744073709551360]

Corrige-se o problema testando UPTODATE novamente após definir o bit READING e, se ele já estiver definido, pula-se a leitura desnecessária.

[ atualização menor do changelog ]

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Divulgação

17/05/2024

Moderação

aceite

Entrada

VDB-264927

CPE

pronto

EPSS

0.00168

KEV

não

Atividades

muito baixo

Fontes

Do you need the next level of professionalism?

Upgrade your account now!