CVE-2026-93830 в Linux Kernel: MAC interrupt storm, уязвимые версии и защита

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.


Исправление удаляет XGMAC_RBUE из:

  • XGMAC_DMA_INT_DEFAULT_EN
  • XGMAC_DMA_INT_DEFAULT_RX

В результате RBUE не включается по умолчанию, и шторм прерываний предотвращён.

Для систем с XGMAC2 устройствами обновите Linux Kernel до версии, содержащей эти коммиты. Если обновление ядра невозможно в краткосрочной перспективе, рассмотрите временные меры.

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


Временные меры:

  • Ограничение нагрузки на приём трафика на XGMAC2-интерфейсах до уровня, при котором RX-дескрипторы не исчерпываются.
  • Мониторинг page_pool: следите за истощением pool и увеличивайте его размер, если это поддерживается конфигурацией.
  • Отключение XGMAC2 устройств на критичных интерфейсах, если это допустимо архитектурно.
  • Переход на другой сетевой драйвер, если устройство поддерживает альтернативный driver без RBUE по умолчанию.

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


После обновления ядра проверьте:

  1. Наличие исправления в исходниках драйвера:

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.

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


  1. NVD — CVE-2026-93830
  2. net: stmmac: xgmac2: disable RBUE in default RX interrupt mask - kernel/git/stable/linux.git - Linux kernel stable tree
  3. net: stmmac: xgmac2: disable RBUE in default RX interrupt mask - kernel/git/stable/linux.git - Linux kernel stable tree
  4. net: stmmac: xgmac2: disable RBUE in default RX interrupt mask - kernel/git/stable/linux.git - Linux kernel stable tree
  5. CVEs — The Linux Kernel documentation

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


  • 29.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