CVE: CVE-2026-98323
Продукт: Linux Kernel
Дата публикации: 06.10.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,56%; процентиль 44,76%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В подсистеме RDMA/siw (Software iWARP) ядра Linux исправлена ошибка в функции
siw_get_hdr(), приводящая к записи за пределами буфера (OOB write) при обработке расширенного DDP/RDMAP-заголовка, фрагментированного между несколькими TCP-колбэками.Ошибка затрагивает приёмный путь QP и может нарушать состояние приёма, включая поле
fpdu_part_rcvd. Официальное описание присвоено рейтинг CVSS 9.8 (Critical), однако сведения о подтверждённой эксплуатации в дикой природе в доступных источниках отсутствуют.Основные характеристики
Суть риска: при определённой фрагментации входящих TCP-данных ядро копирует больше байтов заголовка, чем осталось принять, и повреждает служебное состояние приёма, что ведёт к записи за границами буфера в памяти ядра.
Ключевые параметры:
- Тип ошибки: выход записи за границы буфера (OOB write) в приёмном пути RDMA/siw; CWE-идентификаторы в записи NVD не указаны.
- Компонент:
drivers/infiniband/sw/siw/siw_qp_rx.c, функцияsiw_get_hdr().
- CVSS 3.1: 9.8, Critical, вектор
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H— атака сетевая, без привилегий и взаимодействия с пользователем, с высоким влиянием на конфиденциальность, целостность и доступность.
- EPSS: 0,56% (0.00559), процентиль 44,76% — расчётная вероятность эксплуатации в ближайшие 30 дней невысока.
- CISA KEV: в каталоге не значится; подтверждений эксплуатации в реальных атаках нет.
- Статус записи NVD: Received — запись опубликована 06.10.2026 и ещё проходит аналитическую обработку.
Какие продукты и версии затронуты
Уязвимость находится в подсистеме RDMA/siw (Software iWARP) ядра Linux — программной реализации iWARP RDMA в файле
drivers/infiniband/sw/siw/siw_qp_rx.c.Точный перечень затронутых версий ядра в записи NVD не приведён: список affected пуст, CPE-совпадения отсутствуют. Косвенный ориентир — строка
Fixes: в патче: проблема внесена коммитом 754209850df8 («RDMA/siw: Always consume all skbuf data in sk_data_ready() upcall.»), поэтому уязвимы ветки ядра, содержащие этот коммит и не содержащие исправление 9ff797e516dbc1ecb73701ec4c24055712d44411.Исправление бэкпортировано в несколько стабильных ветвей ядра. Конкретные номера релизов стабильных ветвей в переданных источниках не раскрыты.
Причина уязвимости
Функция
siw_get_hdr() собирает заголовок DDP/RDMAP входящего iWARP-пакета по частям: данные могут поступать в нескольких TCP-колбэках (sk_data_ready), и каждый вызов дописывает очередную порцию байтов в буфер заголовка.Ошибка в расчёте длины копирования. Для расширенных заголовков (когда
iwarp_pktinfo[opcode].hdr_len > sizeof(struct iwarp_ctrl_tagged)) код ограничивал копирование выражением hdrlen - MIN_DDP_HDR вместо количества ещё недостающих байтов. Если первый колбэк уже доставил большую часть заголовка, следующая копия выходит за конец буфера заголовка.В результате перезаписывается состояние приёма потока, включая счётчик
fpdu_part_rcvd — число уже принятых байтов заголовка. При последующем колбэке это повреждённое (в том числе отрицательное) значение используется как смещение при копировании, что и порождает запись за пределами буфера (OOB write).Исправление сводится к одной строке:
bytes = min_t(int, hdrlen - srx->fpdu_part_rcvd, srx->skb_new); — длина следующей порции теперь вычисляется от фактически принятого количества байтов заголовка.Как работает атака
Путь данных: удалённый участник отправляет TCP-сегменты на порт, обслуживаемый siw-соединением (Software iWARP). Входящие байты обрабатываются приёмным путём QP, где
siw_get_hdr() накапливает заголовок DDP/RDMAP по частям между колбэками сокета.Нарушенная проверка: при получении расширенного заголовка код вычисляет длину следующей копии как
hdrlen - MIN_DDP_HDR, игнорируя то, сколько байтов заголовка уже лежит в буфере (fpdu_part_rcvd). Если первый колбэк доставил почти весь заголовок, вторая копия записывает байты за его концом.Развитие ошибки: перезапись затрагивает состояние приёма, включая
fpdu_part_rcvd. Отрицательное значение этого счётчика затем применяется как смещение в skb_copy_bits(), что даёт запись за границами буфера в памяти ядра.Границы знаний: доступные источники описывают механику ошибки на уровне патча. Конкретные последствия (эскалация привилегий, отказ в обслуживании, утечка памяти) в них не подтверждены — высокий рейтинг CVSS отражает формальную оценку по вектору, а не продемонстрированный результат эксплуатации.
Условия успешной эксплуатации
Подтверждённые из описания уязвимости условия:
- система должна использовать подсистему RDMA/siw (Software iWARP) с активным приёмным соединением;
- атакующий должен иметь возможность доставлять TCP-данные на siw-эндпоинт, управляя фрагментацией потока так, чтобы расширенный DDP/RDMAP-заголовок оказался разбит между несколькими колбэками;
- заголовок должен быть расширенным, то есть его длина должна превышать
sizeof(struct iwarp_ctrl_tagged).
Дополнительные условия (настройка siw, доступность порта, сетевая достижимость) в переданных источниках детально не раскрыты. По вектору CVSS атака сетевая и не требует привилегий или участия пользователя, однако практическая достижимость зависит от конфигурации конкретной системы.
Возможный сценарий атаки
Разумный сценарий, следующий из описания патча (как защитный вывод, а не подтверждённая атака): атакующий устанавливает TCP-соединение с siw-эндпоинтом и отправляет поток данных, в котором расширенный заголовок DDP/RDMAP намеренно фрагментирован — большая часть заголовка попадает в первый колбэк, остаток — в следующий.
На втором колбэке из-за неверного расчёта длины копирования байты записываются за конец буфера заголовка и повреждают состояние приёма, включая
fpdu_part_rcvd.На последующем колбэке повреждённое значение используется как отрицательное смещение копирования, что приводит к записи за границами буфера в ядре. Практический результат такой записи (крах, эскалация привилегий или иное) источниками не подтверждён.
Есть ли публичный эксплойт
Сведений о публичном PoC-коде, техническом разборе с готовым эксплойтом или подтверждённой эксплуатации в реальных атаках в переданных источниках нет. Отсутствие таких сведений не означает отсутствие эксплойта: запись NVD имеет статус Received и аналитика ещё неполна, EPSS (0,56%) — лишь вероятностная оценка. В каталоге CISA KEV уязвимость не значится.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости в доступных источниках не опубликованы. Ниже — общие, неспецифичные точки контроля, которые могут помочь в первичной проверке:
- журналы ядра (
dmesg,journalctl -k) на предмет сообщений подсистемы siw, oops/BUG/KASAN-отчётов о записи за границами буфера;
- неожиданные падения или перезапуски ядра на хостах с активной подсистемой siw;
- аномальные TCP-сессии к портам siw-эндпоинтов с необычной фрагментацией данных.
Совпадение с этими признаками само по себе не доказывает эксплуатацию именно CVE-2026-98323.
Как обнаружить атаку
Прямых правил обнаружения, специфичных для CVE-2026-98323, в переданных источниках нет. Рекомендуемые общие проверки:
- просмотр журналов ядра на хостах с загруженным модулем siw:
journalctl -k | grep -i siw, а также поиск сообщений об ошибках памяти (KASAN, slab-out-of-bounds, BUG, oops);
- инвентаризация хостов, где используется Software iWARP (загружен модуль
siw, настроены RDMA-устройства), и приоритизация их для обновления;
- сетевой контроль подключений к siw-эндпоинтам из недоверенных сегментов.
Эти меры не являются детектированием конкретной атаки и не заменяют установку исправления.
Как проверить свою версию
Точный список затронутых версий в NVD не опубликован, поэтому проверка версии даёт лишь ориентир. На целевом хосте выполните:
Bash:
uname -r
uname -a
cat /proc/version
Полученную версию ядра сверьте с перечнем исправленных релизов вашего дистрибутива. Дополнительно можно проверить, загружен ли уязвимый компонент:
Bash:
lsmod | grep siw
Если модуль
siw не используется, экспозиция через эту подсистему маловероятна; окончательный вывод о наличии исправления делайте по данным пакета ядра дистрибутива.Исправление
Основная мера — обновить ядро Linux до версии, содержащей исправление. Апстрим-патч: коммит
9ff797e516dbc1ecb73701ec4c24055712d44411 («RDMA/siw: Bound fragmented header copies by the remaining length», файл drivers/infiniband/sw/siw/siw_qp_rx.c).Патч бэкпортирован в стабильные ветви ядра; соответствующие коммиты в стабильном дереве:
262dcd809723723ed8a4e05437ec7e9c21a8f17e
2c6fbcf4bfac0b2b186acc8d91154c0fa24468a7
8628f8ebf41669302513fb3f0bf0eba38b226742
af9f5b474a260ad23ffb9793d716a5e3bbce3b48
b72dcfb9bf1f0f0147cda03dc59e4002a315067f
e6bdfdf3bcb02d0d626a45e8c98b7e63d2fddf9d
eb4d7a946970469b3ab0c762432bf161d5b0836c
На практике установите обновление ядра из репозитория вашего дистрибутива, содержащее этот фикс, и перезагрузите систему, чтобы работало исправленное ядро. Конкретные номера пакетов дистрибутивов в переданных источниках не приведены.
Временные меры защиты
Если немедленное обновление ядра невозможно, снизить экспозицию можно ограничением доступа к siw-эндпоинтам:
- выгрузить модуль
siwили отключить Software iWARP, если подсистема не используется (modprobe -r siw— при отсутствии активных RDMA-соединений);
- ограничить сетевой доступ к портам siw-эндпоинтов средствами межсетевого экрана, разрешив подключения только доверенным узлам;
- изолировать хосты с активным siw в доверенном сетевом сегменте.
Это временные организационно-технические меры, а не исправление: они не устраняют дефект кода. Оценку применимости каждой меры выполняйте с учётом роли RDMA в вашей инфраструктуре.
Как проверить устранение уязвимости
После обновления и перезагрузки убедитесь, что работает исправленное ядро:
Bash:
uname -r
cat /proc/version
Сверьте версию с перечнем исправленных пакетов вашего дистрибутива. Дополнительно проверьте, что в собранном ядре присутствует исправленный код (коммит
9ff797e516dbc1ecb73701ec4c24055712d44411 или его бэкпорт из списка выше), например через журнал изменений пакета ядра дистрибутива. Если модуль siw был выгружен как временная мера, после обновления решите, требуется ли его повторное включение с учётом сетевых ограничений.Вывод
CVE-2026-98323 — дефект приёма заголовков в Software iWARP (RDMA/siw) ядра Linux, приводящий к записи за границами буфера при фрагментации расширенного DDP/RDMAP-заголовка между TCP-колбэками. Формальная оценка CVSS 9.8 высока, но практическая опасность ограничена условиями: атакующий должен доставлять управляемо фрагментированный TCP-поток на siw-эндпоинт, а подтверждений эксплуатации пока нет (EPSS 0,56%, в KEV отсутствует).
Приоритет действий: инвентаризировать хосты с активным siw, установить обновление ядра с фикс
9ff797e516dbc1ecb73701ec4c24055712d44411 (или его бэкпорт) и перезагрузить систему. Для остальных хостов риск через эту подсистему не подтверждён.Официальные источники
- NVD — CVE-2026-98323
- FIRST EPSS — CVE-2026-98323
- RDMA/siw: Bound fragmented header copies by the remaining length - kernel/git/stable/linux.git - Linux kernel stable tree
- RDMA/siw: Bound fragmented header copies by the remaining length - kernel/git/stable/linux.git - Linux kernel stable tree
- RDMA/siw: Bound fragmented header copies by the remaining length - kernel/git/stable/linux.git - Linux kernel stable tree
- RDMA/siw: Bound fragmented header copies by the remaining length - kernel/git/stable/linux.git - Linux kernel stable tree
- RDMA/siw: Bound fragmented header copies by the remaining length - kernel/git/stable/linux.git - Linux kernel stable tree
- RDMA/siw: Bound fragmented header copies by the remaining length - kernel/git/stable/linux.git - Linux kernel stable tree
- RDMA/siw: Bound fragmented header copies by the remaining length - kernel/git/stable/linux.git - Linux kernel stable tree
- RDMA/siw: Bound fragmented header copies by the remaining length - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 08.10.2026 — Опубликована первая версия материала.
