Ad

CVE-2026-89526

CRITICAL CVSS 3.1: 9,8 EPSS 0.64%
Обновлено 13 сентября 2026
Linux
Параметр Значение
CVSS 9,8 (CRITICAL)
Поставщик Linux
Публичный эксплойт Нет

В ядре Linux устранена следующая уязвимость: svcrdma: проверка позиций чтения блоков перед реконструкцией Поле позиции фрагмента чтения RPC/RDMA предоставляется удаленным клиента и дословно сохраняется в проанализированном списке фрагментов. xdr_count_read_segments() проверяет только 4-байтовое выравнивание; это никогда сравнивает позицию с полученной длиной тела. В пути, состоящем из одного фрагмента, svc_rdma_read_complete_one() разделяет голова и хвост kvecs в ch_position. Позиция за строкой тело выходит за пределы длины хвоста, подвергая соседнюю пластину памяти воздействию верхний декодер XDR.

В многочанковом пути svc_rdma_read_multiple_chunks() вычисляет длины промежутков между частями как беззнаковые вычитания из ch_position. Перекрывающиеся фрагменты чтения приводят к тому, что эти вычитания подлив. Конечная позиция после встроенного тела также меньше длины конечного промежутка. svc_rdma_copy_inline_range() затем копирует буфер приема на страницы запроса, которые возвращается клиенту через канал ответа.

Связанные копии встроенного диапазона в svc_rdma_copy_inline_range() против декодированное встроенное тело RPC, сохраненное в rc_saved_arg. Отклонить один фрагмент чтения, расположенный за пределами этого тела, и отклонение многокусковые списки, в которых накопленные прочитанные байты превышают следующие позиция чанка. Примените ту же позицию и перекройте проверки путь перемежения фрагмента вызова.

Показать оригинальное описание (EN)

In the Linux kernel, the following vulnerability has been resolved: svcrdma: Validate Read chunk positions before reconstruction The RPC/RDMA Read chunk position field is supplied by the remote client and stored verbatim in the parsed chunk list. xdr_count_read_segments() checks only 4-byte alignment; it never compares the position against the received inline body length. In the single-chunk path, svc_rdma_read_complete_one() splits the head and tail kvecs at ch_position. A position past the inline body underflows the tail length, exposing adjacent slab memory to the upper XDR decoder. In the multi-chunk path, svc_rdma_read_multiple_chunks() computes gap lengths between chunks as unsigned subtractions from ch_position. Overlapping Read chunks cause these subtractions to underflow. A final position past the inline body likewise underflows the trailing gap length. svc_rdma_copy_inline_range() then copies past the receive buffer into request pages that are returned to the client through the Reply channel. Bound inline-range copies in svc_rdma_copy_inline_range() against the decoded inline RPC body saved in rc_saved_arg. Reject a single Read chunk positioned beyond that body, and reject multi-chunk lists where accumulated read bytes exceed the next chunk's position. Apply the same position and overlap checks in the call-chunk interleaving path.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Нужны права
Не требуются
Права не нужны
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v3.1