CVE-2026-98365 в Linux Kernel: переполнение в RDMA/rxe, OOB-доступ и kernel oops

CVE: CVE-2026-98365
Продукт: Linux Kernel
Дата публикации: 06.10.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,38%; процентиль 30,01%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В подсистеме Soft-RoCE (rxe) ядра Linux исправлена уязвимость CVE-2026-98365: функция mr_check_range() проверяла границы зарегистрированной области памяти арифметикой, подверженной переполнению. Удалённый пир может подобрать значения iova и length так, чтобы сумма переполнилась через ноль, обойти проверку и вызвать внеполосное чтение/запись и kernel oops. Исправление применено в стабильные ветки ядра (коммит d10e2a08799e); по описанию атака возможна по сети без аутентификации.

Основные характеристики​


Суть риска: удалённый участник RDMA-соединения отправляет специально сформированный запрос RDMA Write/Read, из-за переполнения целого числа обходит проверку границ памяти и вызывает внеполосный доступ в ядре, что приводит к kernel oops.

Ключевые параметры:

  • Тип ошибки: целочисленное переполнение при проверке диапазона, приводящее к out-of-bounds доступу; CWE-идентификаторы в записи CVE не указаны.
  • CVSS 3.1: 9.8, критическая; вектор CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — атака по сети, без сложных условий, без привилегий и без участия пользователя.
  • Условие атаки: сетевая доступность RDMA/rxe-пира; аутентификация не требуется.
  • EPSS: 0,382% (процентиль 30,02%) — низкая оценка вероятности эксплуатации в ближайшие 30 дней, но метрика не гарантирует отсутствия риска.
  • CISA KEV: подтверждения включения в каталог отсутствуют.
  • Подтверждённая эксплуатация: сведения о реальных атаках в доступных источниках отсутствуют.

Какие продукты и версии затронуты​


Уязвимость находится в драйвере Soft-RoCE (drivers/infiniband/sw/rxe/rxe_mr.c) ядра Linux. Согласно метке Fixes, дефект присутствует с коммита 8700e3e7c485 («Soft RoCE driver»), то есть с момента появления драйвера rxe в ядре.

Точный перечень затронутых версий ядра в пакете доказательств не приведён: список affected в NVD пуст, данные дистрибутивов отсутствуют. Подтверждено лишь то, что исправление применено в нескольких стабильных ветках ядра:

  • исходный патч d10e2a08799e858d3e71ea4169bcd018f216d444;
  • бэкпорты 2f3b705144e3a3c14184fec6e354680081fe91ec, 3431f525718f6b07da308cda6d44f8cb548bbd37, 5d9426a74fc8cb8f375fcdc19b465a030f9b8cab, b7d2118660545a00b21e83010ded1a231c6fb8c5.

Уязвимы системы, где загружен код rxe и доступен RDMA-пир. Ядра без использования Soft-RoCE этим путём атаки не затрагиваются.

Причина уязвимости​


Функция mr_check_range() должна проверять, что диапазон [iova, iova+length) лежит внутри зарегистрированной области памяти (MR). Проверка была записана как iova < mr->ibmr.iova || iova + length > mr->ibmr.iova + mr->ibmr.length — арифметика здесь склонна к переполнению: при значениях, близких к максимуму 64-битного типа, сумма iova + length может «завернуться» через ноль.

В результате проверка перестаёт отражать реальную границу: диапазон, фактически выходящий за пределы MR, проходит как корректный. Ошибка существовала с момента добавления драйвера Soft-RoCE (коммит 8700e3e7c485).

Исправление переписывает условие в переполнение-безопасной форме: сначала проверяется length > mr->ibmr.length, затем iova - mr->ibmr.iova > mr->ibmr.length - length. Первые два условия гарантируют, что последующие вычитания не приведут к underflow.

Как работает атака​


Путь данных начинается с сети: удалённый пир отправляет пакет RDMA Write или Read с полем RETH (RDMA Extended Transport Header), в котором заданы iova и length. Эти значения попадают в mr_check_range() на стороне респондера.

Если подобрать значения так, что iova + length переполнится и обнулится (в описании уязвимости приведён пример iova=0xfffffffffffffff8, length=8), проверка границ проходит успешно, хотя диапазон лежит вне зарегистрированной области.

