В ядре Linux устранена следующая уязвимость:
cifs: используйте cifs_invalidate_cache() в cifs_do_truncate() для O_TRUNC
cifs_do_truncate() вызывается из cifs_open() без i_rwsem, поэтому
невозможно использовать cifs_resize_file_locked() для выполнения правильного файла cookie fscache
изменить размер. Вместо этого добавьте cifs_invalidate_cache() после cifs_setsize().
cifs_invalidate_cache() вызывает fscache_invalidate(), который работает без
удерживая i_rwsem: он безоговорочно увеличивает inval_counter и устанавливает
FSCACHE_COOKIE_NO_DATA_TO_READ, гарантирующий, что устаревшие кэшированные данные не будут
обслуживается после того, как файл cookie позже активируется с помощью fscache_use_cookie().
Усечение до нуля не оставляет действительных кэшированных данных, что делает недействительность
здесь правильная семантика.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: cifs: use cifs_invalidate_cache() in cifs_do_truncate() for O_TRUNC cifs_do_truncate() is invoked from cifs_open() without i_rwsem, so it cannot use cifs_resize_file_locked() to perform a proper fscache cookie resize. Instead, add cifs_invalidate_cache() after cifs_setsize(). cifs_invalidate_cache() calls fscache_invalidate(), which works without holding i_rwsem: it unconditionally increments inval_counter and sets FSCACHE_COOKIE_NO_DATA_TO_READ, ensuring that stale cached data is not served once the cookie is later activated by fscache_use_cookie(). Truncation to zero leaves no valid cached data, making invalidation the correct semantic here.
Характеристики атаки
Последствия
Строка CVSS v3.1