CVE-2023-53311 in LinuxИнформация

Сводка

по VulDB • 27.05.2026

В ядре Linux устранена следующая уязвимость:

nilfs2: исправлена ошибка use-after-free (использование после освобождения) структуры nilfs_root при загрязнении инодов через iput

В процессе размонтирования файловой системы nilfs2 после того, как nilfs2 отсоединяет свой писатель в функции nilfs_detach_log_writer(), никто не удерживает структуру nilfs_root. Ранее функция nilfs_evict_inode() могла вызывать чтение с ошибкой use-after-free для nilfs_root, если иноды оставались в «garbage_list» и освобождались функцией nilfs_dispose_list в конце работы nilfs_detach_log_writer(). Эта ошибка была исправлена в коммите 9b5a04ac3ad9 («nilfs2: исправлена ошибка use-after-free nilfs_root в nilfs_evict_inode()»).

Однако выяснилось, что существует еще одна возможность возникновения UAF в пути вызова, где mark_inode_dirty_sync() вызывается из iput():

nilfs_detach_log_writer() nilfs_dispose_list() iput() mark_inode_dirty_sync() __mark_inode_dirty() nilfs_dirty_inode() __nilfs_mark_inode_dirty() nilfs_load_inode_block() --> вызывает UAF структуры nilfs_root

Это может произойти после коммита 0ae45f63d4ef («vfs: добавить поддержку опции монтирования lazytime»), который изменил поведение iput() так, чтобы она вызывала mark_inode_dirty_sync() при последнем обращении, если состояние i_state содержит флаг I_DIRTY_TIME, а i_nlink не равен нулю.

Эта проблема проявляется после коммита 28a65b49eb53 («nilfs2: не записывать измененные данные после перехода в режим только для чтения») при использовании воспроизводящего скрипта syzbot, однако проблема потенциально существовала и ранее.

Исправление заключается в добавлении «флага очистки» (purging flag) в структуру nilfs, установке этого флага во время обработки «garbage_list» и его проверке в __nilfs_mark_inode_dirty().

В отличие от коммита 9b5a04ac3ad9 («nilfs2: исправлена ошибка use-after-free nilfs_root в nilfs_evict_inode()»), данный патч не полагается на ns_writer для определения необходимости пропуска операций, чтобы не нарушить восстановление при монтировании. Процедура nilfs_salvage_orphan_logs изменяет буфер спасенных данных на «грязный» до прикрепления писателя журнала, поэтому изменение __nilfs_mark_inode_dirty() для пропуска операции при ns_writer == NULL приведет к сбою записи восстановления. Цель использования флага, применяемого только при очистке, заключается в сужении условий, при которых такие операции выполняются.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Ответственный

Linux

Резервировать

16.09.2025

Раскрытие

16.09.2025

Модерация

принято

Вход

VDB-324499

EPSS

0.00149

KEV

Нет

Деятельности

Очень низкий

Источники

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!