No kernel Linux, a seguinte vulnerabilidade foi resolvida. ntfs: evitar desreferência de elementos da lista de execução estável no retorno de retalho do MFT ntfs_write_mft_block() mapeia cada registro $MFT através da lista de runlist de dados $MFT. Para os agrupamentos de sub- folio, ele procura um elemento de runlist_estrutura sob ni->runlist.lock, deixa cair o bloqueio e, posteriormente, usa rl->long e rl->vcn quando se escolhe o fólio_sz.
Esse ponteiro é apenas emprestado do ni->runlist.rl. A extensão concorrente de alocação $MFT pode unir uma lista de execução de substituição sob o mesmo bloqueio, e ntfs_rl_realloc() pode libertar o array de apoio antigo. Se isso acontecer entre a busca e a decisão posterior do fólio_sz, a restituição pode desreferir o armazenamento de listas de execução livres. O cenário de buggy envolve dois caminhos, com cada coluna mostrando a ordem dentro desse caminho:.
Caminho de rescrição do MFT: Extensão de alocação do $MFT: 1. Procurar em cima em rl abaixo 1. Estenda a alocação de dados $MFT. ni->runlist.lock. 2. Publique uma lista de execução de substituição. 2. Solte ni->runlist.lock. 3. Liberte a antiga matriz de listas de execução. 3. Leia rl-> comprimento e rl->vcn para escolher o folio_sz. Calcule o comprimento de execução restante enquanto ni->runlist.lock ainda estiver segurado, e use aquele escalar após desbloquear. Isto preserva a decisão de dimensionamento de folio existente sem carregar um elemento de runlist emprestado através do limite de bloqueio.
A validação reproduziu este relatório do kernel: BUG: KASAN: slab-use-after-free no ntfs_mft_writepages+ 0 x 1 c 8 d/ 0 x 1 fb 0 Chame o rastreamento: dump_stack_lvl+ 0 x 66 / 0 xa 0 print_report+ 0 xce/ 0 x 630? ntfs_mft_writepages+ 0 x 1 c 8 d/ 0 x 1 fb 0? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5? __virt_addr_valid+ 0 x 20 d/ 0 x 410? ntfs_mft_writepages+ 0 x 1 c 8 d/ 0 x 1 fb 0 kasan_report+ 0 xe 0 / 0 x 110? ntfs_mft_writepages+ 0 x 1 c 8 d/ 0 x 1 fb 0 ntfs_mft_writepages+ 0 x 1 c 8 d/ 0 x 1 fb 0? __pfx_ntfs_mft_writepages+ 0 x 10 / 0 x 10? __pfx___mutex_unlock_slowpath+ 0 x 10 / 0 x 10? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5? iput+ 0 x 92 / 0 xa 80 do_writepages+ 0 x 219 / 0 x 530? __pfx_do_writepages+ 0 x 10 / 0 x 10 __writeback_single_inode+ 0 x 117 / 0 xf 50? do_raw_spin_lock+ 0 x 130 / 0 x 270? __pfx_do_raw_spin_lock+ 0 x 10 / 0 x 10? __pfx___writeback_single_inode+ 0 x 10 / 0 x 10? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5 writeback_sb_inodes+ 0 x 65 b/ 0 x 1810? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5? lock_ aquire+ 0 x 2 b 8 / 0 x 2 f 0? __pfx_writeback_sb_inodes+ 0 x 10 / 0 x 10? lock_release+ 0 x 1 e 0 / 0 x 280? _raw_spin_desbloquear+ 0 x 23 / 0 x 40? move_ expirado_inodes+ 0 x 2 b 8 / 0 x 850 __writeback_inodes_wb+ 0 xf 4 / 0 x 270? __pfx___writeback_inodes_wb+ 0 x 10 / 0 x 10? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5? cola_io+ 0 x 2 e 4 / 0 x 410 wb_writeback+ 0 x 666 / 0 x 880? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5? __pfx_wb_writeback+ 0 x 10 / 0 x 10? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5? obter_nr_dirty_inodes+ 0 x 1 c/ 0 x 170 bb_workfn+ 0 x 75 e/ 0 xbb 0? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5? _raw_spin_unlock_irqrestore+ 0 x 27 / 0 x 60? __pfx_wb_workfn+ 0 x 10 / 0 x 10? __pfx_debug_object_deactivar+ 0 x 10 / 0 x 10? lock_ aquire+ 0 x 2 b 8 / 0 x 2 f 0? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5? lock_release+ 0 x 1 e 0 / 0 x 280 processo_one_work+ 0 x 8 d 0 / 0 x 1870? __pfx_process_one_work+ 0 x 10 / 0 x 10? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5 worker_thread+ 0 x 575 / 0 xf 80? __pfx_worker_thread+ 0 x 10 / 0 x 10 kthread+ 0 x 2 e 7 / 0 x 3 c 0? __pfx_kthread+ 0 x 10 / 0 x 10 ret_from_fork+ 0 x 576 / 0 x 810? __pfx_ret_from_fork+ 0 x 10 / 0 x 10? srso_alias_return_thunk+ 0 x 5 / 0 xfbef 5? __switch_to+ 0 x 57 e/ 0 xe 10? __switch_to_asm+ 0 x 33 / 0 x 70? __pfx_kthread+ 0 x 10 / 0 x 10 ret_from_fork_asm+ 0 x 1 a/ 0 x 30.
Alocado por tarefa 970: kasan_save_stack+ 0 x 33 / 0 x 60 kasan_save_track+ 0 x 14 / 0 x 30 __kasan_kmalloc+ 0 xaa/ 0 xb 0 _kvmalloc_node_noprof+ 0 x 353 / 0 x 920 ntfs_rl_realloc+ 0 x 3 c/ 0 x 80 ntfs_runlists_merge+ 0 x 1212 / 0 x 3010 ntfs_mft_data_extend_allocation_nolock+ 0 x 3 e 0 / 0 x 1 f 40 ntfs_mft_record_alloc+ 0 x 1 ab 4 / 0 x 4 f 10 __ntfs_criar+ 0 x 680 / 0 x 2 e 50 ntfs_criar+ 0 x 1 e 6 / 0 x 3 a 0 path_openat+ 0 x 2 b 55 / 0 x 3 c 10 do_file_open+ 0 x 1 f 4 / 0 x 460 do_sys_openat 2 + 0 xde/ 0 x 170 __x 64 _sys_openat+ 0 x 122 / 0 x 1 e 0 do_syscall_ 64 + 0 x 115 / 0 x 6 a 0 digitação_SISCO_ 64 _após_hwframe+ 0 x 77 / 0 x 7 f.
Libertado pela tarefa 1294: kasan_save_ ---truncado---. Registro de aconselhamento: GHSA- 2 cmf-w 788 -Qhmg. Identificadores relacionados: CVE- 2026 - 72354.
Tempo: GitHub Advisory Database publicou este registro em 2026 - 08 - 15 T 06: 32: 21.000 Z e lista a sua última modificação como 2026 - 08 - 17 T 06: 33: 25.000 Z.
Severidade: ALTAMENTE. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H.
Software afetado: o registro de aconselhamento não fornece um pacote normalizado ou faixa de versões.
Classificação e evidência: nenhum identificador CWE está listado. O registro contém 3 suporte de referências nestes tipos: AVISO, WEB.