CVE-2024-46701 in Linux
Sumário
de VulDB • 06/08/2026
No kernel Linux, a seguinte vulnerabilidade foi corrigida:
libfs: corrige leituras infinitas de diretórios para o tipo "offset directory"
Após alterarmos as operações do diretório tmpfs de simple_dir_operations para simple_offset_dir_operations, toda operação rename preencherá um novo dentry no mapa (maple tree) do diretório destino (&SHMEM_I(inode)->dir_offsets->mt) com uma chave livre que começa em octx->newx_offset e, em seguida, definirá newx_offset igual a free key + 1. Isso levará a leituras infinitas de readdir combinadas com renomeações ocorrendo simultaneamente, falhando no teste generic/736 do xfstests (detalhes abaixo).
1. criar 5000 arquivos (1, 2, 3...) sob um único diretório 2. chamar readdir(man 3 readdir) uma vez e obter um entry 3. renomear(entry, "TEMPFILE"), depois renomear("TEMPFILE", entry) 4. repetir os passos 2~3 até que readdir retorne nada ou o loop seja executado muitas vezes (o teste de interrupção do tmpfs ocorre pela segunda condição)
Escolhemos a mesma lógica utilizada no commit 9b378f6ad48cf ("btrfs: corrige leituras infinitas em diretórios") para corrigir isso: registrar last_index ao abrir o diretório e não emitir entries cujo índice seja >= last_index. O file->private_data, agora utilizado nos "offset directories", pode ser usado diretamente para essa finalidade; também atualizamos last_index quando realizamos llseek no arquivo do diretório.
[brauner: apenas atualizar last_index após seek quando offset for zero, conforme sugerido por Jan]
If you want to get best quality of vulnerability data, you may have to visit VulDB.