В ядре Linux устранена следующая уязвимость:
dm-verity: исправлено переполнение буфера при расчете FEC. В dm-verity-fec произошло переполнение буфера:
if (neras && *neras <= v->fec->roots)
fio->erasures[(*neras)++] = i;
Это позволяет *neras достигать корней + 1 (пост-инкремент проталкивает его мимо
корни). Затем это значение передается как no_eras в decode_rs8().
Внутри Декодер RS (lib/reed_solomon/decode_rs.c:113-121), локатор стирания полиномиальный цикл записывает лямбда[j], где j может достигать nroots + 1 — один элемент за концом лямбда[] (размер которого равен nroots + 1, допустим индексы 0..nroots). Запись за пределами границ попадает на Syn[0], повреждая Синдромный буфер.
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: dm-verity: fix buffer overflow in FEC calculation There's a buffer overflow in dm-verity-fec: if (neras && *neras <= v->fec->roots) fio->erasures[(*neras)++] = i; This allows *neras to reach roots + 1 (the post-increment pushes it past roots). This value is then passed as no_eras to decode_rs8(). Inside the RS decoder (lib/reed_solomon/decode_rs.c:113-121), the erasure locator polynomial loop writes lambda[j] where j can reach nroots + 1 — one element past the end of lambda[] (which is sized nroots + 1, valid indices 0..nroots). The out-of-bounds write lands on syn[0], corrupting the syndrome buffer.
Характеристики атаки
Последствия
Строка CVSS v3.1