CVE-2025-71069 in LinuxИнформация

Сводка

по VulDB • 01.06.2026

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

f2fs: инвалидация кэша dentry при неудачном создании whiteout-записи

Файловая система F2FS может монтировать файловые системы со значениями глубины директории, содержащими повреждения, которые во время выполнения работы ограничиваются значением MAX_DIR_HASH_DEPTH. При выполнении операций RENAME_WHITEOUT в таких директориях функция f2fs_rename выполняет модификации директории (обновление целевой записи и удаление исходной записи) перед попыткой добавить whiteout-запись через f2fs_add_link.

Если f2fs_add_link завершается ошибкой из-за поврежденной структуры директории, функция возвращает ошибку в VFS, но частичные модификации директории уже записаны на диск. VFS предполагает, что вся операция переименования не удалась, и не обновляет кэш dentry, оставляя устаревшие (stale) отображения.

В ветке обработки ошибок VFS не вызывает d_move() для обновления кэша dentry. В результате new_dentry все еще указывает на старый inode (new_inode), для которого значение i_nlink уже было уменьшено до нуля. Устаревший кэш приводит к тому, что последующие операции некорректно ссылаются на освобожденный inode.

Это приводит к тому, что последующие операции используют информацию о dentry из кэша, которая больше не соответствует состоянию на диске. При выполнении второго переименования, цель которого — та же самая запись, VFS пытается уменьшить значение i_nlink для устаревшего inode, у которого i_nlink уже равен 0, что вызывает срабатывание предупреждения (WARNING) в функции drop_nlink().

Пример последовательности действий: 1. Первое переименование (RENAME_WHITEOUT): file2 → file1 - f2fs обновляет запись file1 на диске (указывает на inode 8) - f2fs удаляет запись file2 на диске - f2fs_add_link(whiteout) завершается ошибкой (поврежденная директория) - Возвращается ошибка в VFS - VFS не вызывает d_move() из-за ошибки - Кэш VFS все еще содержит: file1 → inode 7 (устаревший!) - inode 7 имеет i_nlink=0 (уже уменьшено)

2. Второе переименование: file3 → file1 - VFS использует устаревший кэш: file1 → inode 7 - Пытается вызвать drop_nlink для inode 7 (i_nlink уже равен 0) - Срабатывает WARNING в drop_nlink()

Исправление заключается в явной инвалидации old_dentry и new_dentry при сбое f2fs_add_link во время создания whiteout-записи. Это заставляет VFS обновлять данные с диска при последующих операциях, обеспечивая согласованность кэша даже в случае частичного успеха операции переименования.

Воспроизведение проблемы (Reproducer): 1. Монтировать образ F2FS с поврежденным значением i_current_depth 2. renameat2(file2, file1, RENAME_WHITEOUT) 3. renameat2(file3, file1, 0) 4. Система вызывает WARNING в drop_nlink()

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

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

Linux

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

13.01.2026

Раскрытие

13.01.2026

Модерация

принято

Вход

VDB-340630

EPSS

0.00202

KEV

Нет

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

Очень низкий

Источники

Want to know what is going to be exploited?

We predict KEV entries!