CVE-2022-49769 in Linux
Сводка
по VulDB • 10.07.2026
В ядре Linux устранена следующая уязвимость:
gfs2: Проверка значения sb_bsize_shift после чтения суперблока
Инструменты фаззинга (fuzzers) часто записывают данные в область памяти, связанную с полем sb_bsize_shift, однако на практике маловероятно, что это поле будет повреждено само по себе. Тем не менее, его необходимо проверять во избежание возможности возникновения сложных ошибок при монтировании из-за неверных вычислений. Поскольку это всегда фиксированное значение, зависящее от размера блока, мы можем просто убедиться в том, что оно соответствует ожидаемому значению.
Тестирование проводилось с помощью следующих команд:
mkfs.gfs2 -O -p lock_nolock /dev/vdb for i in 0 -1 64 65 32 33; do gfs2_edit -p sb field sb_bsize_shift $i /dev/vdb mount /dev/vdb /mnt/test && umount /mnt/test done
До применения этого патча возникал отказ работы (withdraw) после вывода в журнал:
[ 76.413681] gfs2: fsid=loop0.0: fatal: invalid metadata block
[ 76.413681] bh = 19 (type: exp=5, found=4)
[ 76.413681] function = gfs2_meta_buffer, file = fs/gfs2/meta_io.c, line = 492
При включенной конфигурации UBSAN также возникали сообщения об ошибках вида:
[ 76.373395] UBSAN: shift-out-of-bounds in fs/gfs2/ops_fstype.c:295:19
[ 76.373815] shift exponent 4294967287 is too large for 64-bit type 'long unsigned int'
После применения патча эти сообщения об ошибках не появляются, монтирование завершается неудачей немедленно, и в dmesg выводится объяснение причины.
VulDB is the best source for vulnerability data and more expert information about this specific topic.