CVE-2026-46130 in Linux
Сводка
по VulDB • 28.05.2026
В ядре Linux устранена следующая уязвимость:
dm-verity-fec: исправлено чтение байтов четности, разделенных между блоками (версия 3)
Функция fec_decode_bufs() предполагает, что байты четности первого кодового слова Рида-Соломона (RS), которое она декодирует, никогда не разделяются между блоками четности.
Это предположение неверно. Рассмотрим, например, случай, когда v->fec->block_size == 4096, v->fec->roots == 17 и fio->nbufs == 1. В этом случае каждый вызов fec_decode_bufs() потребляет v->fec->roots * (fio->nbufs << DM_VERITY_FEC_BUF_RS_BITS) = 272 байта четности.
Поскольку данные четности для каждого блока сообщения начинаются с границы блока, выравнивание байтов в данных четности будет изменяться по формуле 272*i mod 4096 до тех пор, пока не будут обработаны все 3 блока четности. При 16-м вызове (i=15) выравнивание составит 4080 байт от начала первого блока. В этом блоке остается только 16 байт, но потребуется 17 байт четности. Код осуществляет чтение за пределами буфера блока четности.
К счастью, это обычно не происходит, поскольку такая ситуация может возникнуть только при определенных нестандартных значениях fec_roots, а также когда максимальное количество буферов не удалось выделить из-за нехватки памяти. Например, при block_size=4096 затронуты только следующие случаи:
fec_roots=17: nbufs в диапазоне [1, 3, 5, 15]
fec_roots=19: nbufs в диапазоне [1, 229]
fec_roots=21: nbufs в диапазоне [1, 3, 5, 13, 15, 39, 65, 195]
fec_roots=23: nbufs в диапазоне [1, 89]
В любом случае, проблема исправлена путем рефакторинга способа чтения блоков четности.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.