CVE: CVE-2026-72491
Продукт: Debian
Дата публикации: 15.08.2026
Критичность: не определена
CVSS: нет данных
EPSS: 0,22%; процентиль 12,77%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
CVE-2026-72491 описывает гонку состояний (race condition) в модуле транспорта RDMA для протокола 9P ядра Linux. Несоответствующая блокировка при изменении поля
rdma->state приводит к повреждению конечного автомата соединения и потенциальному использованию освобожденного указателя (use-after-free). В Debian уязвимость устранена обновлениями пакета linux для релизов bullseye, bookworm, trixie, forky и sid.Основные характеристики
Ошибка локализована в файле
net/9p/trans_rdma.c. Суть проблемы — нарушение правил захвата спин-блокировки req_lock. Функции recv_done() (контекст softirq) и p9_cm_event_handler() (обработчик событий CM) модифицируют поле rdma->state без блокировки, в то время как rdma_request() защищает доступ через spin_lock_irqsave. Это вызывает потерю переходов состояний: например, установка FLUSHING может быть перезаписана на CLOSING. Результат — коррупция состояния соединения и риск use-after-free при разборке объектов RDMA. Оценка EPSS составляет 0.22%.Какие продукты и версии затронуты
Затронут исходный пакет
linux в следующих релизах Debian:- Debian 11 (bullseye): версии ниже 5.10.262-1.
- Debian 12 (bookworm): версии ниже 6.1.180-1.
- Debian 13 (trixie): версии ниже 6.12.100-1.
- Debian forky: версии ниже 7.1.5-1.
- Debian sid: версии ниже 7.1.5-1.
Уязвимость проявляется только при использовании транспорта RDMA для протокола 9P.
Причина уязвимости
Причина — архитектурный дефект синхронизации в управлении состоянием соединения RDMA. Поле
rdma->state определяет статус соединения (ADDR_RESOLVED, ESTABLISHED, FLUSHING, CLOSED).Функция
rdma_request() корректно использует spin_lock_irqsave(&rdma->req_lock, flags) для защиты операций чтения-модификации-записи. Однако:recv_done()устанавливаетrdma->state = P9_RDMA_FLUSHINGв контексте завершения softirq без захватаreq_lock.
p9_cm_event_handler()изменяет состояние (например, на CLOSED) при обработке событий управления соединением, также без блокировки.
Отсутствие единого механизма блокировки для всех модификаторов создает классическую гонку данных.
Как работает атака
Эксплуатация требует создания условий для одновременного выполнения
rdma_request() и неблокированных функций (recv_done() или p9_cm_event_handler()).- Конкурентный доступ: Запрос
rdma_request()захватываетreq_lockи проверяет/изменяетrdma->state.
- Параллельная запись: В другом контексте (softirq или CM event handler) происходит запись нового значения (FLUSHING/CLOSED) без блокировки.
- Потеря перехода: Из-за отсутствия синхронизации, одна из записей перезаписывает другую. Например, переход в
FLUSHINGмолча заменяется наCLOSING.
- Коррупция состояния: Конечный автомат переходит в некорректное состояние, нарушая логику управления ресурсами.
- Use-After-Free: При разборке соединения (teardown) ядро может обратиться к уже освобожденным объектам запросов RDMA. Это приводит к повреждению памяти, возможному падению ядра (kernel panic) или, при благоприятных условиях, выполнению кода с привилегиями ядра.
Условия успешной эксплуатации
Для эксплуатации требуются:
- Локальный доступ: Возможность выполнять код на хосте с правами, позволяющими инициировать операции 9P RDMA.
- Активный транспорт RDMA: Ядро должно быть собрано с поддержкой 9P RDMA, и этот транспорт должен использоваться для соединений.
- Способность вызывать гонку: Генерация высокой нагрузки или точное таймирование запросов для совпадения выполнения
rdma_request()и обработчиков событий/завершений.
- Контроль памяти: Для успешного use-after-free и выполнения кода может потребоваться контроль над выделением памяти в ядре (heap spraying).
Возможный сценарий атаки
Сценарий предполагает локальную атаку на систему с активным 9P RDMA:
- Подготовка: Атакующий получает локальный доступ и подтверждает использование транспорта RDMA для 9P.
- Инициация: Монтируется удаленная файловая система через 9P RDMA или используется существующее соединение.
- Генерация нагрузки: Запускается интенсивный ввод-вывод, одновременно инициируя события разрыва или изменения состояния соединения.
- Спровоцирование гонки: Параллельное выполнение
rdma_request()иrecv_done()/p9_cm_event_handler()приводит к неконсистентностиrdma->state.
- Эксплуатация: При закрытии соединения поврежденное состояние вызывает обращение к освобожденной памяти. При подготовке памяти атакующий может перенаправить выполнение потока ядра.
- Результат: Повышение привилегий (root) или отказ в обслуживании (DoS).
Есть ли публичный эксплойт
Публичных эксплойтов (PoC) для CVE-2026-72491 не зафиксировано. В источниках упоминается только тестовый модуль ядра для верификации исправления, который имитирует гонку двух потоков. Этот модуль не является эксплойтом. Отсутствие публичных эксплойтов снижает риск массовых атак, но не устраняет угрозу.
Признаки эксплуатации
Специфичных индикаторов компрометации (IOC) нет. Общие признаки, которые могут косвенно указывать на эксплуатацию:
- Kernel Oops/Panic: Сообщения в
dmesgоб ошибках вtrans_rdma.c,9pили use-after-free.
- Аномалии сети: Внезапные разрывы соединений 9P RDMA или ошибки ввода-вывода.
- Перезагрузки: Необъяснимые падения системы.
Эти признаки неспецифичны. Для подтверждения требуется анализ дампов ядра и проверка версий пакетов.
Как обнаружить атаку
Основной метод обнаружения — проверка версии пакета
linux.Для мониторинга потенциальной эксплуатации:
- Анализ логов: Регулярно проверяйте
dmesgна ошибки в подсистеме 9P или RDMA.
Bash:dmesg | grep -E "(9p|rdma|trans_rdma)" - Контроль целостности: Используйте AIDE или Tripwire для отслеживания изменений в бинарных файлах ядра.
- Проверка обновлений: Убедитесь, что система получила последние обновления безопасности.
Прямое обнаружение попытки эксплуатации в реальном времени затруднено.
Как проверить свою версию
Проверьте версию дистрибутива:
Bash:
cat /etc/debian_version
Проверьте версию установленного пакета ядра:
Bash:
dpkg-query -W -f='${Package} ${Version}\n' linux-image-$(uname -r)
Или:
Bash:
apt-cache policy linux
Сравните с исправленными версиями:
- bookworm: >= 6.1.180-1
- bullseye: >= 5.10.262-1
- trixie: >= 6.12.100-1
- forky: >= 7.1.5-1
- sid: >= 7.1.5-1
Если версия ниже, система уязвима.
Исправление
Обновите пакет
linux до исправленной версии:- Обновите списки пакетов:
Bash:sudo apt update - Установите обновления:
Bash:sudo apt upgrade
Или конкретно для ядра:
Bash:sudo apt install linux-image-$(uname -r) - Перезагрузите систему:
Bash:sudo reboot
Исправления доступны во всех поддерживаемых ветках Debian через репозитории безопасности.
Временные меры защиты
До обновления рассмотрите временные меры:
- Отключение 9P RDMA: Если возможно, используйте другой транспорт (virtio, tcp) для 9P. В конфигурации ядра отключите
CONFIG_NET_9P_RDMA.
- Ограничение доступа: Ограничьте возможности локальных пользователей монтировать файловые системы через 9P.
- Снижение нагрузки: Избегайте высоких нагрузок на 9P RDMA соединения.
Эти меры не устраняют уязвимость полностью.
Как проверить устранение уязвимости
После обновления и перезагрузки:
- Проверьте версию ядра:
Bash:uname -r
Убедитесь, что версия соответствует или превышает исправленную.
- Проверьте статус пакета:
Bash:dpkg-query -W -f='${Package} ${Version}\n' linux-image-$(uname -r) - Проверьте логи на ошибки:
Bash:dmesg | grep -E "(9p|rdma)"
Отсутствие ошибок, связанных сtrans_rdma, является хорошим признаком.
Вывод
CVE-2026-72491 — уязвимость в ядре Linux, затрагивающая 9P RDMA. Несмотря на низкую оценку EPSS, потенциальный use-after-free делает ее значимой для систем с активным использованием 9P RDMA. В Debian проблема решена обновлениями для всех поддерживаемых веток. Администраторам рекомендуется немедленно обновить пакеты ядра. Временные меры, такие как отключение 9P RDMA, могут снизить риск до момента обновления.
Официальные источники
История обновлений статьи
- 17.08.2026 — Опубликована первая версия материала.
