CVE: CVE-2026-93830
Продукт: Linux Kernel
Дата публикации: 24.09.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: нет данных; процентиль нет данных
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
Проблема CVE-2026-93830 затрагивает драйвер XGMAC2 в подсистеме net/stmmac ядра Linux. Включение прерывания RX Buffer Unavailable (RBUE) по умолчанию приводит к шторму MAC-прерываний при высокой нагрузке на приём.
На Agilex5 зафиксировано соотношение 1,821,811,555 срабатываний прерывания MAC против 2,618,627 фактических RX-completions. Это соответствует коэффициенту примерно 695:1.
Исправление удаляет RBUE из по умолчанию включённых масок XGMAC_DMA_INT_DEFAULT_EN и XGMAC_DMA_INT_DEFAULT_RX.
Основные характеристики
Риск связан с перегрузкой прерываний в сетевом драйвере XGMAC2 при интенсивном трафике на вход. Система может потерять производительность из-за непрерывного срабатывания RBUE, когда DMA не успевает пополнять ring buffer.
- Тип ошибки: логический дефект конфигурации прерываний в драйвере Ethernet; CVE-вектор указывает на высокий уровень влияния на доступность:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H.
- CVSS: 7.5 (HIGH), версия 3.1.
- Условие атаки: наличие XGMAC2-устройства с включённым RBUE по умолчанию и высокая нагрузка на приём, либо истощение page_pool.
- Факт эксплуатации: в источниках нет данных о подтверждённой эксплуатации; есть описание механизма и исправление.
- EPSS: данные отсутствуют.
Какие продукты и версии затронуты
Затронут драйвер XGMAC2 в Linux Kernel.
- Компонент:
drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h.
- Файл изменения:
dwxgmac2.h, два символа изменены: удалёнXGMAC_RBUEизXGMAC_DMA_INT_DEFAULT_ENиXGMAC_DMA_INT_DEFAULT_RX.
- Версии ядра: в источниках не указаны конкретные диапазоны версий; CVE привязан к коммитам stable tree, а не к номеру релиза.
- Платформа Agilex5: подтверждено наблюдение шторма прерываний именно на этой платформе.
Причина уязвимости
Включённое по умолчанию прерывание RBUE избыточно и вредно при высокой нагрузке на приём.
Когда DMA исчерпывает RX-дескрипторы, RBUE срабатывает непрерывно до тех пор, пока программное обеспечение не пополнит ring. При этом обычное прерывание завершения RX (RIE) уже запускает NAPI, который обрабатывает завершённые дескрипторы и пополняет ring, возвращая DMA в работу.
Обработчик RBUE фактически делает то же самое: устанавливает
handle_rx, что совпадает с результатом RIE. Таким образом, RBUE не даёт дополнительной ценности, а при истощении page_pool создаёт шторм без прогресса: stmmac_rx_refill() не может сдвинуть указатель DMA tail pointer, DMA остаётся в подвешенном состоянии, и RBUE снова срабатывает на следующем NAPI-completion.Исправление убирает RBUE из по умолчанию включённых масок прерываний, оставляя нормальную обработку RX через RIE.
Как работает атака
Механизм не требует внешнего сетевого входа в ядро; нагрузка создаётся на уровне сетевой подсистемы.
При высокой нагрузке на приём DMA быстро расходует RX-дескрипторы. RBUE срабатывает многократно, пока ring buffer не пополнится. В условиях истощения page_pool пополнение не происходит, и прерывание продолжает срабатывать бесконечно.
На Agilex5 зафиксировано 1,821,811,555 срабатываний MAC-прерывания против 2,618,627 фактических RX-completions. Это означает, что каждое реальное завершение RX сопровождается примерно 695 ложными прерываниями.
В результате CPU и прерывательная подсистема загружаются лишней работой, а сетевая обработка может деградировать или остановиться.
Условия успешной эксплуатации
Для проявления проблемы необходимы следующие условия:
- Наличие XGMAC2-устройства в системе с драйвером из затронутых версий Linux Kernel.
- Высокая нагрузка на приём трафика, достаточная для исчерпания RX-дескрипторов.
- Включение RBUE по умолчанию, что было фактом до исправления.
- Истощение page_pool усиливает эффект: DMA не может возобновить работу, и шторм прерываний продолжается без прогресса.
- Платформа Agilex5 подтверждена как среда, где зафиксирован шторм с коэффициентом 695:1.
Возможный сценарий атаки
Сценарий описывает деградацию производительности, а не компрометацию данных или привилегий.
Система с XGMAC2-интерфейсом работает под нагрузкой. Приёмный трафик создаёт давление на DMA и ring buffer. RBUE начинает срабатывать многократно, перегружая прерывательную систему.
Если page_pool исчерпан,
stmmac_rx_refill() не может продвинуть tail pointer, DMA остаётся в подвешенном состоянии. RBUE продолжает срабатывать на каждом NAPI-completion, создавая бесконечный цикл без обработки трафика.Результат: сетевой интерфейс перестаёт эффективно обрабатывать входящий трафик, система теряет доступность для сетевых задач.
Есть ли публичный эксплойт
В предоставленных источниках нет данных о публичном эксплойте, PoC или подтверждённой эксплуатации CVE-2026-93830.
Исправление представлено в виде коммитов stable tree с полным дифом. Механизм шторма прерываний описан детально и воспроизводим по описанию: высокая нагрузка на приём + XGMAC2 + включённый RBUE по умолчанию.
Отсутствие сведений об эксплойте не означает, что проблема не может быть использована для деградации производительности. Механизм подтверждён наблюдением на Agilex5.
Признаки эксплуатации
Специфичных IOC для CVE-2026-93830 в источниках нет.
Неспецифичные точки контроля:
- Аномальный рост числа прерываний MAC на XGMAC2-устройствах при высокой нагрузке на приём.
- Высокое соотношение срабатываний прерывания к фактическим RX-completions, например коэффициент 695:1, зафиксированный в источниках.
- Застой DMA при истощении page_pool и непрерывном срабатывании RBUE.
- Общее снижение производительности сетевых интерфейсов без явной внешней атаки.
Как обнаружить атаку
Для обнаружения проблемы используйте мониторинг прерываний и сетевых счётчиков.
- Счётчик
rx_buf_unav_irqчерез ethtool: после исправления на XGMAC2 устройствах он всегда читает 0. До исправления значение могло быть ненулевым при шторме.
- Мониторинг прерываний в
/proc/interruptsили аналогичных интерфейсах: рост числа срабатываний MAC-прерывания на XGMAC2.
- Сравнение RX-completions и прерываний: коэффициент, значительно превышающий 1, указывает на избыточные прерывания.
- Проверка page_pool через
cat /proc/net/page_poolили аналогичные механизмы: истощение pool усиливает шторм.
Как проверить свою версию
Команды проверки версии ядра:
Bash:
uname -r
Bash:
uname -a
Bash:
cat /proc/version
Для проверки наличия исправления в драйвере XGMAC2:
Bash:
grep -A 3 "XGMAC_DMA_INT_DEFAULT_EN" /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h
Bash:
grep -A 3 "XGMAC_DMA_INT_DEFAULT_RX" /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h
Если в строках
XGMAC_RBUE отсутствует, исправление применено. Если присутствует — проблема не устранена.Для проверки ethtool-счётчика:
Bash:
ethtool -S <имя-интерфейса> | grep rx_buf_unav_irq
Замените
<имя-интерфейса> на фактическое имя сетевого интерфейса, например eth0 или enp1s0.Исправление
Исправление представляет собой коммиты в Linux Kernel stable tree.
- Upstream commit: d3265c19b35d036bba327b36b5366bee76b0157c.
- Stable commit 1: 0b1a5d3647ce07c27a9fffefc11a8cbf7d7b25ce.
- Stable commit 2: 87e2826ed2058747ddf014c082569a46bfadd96b.
Исправление удаляет
XGMAC_RBUE из:XGMAC_DMA_INT_DEFAULT_EN
XGMAC_DMA_INT_DEFAULT_RX
В результате RBUE не включается по умолчанию, и шторм прерываний предотвращён.
Для систем с XGMAC2 устройствами обновите Linux Kernel до версии, содержащей эти коммиты. Если обновление ядра невозможно в краткосрочной перспективе, рассмотрите временные меры.
Временные меры защиты
Временные меры:
- Ограничение нагрузки на приём трафика на XGMAC2-интерфейсах до уровня, при котором RX-дескрипторы не исчерпываются.
- Мониторинг page_pool: следите за истощением pool и увеличивайте его размер, если это поддерживается конфигурацией.
- Отключение XGMAC2 устройств на критичных интерфейсах, если это допустимо архитектурно.
- Переход на другой сетевой драйвер, если устройство поддерживает альтернативный driver без RBUE по умолчанию.
Как проверить устранение уязвимости
После обновления ядра проверьте:
- Наличие исправления в исходниках драйвера:
Bash:
grep -A 3 "XGMAC_DMA_INT_DEFAULT_EN" /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h
Убедитесь, что
XGMAC_RBUE отсутствует в строке.- Проверка ethtool-счётчика:
Bash:
ethtool -S <имя-интерфейса> | grep rx_buf_unav_irq
После исправления значение должно быть 0 на XGMAC2 устройствах.
- Наблюдение за прерываниями под нагрузкой: убедитесь, что коэффициент срабатываний MAC-прерывания к RX-completions близок к 1.
- Проверка версии ядра:
Bash:
uname -r
Сравните версию с списком релизов, содержащих исправление.
Вывод
CVE-2026-93830 — это логический дефект в драйвере XGMAC2, который приводит к шторму прерываний при высокой нагрузке на приём. Проблема не связана с компрометацией данных или привилегий, но вызывает деградацию доступности сетевых интерфейсов.
Исправление простое: удаление RBUE из по умолчанию включённых масок прерываний. Для систем с XGMAC2 устройствами обновление ядра до версии, содержащей коммиты stable tree, устраняет проблему.
Если обновление невозможно, ограничьте нагрузку на приём и мониторьте page_pool. Специфичных IOC нет; используйте общие точки контроля: рост прерываний MAC, аномальное соотношение срабатываний к RX-completions и истощение page_pool.
Официальные источники
- NVD — CVE-2026-93830
- net: stmmac: xgmac2: disable RBUE in default RX interrupt mask - kernel/git/stable/linux.git - Linux kernel stable tree
- net: stmmac: xgmac2: disable RBUE in default RX interrupt mask - kernel/git/stable/linux.git - Linux kernel stable tree
- net: stmmac: xgmac2: disable RBUE in default RX interrupt mask - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 29.09.2026 — Опубликована первая версия материала.
