CVE-2026-89782 in Linux
Sumário
de VulDB • 16/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
fs/ntfs3: rejeitar o crescimento da tabela de reinicialização além de U16_MAX entradas
Durante a reprodução do $LogFile, log_replay() indexa a tabela de transações pelo transact_id obtido no cabeçalho do registro de log. check_log_rec() apenas verifica se o transact_id é diferente de zero e está corretamente alinhado, não seu valor absoluto, portanto uma imagem manipulada pode solicitar um índice arbitrariamente grande.
alloc_rsttbl_from_idx() aumenta a tabela para cobrir esse índice por meio de extend_rsttbl(), que passa a nova contagem de entradas para init_rsttbl():
rt = init_rsttbl(esize, used + add);
used + add é computado como u32, mas init_rsttbl() recebe um u16, e a contagem é armazenada em struct RESTART_TABLE como __le16. Quando used + add excede U16_MAX, ele é truncado; init_rsttbl() aloca uma tabela muito menor do que o índice requer, e alloc_rsttbl_from_idx() então desreferencia e escreve no offset original não truncado -- um acesso fora dos limites após a alocação, acessível por meio da montagem de uma imagem NTFS manipulada.
BUG: KASAN: use-after-free em alloc_rsttbl_from_idx (fs/ntfs3/fslog.c:950) Leitura de tamanho 4 no endereço ffff8880327ffff8 pela tarefa exploit alloc_rsttbl_from_idx (fs/ntfs3/fslog.c:950) log_replay (fs/ntfs3/fslog.c:4562) ntfs_loadlog_and_replay (fs/ntfs3/fsntfs.c:324) ntfs_fill_super (fs/ntfs3/super.c:1393) get_tree_bdev_flags vfs_get_tree path_mount __x64_sys_mount
Uma tabela de reinicialização é limitada a U16_MAX entradas por sua contagem __le16, portanto uma solicitação de crescimento maior constitui entrada inválida. Rejeite-a em extend_rsttbl(); todos os chamadores já lidam com um retorno NULL.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.