CVE-2026-72491 в Debian: race condition в 9P RDMA

CVE: CVE-2026-72491
Продукт: Debian
Дата публикации: 15.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,73%; процентиль 51,37%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В подсистеме транспорта RDMA для протокола 9P ядра Linux выявлена гонка состояний при управлении полем rdma->state. Непоследовательное использование блокировки req_lock в функциях recv_done() и p9_cm_event_handler() приводит к потере переходов состояний и повреждению машины состояний соединения. Это может вызвать use-after-free объектов запросов RDMA при разборе соединения. Уязвимость затрагивает Debian 11 (Bullseye), 12 (Bookworm), 13 (Trixie), Sid и Forky. Исправления доступны в репозиториях безопасности.

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


Уязвимость имеет критический уровень опасности (CVSS 9.8). Она локализована в файле net/9p/trans_rdma.c. Основная проблема заключается в нарушении правил синхронизации доступа к общему ресурсу — полю состояния соединения RDMA. Функции recv_done() (контекст softirq) и p9_cm_event_handler() модифицируют rdma->state без захвата спин-блокировки req_lock, в то время как rdma_request() защищает доступ к этому полю с помощью spin_lock_irqsave. Это несоответствие создает условия для гонки данных, потери переходов состояний (например, перезапись FLUSHING на CLOSING) и последующего use-after-free.

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


Уязвимость затрагивает пакет linux в следующих версиях Debian:

  • Debian 11 (Bullseye): версии ядра до 5.10.262-1.
  • Debian 12 (Bookworm): версии ядра до 6.1.180-1.
  • Debian 13 (Trixie): версии ядра до 6.12.100-1.
  • Debian Sid: версии ядра до 7.1.5-1.
  • Debian Forky: версии ядра до 7.1.5-1.

Системы уязвимы, если в них активирована поддержка транспорта RDMA для протокола 9P.

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


Причиной уязвимости является некорректная реализация синхронизации в драйвере транспорта RDMA для 9P. Поле rdma->state, отвечающее за отслеживание состояния соединения, модифицируется без захвата блокировки req_lock в двух ключевых функциях:

  1. recv_done(): выполняется в контексте завершения softirq и устанавливает состояние P9_RDMA_FLUSHING.
  2. p9_cm_event_handler(): обрабатывает события управления соединением (CM) и изменяет состояние на ADDR_RESOLVED, ROUTE_RESOLVED, ESTABLISHED или CLOSED.

Функция rdma_request() корректно использует spin_lock_irqsave(&rdma->req_lock, flags) для защиты чтения и модификации этого поля. Из-за отсутствия блокировки в первых двух функциях возникает гонка данных: одновременная запись из контекста softirq или обработчика событий может перезаписать состояние, установленное под блокировкой в rdma_request(). Это приводит к потере критических переходов состояний, разрушению логики машины состояний соединения и потенциальному use-after-free.

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


Механизм эксплуатации основан на провоцировании гонки состояний (race condition) в ядре. Для возникновения уязвимости требуется одновременное выполнение операций отправки запросов (rdma_request) и завершения приема данных (recv_done) или изменения состояния соединения (p9_cm_event_handler).

Когда rdma_request() проверяет или изменяет состояние под блокировкой, параллельно выполняющийся recv_done() или обработчик событий может изменить rdma->state без блокировки. Если состояние FLUSHING (установленное recv_done) перезаписывается состоянием CLOSING (установленным обработчиком событий) в момент, когда rdma_request() ожидает завершения фазы сброса, машина состояний переходит в некорректное состояние.

Это повреждение состояния приводит к тому, что объекты запросов RDMA могут быть освобождены (freed) в процессе разбора соединения (teardown), в то время как другие части кода ядра продолжают ссылаться на них. Результатом становится use-after-free: доступ к освобожденной памяти, что может привести к падению ядра (DoS) или, при благоприятных условиях, к выполнению произвольного кода с правами ядра.

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


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

  1. Использование транспорта RDMA для протокола 9P: система должна быть настроена на использование RDMA для обмена данными по 9P.
  2. Доступ к инициации соединений 9P: атакующий должен иметь возможность инициировать или манипулировать сетевыми соединениями 9P через RDMA.
  3. Возможность синхронизации: атакующий должен иметь возможность генерировать нагрузку или события, которые увеличивают вероятность возникновения гонки состояний между rdma_request, recv_done и p9_cm_event_handler.

Без использования транспорта RDMA для 9P уязвимость неактивна.

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


