В ядре Linux устранена следующая уязвимость: dm-верит-фек: исправление байтов считывания, разделенных по блокам (take 3) fec_decode_bufs() …
В ядре Linux устранена следующая уязвимость: dm-верит-фек: исправление байтов считывания, разделенных по блокам (take 3) fec_decode_bufs() предполагает, что паритет байтов первого кодового слова RS Декоды никогда не делятся между блоками паритета. Это предположение является ложным. Рассмотрим v->fec->block_size == 4096 && v->fec->корни == 17 && fio->nbufs == 1, например. В этом случае каждый призыв к fec_decode_bufs() потребляет v->fec->roots* (fio->nbufs << DM_VERITY_FEC_BUF_RS_BITS) = 272 байт паритета. Учитывая, что данные о паритете для каждого блока сообщений начинаются с граница блока, выравнивание байта в данных паритета будет итерировать через 272*i мод 4096 до тех пор, пока не будут потреблены 3 паритетных блока. На 16-й вызов (i=15), выравнивание будет 4080 байт в первый Блок. В этом блоке осталось только 16 байтов, но 17 паритетных байтов будут Нужны. Код считывается вне границ из буфера паритетного блока. К счастью, это обычно не происходит, так как это может произойти только для определенные не-дефолтные значения fec_roots *and*, когда максимальное количество Буферы не могли быть распределены из-за низкой памяти. Например, с block_size=4096 затрагиваются только следующие случаи: fc_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] Несмотря на это, исправьте это, рефакторуя, как читаются блоки паритета.
| Продукт | Вендор | Статус |
|---|---|---|
| linux | Отслеживается | |
| linux | Отслеживается | |
| kernel-doc-7.0 | Отслеживается | |
| kernel-headers-7.0 | Отслеживается | |
| kernel-headers-modules-7.0 | Отслеживается | |
| kernel-image-7.0 | Отслеживается | |
| kernel-image-7.0-checkinstall | Отслеживается | |
| kernel-modules-drm-7.0 | Отслеживается | |
| kernel-modules-drm-nouveau-7.0 | Отслеживается | |
| kernel-modules-staging-7.0 | Отслеживается |