CVE-2026-97413 в Linux Kernel: integer underflow в RDMA/rtrs-srv и практическая защита

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

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


Уязвимость CVE-2026-97413 затрагивает модуль rtrs-srv в подсистеме RDMA ядра Linux. Поле usr_len из сетевого сообщения используется без проверки при вычислении data_len = off - usr_len.

Если usr_len больше off, возникает integer underflow, и data_len получает огромное значение size_t. Это значение передаётся в rdma_ev как длина памяти, что приводит к out-of-bounds memory access.

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


Риск связан с невалидированным входным полем из сетевого сообщения RDMA-клиента, которое вызывает обратное переполнение целого числа и последующее обращение к памяти за пределами выделенного буфера.

  • Тип ошибки: integer underflow в вычислении data_len = off - usr_len без проверки условия usr_len <= off
  • CVSS 3.1: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, оценка 9.8, критическая
  • Вектор атаки: удалённый доступ через RDMA/rtrs-srv, без необходимости прав и без взаимодействия пользователя
  • Факт эксплуатации: в предоставленных источниках подтверждено наличие исправления в стабильном дереве ядра Linux; отдельного подтверждения массовой эксплуатации не приведено
  • EPSS: 0.452%, процентиль 36.6%

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


Затронут компонент rtrs-srv из подсистемы RDMA ядра Linux, реализованный в файле drivers/infiniband/ulp/rtrs/rtrs-srv.c. Уязвимые функции — process_read() и process_write(), которые обрабатывают сетевые сообщения от RDMA-клиентов.

Исправление было внесено в стабильное дерево ядра Linux через следующие коммиты:


Точные версии дистрибутивов и ядра, в которые уже внесены патчи, в предоставленных источниках не перечислены. Для определения актуального состояния системы используйте команды проверки версии ядра.

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


В функциях process_read() и process_write() модуля rtrs-srv переменная usr_len считывается из сетевого сообщения через le16_to_cpu(msg->usr_len) или le16_to_cpu(req->usr_len). Это значение используется для вычисления data_len = off - usr_len без проверки того, что usr_len <= off.

Когда злоумышленник отправляет RDMA-клиентом сообщение с полем usr_len, превышающим off, вычитание приводит к integer underflow. В C/C++ для знакового целого типа отрицательный результат оборачивается в большое положительное число, которое интерпретируется как size_t. Это огромное значение передаётся в колбэк rdma_ev как длина памяти.

Исправление добавляет явную проверку usr_len > off до вызова rtrs_srv_get_ops_ids(). При нарушении условия функция завершает работу с помощью early return, не выполняя дальнейшую обработку и не передавая невалидный размер в колбэк. Это устраняет out-of-bounds memory access.

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


Атакующий взаимодействует с RDMA-сервисом rtrs-srv как клиент. В сетевом сообщении он управляет полем usr_len.

В уязвимой версии ядра:

  • Функция process_read() или process_write() получает сообщение от клиента.
  • Поле usr_len считывается из сообщения через le16_to_cpu() без проверки диапазона.
  • Вычисляется data_len = off - usr_len. Если usr_len > off, результат отрицательный и оборачивается в большое значение size_t.
  • Переменная data получает адрес страницы из массива srv->chunks[buf_id] через page_address().
  • Колбэк ctx->ops.rdma_ev() вызывается с переданным data_len, который может быть значительно больше реального выделенного размера.
  • Внутри RDMA-инфраструктуры это значение используется как длина памяти, что приводит к обращению за пределами буфера.

Исправление перемещает проверку в начало обработки: если usr_len > off, функция сразу возвращает управление без дальнейшего использования невалидного значения. Это предотвращает передачу огромного размера в колбэк и последующее out-of-bounds обращение.

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


Для успешной эксплуатации необходимы следующие условия:

  • Система работает с ядром Linux, содержащим уязвимый модуль rtrs-srv.
  • Подсистема RDMA/rtrs-srv активна и принимает сетевые сообщения от клиентов.
  • У злоумышленника есть возможность отправить RDMA-сообщение с контролируемым полем usr_len.
  • Поле usr_len в сообщении превышает значение off, используемое при обработке запроса.

В предоставленных источниках не указаны конкретные версии дистрибутивов или ядра, которые гарантированно уязвимы. Проверка актуального состояния системы должна проводиться через команды проверки версии ядра и анализ наличия исправления в текущем дереве.

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


Сценарий предполагает взаимодействие с RDMA-сервисом rtrs-srv на целевой системе.

Атакующий подключается к RDMA-интерфейсу как клиент. Он формирует сообщение, в котором поле usr_len установлено значением, превышающим off. В уязвимой версии ядра это значение не проверяется и используется для вычисления data_len = off - usr_len.

В результате integer underflow переменная data_len получает огромное значение. Это значение передаётся в колбэк rdma_ev вместе с указателем на данные из массива srv->chunks[buf_id]. Внутри RDMA-инфраструктуры огромная длина приводит к обращению к памяти за пределами выделенного буфера.

После исправления проверка usr_len > off выполняется до передачи данных в колбэк. При нарушении условия функция завершает работу без дальнейшего использования невалидного размера, что устраняет out-of-bounds memory access.

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