Типичный сценарий атаки может выглядеть следующим образом:

  1. Атакующий устанавливает соединение 9P через RDMA с уязвимым хостом Debian.
  2. Атакующий начинает интенсивную передачу данных или инициирует множество запросов, чтобы загрузить канал RDMA и увеличить частоту вызовов rdma_request().
  3. Одновременно атакующий пытается спровоцировать события завершения приема (recv_done) или изменения состояния соединения (например, путем манипуляции с сетевыми пакетами или таймаутами), чтобы активировать p9_cm_event_handler().
  4. В момент, когда rdma_request() находится в критической секции (под блокировкой req_lock) и проверяет состояние, recv_done() или обработчик событий изменяет rdma->state без блокировки.
  5. Происходит потеря перехода состояния: например, состояние FLUSHING перезаписывается CLOSING.
  6. Ядро переходит в некорректное состояние машины состояний, что приводит к преждевременному освобождению объектов запросов RDMA.
  7. Последующие попытки доступа к этим освобожденным объектам вызывают use-after-free, что может привести к краху ядра или выполнению кода атакующего.

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


На момент публикации официальных данных, публично доступных эксплойтов или proof-of-concept (PoC) кода для CVE-2026-72491 не зафиксировано. Однако, учитывая критический уровень опасности (CVSS 9.8) и природу уязвимости (use-after-free в ядре), вероятность появления эксплойтов в будущем высока. Отсутствие публичного эксплойта не означает отсутствие риска эксплуатации в закрытых средах или целевых атаках.

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


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

  • Нестабильность системы: частые падения ядра (kernel panic) или зависания, особенно при высокой нагрузке на сеть 9P/RDMA.
  • Аномальное поведение процессов: появление процессов с некорректными правами доступа или выполнение кода в контексте ядра.
  • Логи ядра: сообщения об ошибках в dmesg, связанные с 9P, RDMA или use-after-free (например, KASAN reports, если включено).

Эти признаки неспецифичны и могут быть вызваны другими причинами, поэтому требуют дополнительного анализа.

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


Для обнаружения потенциальной эксплуатации или наличия уязвимости рекомендуется:

  1. Проверка версии ядра: убедиться, что установленная версия ядра соответствует исправленной версии для вашего релиза Debian.
  2. Мониторинг логов ядра: отслеживать сообщения в dmesg на предмет ошибок, связанных с 9P, RDMA или use-after-free.
  3. Анализ сетевой активности: фиксировать аномальную активность на портах, используемых для 9P/RDMA.
  4. Использование инструментов аудита: применять инструменты для проверки целостности ядра и обнаружения аномалий в работе системных вызовов.

Регулярное обновление системы является основным методом предотвращения эксплуатации.

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


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

Bash:
cat /etc/debian_version
cat /etc/os-release

Для проверки версии конкретного пакета ядра (например, linux-image) используйте:

Bash:
apt-cache policy linux-image-amd64
dpkg-query -W -f='${Package} ${Version}\n' linux-image-amd64

Замените linux-image-amd64 на имя пакета, соответствующего вашей архитектуре (например, linux-image-arm64 для ARM). Сравните полученную версию с исправленными версиями, указанными в разделе Remediation.

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


Исправление уязвимости CVE-2026-72491 доступно в репозиториях безопасности Debian. Необходимо обновить пакет linux до следующих версий:

  • Debian 11 (Bullseye): обновить до версии 5.10.262-1 или выше.
  • Debian 12 (Bookworm): обновить до версии 6.1.180-1 или выше.
  • Debian 13 (Trixie): обновить до версии 6.12.100-1 или выше.
  • Debian Sid: обновить до версии 7.1.5-1 или выше.
  • Debian Forky: обновить до версии 7.1.5-1 или выше.

Для обновления выполните:

Bash:
sudo apt update
sudo apt upgrade linux-image-amd64

После обновления необходимо перезагрузить систему для загрузки исправленного ядра.

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


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

  1. Отключение транспорта RDMA для 9P: если использование RDMA для 9P не является критически важным, отключите его в конфигурации системы. Это устранит вектор атаки.
  2. Ограничение доступа к сети 9P: настройте брандмауэр для ограничения доступа к портам, используемым для 9P/RDMA, только доверенным источникам.
  3. Изоляция хостов: изолируйте хосты, использующие 9P/RDMA, от ненадежных сетей.

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

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


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

Bash:
uname -r

Убедитесь, что версия ядра соответствует или превышает исправленную версию для вашего релиза Debian. Также проверьте отсутствие ошибок, связанных с 9P или RDMA, в логах ядра:

Bash:
dmesg | grep -i "9p\|rdma\|use-after-free"

Отсутствие ошибок и соответствие версии ядра подтверждают успешное применение исправления.

Вывод​


CVE-2026-72491 представляет собой критическую уязвимость в подсистеме 9P транспорта RDMA ядра Linux, позволяющую вызвать use-after-free и потенциально выполнить код с привилегиями ядра. Уязвимость затрагивает несколько версий Debian, включая стабильные релизы. Исправления уже доступны в репозиториях безопасности. Рекомендуется немедленно обновить системы до исправленных версий ядра. Временные меры, такие как отключение RDMA для 9P, могут снизить риск до момента обновления.

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


  1. NVD — CVE-2026-72491
  2. Debian Security Tracker — CVE-2026-72491
  3. FIRST EPSS — CVE-2026-72491

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


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