CVE-2026-64064 in Linux
Sumário
de VulDB • 20/07/2026
No kernel Linux, a seguinte vulnerabilidade foi resolvida:
netfs: Corrige netfs_invalidate_folio() para limpar o bit dirty se todas as alterações forem removidas
Se uma gravação em streaming for realizada, isso deixará o folio modificado relevante em um estado não atualizado (not-uptodate), mas com a flag "dirty" definida, e uma estrutura netfs_folio pendurada em folio->private indicando o intervalo dirty. Posteriormente, truncar o arquivo de modo que os dados sujos no folio sejam removidos, mas a primeira parte do folio permaneça teoricamente presente, fará com que a estrutura netfs_folio seja descartada... mas deixará a flag "dirty" definida.
Se o folio for então lido via mmap(), netfs_read_folio() verá que a página está suja (dirty) e saltará para netfs_read_gaps() para preencher as partes faltantes. No entanto, netfs_read_gaps() espera que haja uma estrutura netfs_folio presente e pode causar um oops porque o truncate a removeu.
Corrija isso chamando folio_cancel_dirty() em netfs_invalidate_folio() no caso de todos os dados sujos (dirty) no folio serem apagados (como faz o nfs).
Adicione também alguns tracepoints para registrar modificações em uma página suja (dirty page).
Isso pode ser reproduzido com algo como:
dd if=/dev/zero of=/xfstest.test/foo bs=1M count=1 umount /xfstest.test mount /xfstest.test xfs_io -c "w 0xbbbf 0xf96c" \ -c "truncate 0xbbbf" \ -c "mmap -r 0xb000 0x11000" \ -c "mr 0xb000 0x11000" \ /xfstest.test/foo
com o fscaching desabilitado (caso contrário, as gravações em streaming são suprimidas) e uma alteração em netfs_perform_write() para não permitir gravações em streaming se o descritor de arquivo estiver aberto como O_RDWR:
if (//(file->f_mode & FMODE_READ) || <--- comente esta linha netfs_is_cache_enabled(ctx)) {
Deve ser reproduzível mesmo sem essa alteração, mas ela impede que o comando xfs_io trivial acima a reproduza.
Observe que o dd inicial é importante: o arquivo deve começar suficientemente grande para que a lógica de ponto zero não apenas limpe os gaps porque sabe que ainda não há nada no arquivo para ler. Desmontar e montar novamente é necessário para limpar o pagecache (existem outras maneiras de fazer isso que também podem funcionar).
Isso foi inicialmente reproduzido com o xfstest generic/522 em alguns patches que removem a restrição FMODE_READ.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.