Vulnerabilidad en Linux (CVE-2026-23267)
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
18/03/2026
Última modificación:
19/03/2026
Descripción
En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:<br />
<br />
f2fs: corrige el problema de inconsistencia del flag IS_CHECKPOINTED causado por escrituras concurrentes de commit atómico y checkpoint<br />
<br />
Durante las pruebas SPO, al montar F2FS, se devolvió un error -EINVAL desde<br />
f2fs_recover_inode_page. El problema ocurrió bajo el siguiente escenario<br />
<br />
Hilo A Hilo B<br />
f2fs_ioc_commit_atomic_write<br />
- f2fs_do_sync_file // atómico = true<br />
- f2fs_fsync_node_pages<br />
: last_folio = inode folio<br />
: schedule before folio_lock(last_folio) f2fs_write_checkpoint<br />
- block_operations// writeback last_folio<br />
- schedule before f2fs_flush_nat_entries<br />
: set_fsync_mark(last_folio, 1)<br />
: set_dentry_mark(last_folio, 1)<br />
: folio_mark_dirty(last_folio)<br />
- __write_node_folio(last_folio)<br />
: f2fs_down_read(&amp;sbi-&gt;node_write)//bloquea<br />
- f2fs_flush_nat_entries<br />
: {struct nat_entry}-&gt;flag |= BIT(IS_CHECKPOINTED)<br />
- unblock_operations<br />
: f2fs_up_write(&amp;sbi-&gt;node_write)<br />
f2fs_write_checkpoint//retorna<br />
: f2fs_do_write_node_page()<br />
f2fs_ioc_commit_atomic_write//retorna<br />
SPO<br />
<br />
El Hilo A llama a f2fs_need_dentry_mark(sbi, ino), y el last_folio ya ha<br />
sido escrito una vez. Sin embargo, el {struct nat_entry}-&gt;flag no tenía<br />
el IS_CHECKPOINTED establecido, causando que set_dentry_mark(last_folio, 1) y<br />
se escriba last_folio de nuevo después de que el Hilo B termine f2fs_write_checkpoint.<br />
<br />
Después de SPO y el reinicio, se detectó que {struct node_info}-&gt;blk_addr<br />
no era NULL_ADDR porque el Hilo B escribió exitosamente el checkpoint.<br />
<br />
Este problema solo ocurre en escenarios de escritura atómica. Para operaciones<br />
fsync de archivos regulares, el folio debe estar sucio. Si<br />
block_operations-&gt;f2fs_sync_node_pages envía exitosamente la escritura del folio,<br />
esta ruta no se ejecutará. De lo contrario, f2fs_write_checkpoint deberá esperar<br />
a que se complete el envío de la escritura del folio, ya que<br />
sbi-&gt;nr_pages[F2FS_DIRTY_NODES] &gt; 0. Por lo tanto, la situación en la que<br />
f2fs_need_dentry_mark verifica que el {struct nat_entry}-&gt;flag sin el flag<br />
IS_CHECKPOINTED, pero la escritura del folio ya ha sido enviada, no ocurrirá.<br />
<br />
Por lo tanto, para fsync de archivos atómicos, sbi-&gt;node_write debe adquirirse<br />
a través de __write_node_folio para asegurar que el flag IS_CHECKPOINTED<br />
indique correctamente que la escritura del checkpoint ha sido completada.
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/32bc3c9fe18881d50dd51fd5f26d19fe1190dc0d
- https://git.kernel.org/stable/c/75e19da068adf0dc5dd269dd157392434b9117d4
- https://git.kernel.org/stable/c/7633a7387eb4d0259d6bea945e1d3469cd135bbc
- https://git.kernel.org/stable/c/962c167b0f262b9962207fbeaa531721d55ea00e
- https://git.kernel.org/stable/c/bd66b4c487d5091d2a65d6089e0de36f0c26a4c7
- https://git.kernel.org/stable/c/ed81bc5885460905f9160e7b463e5708fd056324



