В ядре Linux устранена следующая уязвимость:
fs/ntfs3: проверка таблицы грязных страниц при воспроизведении журнала
Каждый DIR_PAGE_ENTRY заканчивается массивом page_lcns[], длина которого равна длине диска.
поле lcns_follow. check_rstbl() проверяет ведение таблицы, но никогда
проверяет, помещается ли этот массив в запись, поэтому созданный lcns_follow позволяет
Преобразование v0->v1 memmove и последующие проходы воспроизведения выполняются из записи. Добавьте check_dp_table() для отклонения сразу после check_rstbl() любой записи большего размера.
чем его размер, заявленный через struct_size() (то же самое выражение, которое используется для выделения
эти записи, поэтому проверка по своей конструкции защищена от переполнения). Все потребители
тогда можно будет доверять lcns_follow как реальной емкости.
Это охватывает каждый
page_lcns[] доступ, индекс которого ограничен самой записью (
преобразование memmove, хранилище HotFix через find_dp() и самоограниченный
циклы сканирования). Доступы, индекс которых взят из записи журнала, требуют отдельного
связаны и обрабатываются в последующем патче.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: fs/ntfs3: validate dirty page table on log replay Each DIR_PAGE_ENTRY ends in a page_lcns[] array whose length is the on-disk lcns_follow field. check_rstbl() validates the table bookkeeping but never checks that this array fits in the entry, so a crafted lcns_follow lets the v0->v1 conversion memmove and later replay passes run off the entry. Add check_dp_table() to reject, right after check_rstbl(), any entry larger than its size claims via struct_size() (the same expression used to allocate these entries, so the check is overflow-safe by construction). All consumers can then trust lcns_follow as the real capacity. This covers every page_lcns[] access whose index is bounded by the entry itself (the conversion memmove, the HotFix store via find_dp(), and the self-bounded scan loops). Accesses whose index comes from the log record need a separate bound and are handled in a follow-up patch.
Характеристики атаки
Последствия
Строка CVSS v3.1