Ad

CVE-2026-72209

CRITICAL CVSS 3.1: 9,8 EPSS 0.52%
Обновлено 17 августа 2026
Linux
Параметр Значение
CVSS 9,8 (CRITICAL)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: ntfs: проверка значений атрибутов при поиске ntfs_attr_find() и ntfs_external_attr_find() проверяют этот общий Значения резидентных атрибутов соответствуют их записям атрибутов, и это Резидентные значения фиксированного размера достаточно велики. Для резидента переменной длины форматы, однако фиксированной части недостаточно: встроенные поля длины все еще может указывать вызывающим абонентам за пределы значения резидента. Созданное изображение может установить небольшое резидентное значение $FILE_NAME value_length, в то время как оставив file_name_length большим.

Затем вызывающие абоненты доверяют file_name_length и прочитайте резидентное значение при преобразовании или сравнении имени. Это был воспроизведен с обработанным изображением под КАСАН как плита, выходящая за пределы поля прочитать из копии записи kmalloc-1k MFT. В стек входит ntfs_lookup(), ntfs_iget(), ntfs_read_locked_inode(), ntfs_attr_name_get(), ntfs_ucstonls() и utf16s_to_utf8s().

Добавьте валидатор значения общего атрибута и используйте его перед путем поиска. может возвращать атрибут, включая случай перечисления AT_UNUSED, где вызывающие абоненты напрямую проверяют возвращаемые атрибуты. Помощник проверяет границы резидентных значений, минимальные размеры резидентных значений, переменная длина Поля $FILE_NAME и метаданные нерезидентных пар сопоставлений, которые были ранее проверялось отдельно в обоих путях поиска. Это также сохраняет предполагаемую резидентную семантику сопоставления @val в Путь поиска внешнего атрибута.

Старый дублированный блок проверки перезаписал фактическую длину резидентного значения минимальным значением для конкретного типа length перед сравнением @val, поэтому резидентные значения переменной длины могут не совпадают, даже если байты были идентичны. Продолжайте сравнение фактическую длину значения и сравните ntfs_attrlist_entry_add() резидентные атрибуты с нулевым значением low_vcn вместо чтения член профсоюза-нерезидент после успешного совпадения с резидентом. Отклонять также нерезидентные записи $FILE_NAME: формат требует $FILE_NAME будет резидентным, а вызывающие объекты будут считать возвращенные записи резидентными.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: ntfs: validate attribute values on lookup ntfs_attr_find() and ntfs_external_attr_find() check that generic resident attribute values fit in their attribute records and that fixed-size resident values are large enough. For variable-length resident formats, however, the fixed part is not enough: embedded length fields can still point callers past the resident value. A crafted image can set a small resident $FILE_NAME value_length while leaving file_name_length large. Callers then trust file_name_length and read past the resident value when converting or comparing the name. This was reproduced with a crafted image under KASAN as a slab-out-of-bounds read from the kmalloc-1k MFT record copy. The stack included ntfs_lookup(), ntfs_iget(), ntfs_read_locked_inode(), ntfs_attr_name_get(), ntfs_ucstonls(), and utf16s_to_utf8s(). Add a shared attribute value validator and use it before a lookup path can return an attribute, including the AT_UNUSED enumeration case where callers inspect returned attributes directly. The helper validates resident value bounds, minimum resident value sizes, variable-length $FILE_NAME fields, and non-resident mapping-pairs metadata that was previously checked separately in both lookup paths. This also preserves the intended resident @val matching semantics in the external attribute lookup path. The old duplicated validation block overwrote the actual resident value length with the type-specific minimum length before comparing @val, so variable-length resident values could fail to match even when the bytes were identical. Keep the comparison on the actual value length, and make ntfs_attrlist_entry_add() compare resident attributes with lowest_vcn zero instead of reading the non-resident union member after a successful resident match. Reject non-resident $FILE_NAME records too: the format requires $FILE_NAME to be resident and callers treat returned records as resident.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1