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 в двух ключевых функциях:
- recv_done(): выполняется в контексте завершения softirq и устанавливает состояние P9_RDMA_FLUSHING.
- 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) или, при благоприятных условиях, к выполнению произвольного кода с правами ядра.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости требуются следующие условия:
- Использование транспорта RDMA для протокола 9P: система должна быть настроена на использование RDMA для обмена данными по 9P.
- Доступ к инициации соединений 9P: атакующий должен иметь возможность инициировать или манипулировать сетевыми соединениями 9P через RDMA.
- Возможность синхронизации: атакующий должен иметь возможность генерировать нагрузку или события, которые увеличивают вероятность возникновения гонки состояний между rdma_request, recv_done и p9_cm_event_handler.
Без использования транспорта RDMA для 9P уязвимость неактивна.
Возможный сценарий атаки
Типичный сценарий атаки может выглядеть следующим образом:
- Атакующий устанавливает соединение 9P через RDMA с уязвимым хостом Debian.
- Атакующий начинает интенсивную передачу данных или инициирует множество запросов, чтобы загрузить канал RDMA и увеличить частоту вызовов rdma_request().
- Одновременно атакующий пытается спровоцировать события завершения приема (recv_done) или изменения состояния соединения (например, путем манипуляции с сетевыми пакетами или таймаутами), чтобы активировать p9_cm_event_handler().
- В момент, когда rdma_request() находится в критической секции (под блокировкой req_lock) и проверяет состояние, recv_done() или обработчик событий изменяет rdma->state без блокировки.
- Происходит потеря перехода состояния: например, состояние FLUSHING перезаписывается CLOSING.
- Ядро переходит в некорректное состояние машины состояний, что приводит к преждевременному освобождению объектов запросов RDMA.
- Последующие попытки доступа к этим освобожденным объектам вызывают 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, если включено).
Эти признаки неспецифичны и могут быть вызваны другими причинами, поэтому требуют дополнительного анализа.
Как обнаружить атаку
Для обнаружения потенциальной эксплуатации или наличия уязвимости рекомендуется:
- Проверка версии ядра: убедиться, что установленная версия ядра соответствует исправленной версии для вашего релиза Debian.
- Мониторинг логов ядра: отслеживать сообщения в dmesg на предмет ошибок, связанных с 9P, RDMA или use-after-free.
- Анализ сетевой активности: фиксировать аномальную активность на портах, используемых для 9P/RDMA.
- Использование инструментов аудита: применять инструменты для проверки целостности ядра и обнаружения аномалий в работе системных вызовов.
Регулярное обновление системы является основным методом предотвращения эксплуатации.
Как проверить свою версию
Для проверки версии установленного ядра 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
После обновления необходимо перезагрузить систему для загрузки исправленного ядра.
Временные меры защиты
До применения исправлений можно рассмотреть следующие временные меры:
- Отключение транспорта RDMA для 9P: если использование RDMA для 9P не является критически важным, отключите его в конфигурации системы. Это устранит вектор атаки.
- Ограничение доступа к сети 9P: настройте брандмауэр для ограничения доступа к портам, используемым для 9P/RDMA, только доверенным источникам.
- Изоляция хостов: изолируйте хосты, использующие 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, могут снизить риск до момента обновления.
Официальные источники
История обновлений статьи
- 17.08.2026 — Опубликована первая версия материала.
- 18.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
