В ядре Linux устранена следующая уязвимость:
ocfs2: исправлен выход индекса массива UBSAN за пределы границ в ocfs2_sum_rightmost_rec
[ОШИБКА]
Установка повреждения на диске для l_next_free_rec на 0 во встроенном индексном дескрипторе
Список экстентов вызывает панику UBSAN при следующей записи в этот файл.
[ПРИЧИНА]
ocfs2_sum_rightmost_rec() вычисляет
я = le16_to_cpu(el->l_next_free_rec) - 1
и обращается к el->l_recs[i] без проверки i. Когда l_next_free_rec
равно 0, я становится -1; когда l_next_free_rec превышает l_count, я падаю
за концом массива. В любом случае нарушается
__counted_by_le(l_count) аннотация к l_recs[] и запускает UBSAN.
[ИСПРАВЛЕНО]
Проверьте встроенный список экстентов индексного дескриптора при чтении индексного дескриптора, в
ocfs2_validate_inode_block(): l_count должен быть ненулевым и не больше
чем может вместить блок индексного дескриптора, и l_next_free_rec не должен превышать
l_count.
Поврежденный список отклоняется во время чтения до создания b-дерева.
код может индексировать l_recs[] за пределы.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: ocfs2: fix UBSAN array-index-out-of-bounds in ocfs2_sum_rightmost_rec [BUG] On-disk corruption setting l_next_free_rec to 0 in an inode's embedded extent list triggers a UBSAN panic on the next write to that file. [CAUSE] ocfs2_sum_rightmost_rec() computes i = le16_to_cpu(el->l_next_free_rec) - 1 and accesses el->l_recs[i] without validating i. When l_next_free_rec is 0, i becomes -1; when l_next_free_rec exceeds l_count, i falls past the end of the array. Either case violates the __counted_by_le(l_count) annotation on l_recs[] and triggers UBSAN. [FIX] Validate the inode's embedded extent list when the inode is read, in ocfs2_validate_inode_block(): l_count must be non-zero and no larger than the inode block can hold, and l_next_free_rec must not exceed l_count. A corrupt list is rejected at read time, before the b-tree code can index l_recs[] out of bounds.
Характеристики атаки
Последствия
Строка CVSS v3.1