В ядре Linux устранена следующая уязвимость: ntfs: отклонять нерезидентные записи для атрибутов, предназначенных только для резидентов. Валидатор общего атрибута времени поиска отклоняет нерезидентные Записи $FILE_NAME и $VOLUME_NAME, поскольку их форматы требуют резидентные значения и вызывающие объекты обрабатывают возвращаемые записи как резидентные атрибуты. Другие типы резидентных атрибутов по-прежнему проходят через общие нерезидентные проверки пар сопоставлений.
Это оставляет реальные пути путаницы в профсоюзах-резидентах и нерезидентах. Загрузка инода
ищет $STANDARD_INFORMATION, а затем читает data.resident.value_offset
без проверки a->non_resident. ntfs_inode_sync_standard_information()
делает то же самое при обновлении стандартного значения информации.
ntfs_write_volume_flags() также ищет $VOLUME_INFORMATION и читает
data.resident.value_offset напрямую. Вызывающие объекты $INDEX_ROOT в dir.c и
index.c зависит от одного и того же контракта поиска перед использованием резидента
корневое значение индекса.
Отклонять нерезидентные записи для всех типов резидентных атрибутов в общий валидатор. Сохраните существующее поведение $FILE_NAME и $VOLUME_NAME, но учтите это через помощника и распространите на $STANDARD_INFORMATION, $OBJECT_ID, $VOLUME_INFORMATION, $INDEX_ROOT и $EA_ИНФОРМАЦИЯ. Для $OBJECT_ID и $EA_INFORMATION это контракт. усиление защиты для резидентных форматов; этот патч только отклоняет нерезидентная форма и не добавляет проверку нового резидентного значения для эти типы.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: ntfs: reject non-resident records for resident-only attributes The shared lookup-time attribute validator rejects non-resident $FILE_NAME and $VOLUME_NAME records because their formats require resident values and callers handle returned records as resident attributes. Other resident-only attribute types still pass through the generic non-resident mapping-pairs checks. That leaves real resident/non-resident union confusion paths. Inode load looks up $STANDARD_INFORMATION and then reads data.resident.value_offset without checking a->non_resident. ntfs_inode_sync_standard_information() does the same when updating the standard information value. ntfs_write_volume_flags() also looks up $VOLUME_INFORMATION and reads data.resident.value_offset directly. $INDEX_ROOT callers in dir.c and index.c depend on the same lookup contract before consuming the resident index root value. Reject non-resident records for all resident-only attribute types in the shared validator. Keep the existing $FILE_NAME and $VOLUME_NAME behavior, but factor it through a helper and extend it to $STANDARD_INFORMATION, $OBJECT_ID, $VOLUME_INFORMATION, $INDEX_ROOT, and $EA_INFORMATION. For $OBJECT_ID and $EA_INFORMATION this is contract hardening for resident-only formats; this patch only rejects the non-resident form and does not add new resident value validation for those types.
Характеристики атаки
Последствия
Строка CVSS v3.1
Уязвимые продукты 3
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
2.6.12
|
6.9
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
7.1
|
7.1.5
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
7.1
|
7.2
|