В ядре Linux устранена следующая уязвимость:
ntfs: избегать выделения кучи для состояния упреждающего чтения свободного кластера
get_nr_free_clusters() выделяет временный файл file_ra_state перед ним
публикует предварительно вычисленное количество свободных кластеров, устанавливает NVolFreeClusterKnown(),
и просыпается vol->free_waitq. Если это распределение не удалось, рабочий возвращает
не устанавливая флаг и не будя официантов, чтобы звонящие ждали бесплатного
count может блокироваться на неопределенный срок. Состояние упреждающего чтения используется только синхронно при сканировании растрового изображения.
Сохраните его в стеке и передайте по адресу помощнику упреждающего чтения. Это
устраняет путь ошибки раннего выделения вместо добавления специального
случай, который публикует консервативный подсчет и пробуждает очередь ожидания. Обнулить инициализацию состояния в стеке, поскольку file_ra_state_init() только устанавливает
ra_pages и prev_pos.
Примените ту же обработку к __get_nr_free_mft_records(), который сканирует
Растровое изображение MFT с таким же кратковременным состоянием упреждающего чтения.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: ntfs: avoid heap allocation for free-cluster readahead state get_nr_free_clusters() allocates a temporary file_ra_state before it publishes the precomputed free cluster count, sets NVolFreeClusterKnown(), and wakes vol->free_waitq. If that allocation fails, the worker returns without setting the flag or waking waiters, so callers waiting for the free count can block indefinitely. The readahead state is only used synchronously while scanning the bitmap. Keep it on the stack and pass it by address to the readahead helper. This eliminates the early allocation failure path instead of adding a special case that publishes a conservative count and wakes the waitqueue. Zero-initialize the on-stack state because file_ra_state_init() only sets ra_pages and prev_pos. Apply the same treatment to __get_nr_free_mft_records(), which scans the MFT bitmap with the same short-lived readahead state.
Характеристики атаки
Последствия
Строка CVSS v3.1