Далее rxe_mr_iova_to_index() вычисляет огромный индекс типа int, защищённый лишь макросом WARN_ON — предупреждением, не прерывающим выполнение. Затем rxe_mr_copy_xarray() обращается к mr->page_info[огромный_индекс]: происходит внеполосное чтение или запись, приводящее к kernel oops.

Источники не подтверждают возможность контролируемого выполнения кода; последствия за пределами отказа ядра не установлены.

Условия успешной эксплуатации​


Из описания уязвимости следуют такие условия:

  • в ядре используется подсистема Soft-RoCE (rxe) и загружен соответствующий код;
  • атакующий имеет сетевой доступ к RDMA-пиру (респондеру);
  • аутентификация не требуется — атака выполнима неаутентифицированным удалённым пиром;
  • атакующий может отправить RDMA Write/Read с контролируемыми полями iova и length в RETH.

Дополнительные условия (конкретные версии ядра, конфигурация RDMA-интерфейсов, требования сетевого экранирования) в доступных источниках не раскрыты.

Возможный сценарий атаки​


Сценарий на основе подтверждённой механики: атакующий, имеющий сетевую доступность RDMA-пира, отправляет ему запрос RDMA Write или Read с RETH, где iova и length подобраны так, что их сумма переполняется через ноль. Проверка в mr_check_range() из-за переполнения пропускает такой запрос.

Код респондера вычисляет огромный индекс страницы и обращается к mr->page_info вне границ массива. Результат — kernel oops, то есть отказ ядра и, вероятно, недоступность узла до перезагрузки.

Такой исход согласуется с вектором CVSS (сеть, без привилегий, влияние на доступность, целостность и конфиденциальность на уровне H), однако подтверждения реализации иных последствий, помимо oops, в источниках нет.

Есть ли публичный эксплойт​


В пакете доказательств нет сведений о публичном PoC, готовом эксплойте или подтверждённых случаях эксплуатации в реальных атаках. Отсутствие таких сведений не означает отсутствия эксплойта: механика атаки подробно описана в самом коммите исправления, включая пример переполняющихся значений, что снижает порог для воспроизведения. EPSS 0,382% и отсутствие записи в CISA KEV указывают на низкую наблюдаемую активность, но не гарантируют безопасности.

Признаки эксплуатации​


Специфичные IOC (хэши, IP-адреса, сигнатуры пакетов) для этой уязвимости в доступных источниках не опубликованы. Косвенными точками контроля могут служить:

  • сообщения WARN_ON из rxe_mr_iova_to_index() и последующие kernel oops/panic в журналах ядра;
  • записи REMOTE_ACCESS_ERROR в журналах RDMA-респондера после установки исправления — это штатная реакция на некорректный iova, но она сигнализирует о попытке выхода за границы MR;
  • аномальный RDMA-трафик Write/Read с экстремальными значениями iova от одного источника.

Каждый признак по отдельности не доказывает эксплуатацию CVE-2026-98365.

Как обнаружить атаку​


Сначала проверьте, используется ли в системе Soft-RoCE: наличие загруженного модуля rxe и настроенных RDMA-интерфейсов (rdma link show, если утилита доступна) сужает круг затронутых узлов. Системы без rxe этим вектором не затрагиваются.

Далее:

  • просмотрите журналы ядра (journalctl -k, dmesg) на предмет WARN/oops из файлов rxe_mr.c;
  • проверьте журналы RDMA-подсистемы на ошибки REMOTE_ACCESS_ERROR;
  • при наличии сетевого мониторинга оцените трафик к RDMA/RoCE-портам на аномальные запросы Write/Read.

Это общие точки контроля, а не специфичные сигнатуры: конкретные IOC в источниках не приведены.

Как проверить свою версию​


Определите версию ядра на узле:

bash
uname -r
uname -a
cat /proc/version

Вывод uname -r покажет версию ядра; сравните её с версией, в которую вошло исправление для вашей ветки. Точный перечень затронутых версий в источниках не приведён, поэтому ориентируйтесь на наличие исправляющего коммита в истории вашей ветки или на обновления от поставщика дистрибутива. Для собственной сборки ядра проверьте наличие исправленного условия в drivers/infiniband/sw/rxe/rxe_mr.c.

