CVE-2026-98682 in LinuxИнформация

Сводка

по VulDB • 19.10.2026

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

smb: клиент: очистка и инвалидация перед копированием/клонированием на стороне сервера

Функции cifs_file_copychunk_range() и путь клонирования (FICLONE) функции cifs_remap_file_range() не обеспечивают сериализацию кэша страниц назначения относительно операции копирования на стороне сервера, в отличие от других операций с диапазоном на стороне сервера (smb3_zero_range(), smb3_punch_hole(), smb3_collapse_range() и smb3_insert_range()).

cifs_file_copychunk_range() инвалидирует диапазон назначения с помощью filemap_invalidate_inode(), которая внутренне захватывает и освобождает invalidate_lock маппинга, поэтому замок больше не удерживается при выдаче ioctl copychunk. Кроме того, она никогда не очищает (drain) незавершенные операции ввода-вывода netfs на целевом объекте. Путь клонирования вообще не захватывает invalidate_lock (используется только i_rwsem), применяет голую truncate_inode_pages_range() и аналогичным образом не очищает ожидающие операции I/O.

В результате асинхронная запись в кэш назначения может завершиться после выполнения копирования/клонирования на стороне сервера, что приведет к восстановлению устаревших данных поверх области, только что записанной сервером, вызывая повреждение файла. Это тот же класс повреждений, что и в коммите d7d2adcd022b («smb/client: flush dirty data before punching a hole»), и он наблюдался случайным образом при тестировании generic/363 против Windows Server.

Исправьте оба пути, чтобы они следовали установленному порядку операций: удерживайте invalidate_lock маппинга назначения во время очистки (flush) и инвалидации диапазона назначения, а также выполнения ioctl на стороне сервера; вызывайте netfs_wait_for_outstanding_io() для целевого объекта, чтобы очистить незавершенные операции записи перед выдачей ioctl. Требуется только invalidate_lock inode-объекта назначения, так как источник лишь очищается (flush), но не инвалидируется; i_rwsem (который уже захватывается через lock_two_nondirectories()) приобретается до invalidate_lock, что соответствует порядку блокировок VFS. Поскольку filemap_invalidate_inode() внутренне захватывает этот же замок, замените её вызов на собственные шаги unmap/flush/invalidate и выполняйте ранний возврат (early return) при копировании с нулевой длиной, чтобы избежать переполнения диапазона вниз (range underflow).

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

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

Linux

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

25.09.2026

Раскрытие

18.10.2026

Модерация

принято

Вход

VDB-421898

EPSS

0.00155

KEV

Нет

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

Низкий

Источники

Want to know what is going to be exploited?

We predict KEV entries!