В предоставленных источниках подтверждено наличие исправления в стабильном дереве ядра Linux и техническое описание ошибки.

Отдельного публичного PoC с готовым кодом эксплойта в пакете доказательств не приведено. Отсутствие сведений о конкретном эксплойте не означает, что он не существует. Для оценки фактической эксплуатируемости необходимо анализировать текущие версии ядра и наличие исправления в используемом дистрибутиве.

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


Специфичных IOC для CVE-2026-97413 в предоставленных источниках не выделено. Ниже приведены общие точки контроля, которые можно использовать при подозрении на атаки через RDMA/rtrs-srv:

  • Внезапное увеличение числа сетевых соединений к RDMA-интерфейсам.
  • Аномальные значения полей usr_len в логировании RDMA-транзакций, если такой лог доступен.
  • Рост потребления памяти или нестабильность ядра при обработке RDMA-запросов.
  • Появление сообщений в kernel log с префиксом rtrs-srv: Invalid usr_len, если debug-логирование включено.

Эти признаки неспецифичны и могут возникать по другим причинам. Для подтверждения эксплуатации CVE-2026-97413 требуется анализ версии ядра и наличия исправления.

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


Основные методы обнаружения:

  • Проверка версии ядра с помощью uname -r или uname -a.
  • Анализ kernel log на наличие сообщений от модуля rtrs-srv, особенно при включённом debug-режиме.
  • Мониторинг сетевой активности RDMA-интерфейсов на предмет аномальных запросов.
  • Сравнение текущей версии ядра с известными стабильными релизами, содержащими исправление.

В предоставленных источниках не указаны конкретные сигнатуры для IDS/IPS или готовые правила обнаружения. Для точной оценки актуальности уязвимости используйте команды проверки версии и анализ дерева ядра.

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


Для проверки версии ядра Linux используйте следующие команды:

Bash:
uname -r

Bash:
uname -a

Bash:
cat /proc/version

Эти команды показывают версию ядра и информацию о сборке. Для определения наличия исправления CVE-2026-97413 необходимо сравнить текущую версию с стабильными релизами, в которые внесены патчи:


Если используется дистрибутив, проверьте его репозиторий обновлений на наличие пакетов ядра с соответствующими патчами.

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


Основной способ исправления — обновление ядра Linux до версии, содержащей патч CVE-2026-97413.

  • Обновите дистрибутив до последней стабильной версии, в которую внесены backport-коммиты из списка выше.
  • Если используете кастомное дерево ядра, примените upstream commit 54bf38b27afc08a0eb6b732f9c14eb8a4bcb66b5 или соответствующие stable backports.
  • После обновления перезагрузите систему для применения изменений в ядре.

В предоставленных источниках не указаны конкретные номера версий пакетов или дистрибутивов. Для точного определения актуального состояния используйте команды проверки версии и анализ дерева ядра.

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


Если обновление ядра невозможно, рассмотрите следующие временные меры:

  • Ограничьте доступ к RDMA-интерфейсам с помощью сетевых правил.
  • Отключите модуль rtrs-srv, если он не используется в текущей конфигурации системы.
  • Мониторинг kernel log на наличие сообщений от rtrs-srv при обработке запросов.

Эти меры снижают поверхность атаки, но не устраняют саму уязвимость. Для полного устранения риска необходимо применить исправление ядра.

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


После обновления проверьте:

  • Версию ядра с помощью uname -r или uname -a.
  • Наличие патча в дереве ядра через git log или анализ исходного кода модуля rtrs-srv.
  • Отсутствие сообщений об ошибках в kernel log при обработке RDMA-запросов.

Для подтверждения применения исправления убедитесь, что текущая версия ядра содержит один из следующих коммитов:


Если используется дистрибутив, проверьте его репозиторий обновлений на наличие пакетов ядра с соответствующими патчами.

Вывод​


CVE-2026-97413 представляет собой критическую уязвимость в модуле rtrs-srv ядра Linux, связанную с integer underflow при обработке сетевых сообщений RDMA-клиентов. Ошибка возникает из-за невалидации поля usr_len перед вычислением data_len = off - usr_len. При условии usr_len > off происходит out-of-bounds memory access.

Практическое значение для администратора состоит в необходимости проверки версии ядра и наличия исправления. Если RDMA/rtrs-srv активен, уязвимость может быть эксплуатируема удалённым клиентом без необходимости прав. Основной способ устранения — обновление ядра до версии с патчем CVE-2026-97413.

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


  1. NVD — CVE-2026-97413
  2. FIRST EPSS — CVE-2026-97413
  3. RDMA/rtrs-srv: Fix integer underflow in process_read and process_write - kernel/git/stable/linux.git - Linux kernel stable tree
  4. RDMA/rtrs-srv: Fix integer underflow in process_read and process_write - kernel/git/stable/linux.git - Linux kernel stable tree
  5. RDMA/rtrs-srv: Fix integer underflow in process_read and process_write - kernel/git/stable/linux.git - Linux kernel stable tree
  6. CVEs — The Linux Kernel documentation

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


  • 25.09.2026 — Опубликована первая версия материала.
  • 26.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