Исправление​


Исправление выпущено: исходный патч d10e2a08799e858d3e71ea4169bcd018f216d444 применён в основное дерево, а его бэкпорты вошли в стабильные ветки ядра — 2f3b705144e3, 3431f525718f, 5d9426a74fc8, b7d211866054. Патч заменяет проверку границ на переполнение-безопасную форму, после чего некорректный iova отклоняется с -EINVAL, а респондер возвращает REMOTE_ACCESS_ERROR вместо внеполосного доступа.

Рекомендуемые действия:

  • установите обновление ядра от вашего дистрибутива, содержащее исправление CVE-2026-98365, как только оно доступно;
  • для самостоятельно собираемых ядер возьмите исправление из стабильного дерева (коммит d10e2a08799e858d3e71ea4169bcd018f216d444);
  • перезагрузите узел после установки нового ядра, чтобы уязвимый код перестал использоваться.

Откладывать обновление не следует: атака выполняется по сети без аутентификации, а её результат — отказ ядра на затронутом узле.

Временные меры защиты​


Полноценной временной защиты, эквивалентной патчу, в источниках не описано. Разумные меры снижения экспозиции (защитные выводы, а не подтверждённые рекомендации из коммита):

  • ограничьте сетевой доступ к RDMA/RoCE-портам доверенными узлами средствами сетевого экранирования;
  • отключите или выгрузите Soft-RoCE (rxe) на узлах, где эта подсистема не требуется;
  • ограничьте круг хостов, которым разрешено устанавливать RDMA-соединения с уязвимым узлом.

Эти меры снижают экспозицию, но не устраняют уязвимость; обновление остаётся обязательным.

Как проверить устранение уязвимости​


После установки обновления:

  • выполните uname -r и убедитесь, что работает ядро новой версии;
  • проверьте журнал изменений пакета ядра дистрибутива на упоминание CVE-2026-98365 или исправляющего коммита;
  • при собственной сборке убедитесь, что в drivers/infiniband/sw/rxe/rxe_mr.c проверка диапазона имеет переполнение-безопасный вид (length > mr->ibmr.length || iova - mr->ibmr.iova > mr->ibmr.length - length);
  • в журналах ядра после обновления не должно появляться oops из rxe_mr.c, а некорректные запросы должны завершаться REMOTE_ACCESS_ERROR, а не сбоем ядра.

Вывод​


CVE-2026-98365 — критическая (CVSS 9.8) уязвимость в драйвере Soft-RoCE ядра Linux: переполнение при проверке границ памяти позволяет неаутентифицированному удалённому пиру вызвать внеполосный доступ и kernel oops.

Исправление выпущено в стабильные ветки ядра и сводится к переполнение-безопасной проверке диапазона. Текущая оценка EPSS (0,382%) и отсутствие данных об эксплуатации не отменяют необходимости обновления: вектор атаки сетевой и не требует привилегий.

Установите исправленное ядро, перезагрузите узлы и ограничьте доступ к RDMA-интерфейсам до завершения обновления.

Официальные источники​


  1. NVD — CVE-2026-98365
  2. FIRST EPSS — CVE-2026-98365
  3. RDMA/rxe: Fix integer overflow in mr_check_range() leading to OOB access - kernel/git/stable/linux.git - Linux kernel stable tree
  4. RDMA/rxe: Fix integer overflow in mr_check_range() leading to OOB access - kernel/git/stable/linux.git - Linux kernel stable tree
  5. RDMA/rxe: Fix integer overflow in mr_check_range() leading to OOB access - kernel/git/stable/linux.git - Linux kernel stable tree
  6. RDMA/rxe: Fix integer overflow in mr_check_range() leading to OOB access - kernel/git/stable/linux.git - Linux kernel stable tree
  7. RDMA/rxe: Fix integer overflow in mr_check_range() leading to OOB access - kernel/git/stable/linux.git - Linux kernel stable tree
  8. CVEs — The Linux Kernel documentation

История обновлений статьи​


  • 08.10.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