CVE-2026-80634 в Linux Kernel: OOB-чтение в netfilter flowtable и защита

CVE: CVE-2026-80634
Продукт: Linux Kernel
Дата публикации: 28.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,38%; процентиль 30,89%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В Linux Kernel обнаружена уязвимость в модуле netfilter flowtable, связанная с некорректной обработкой VLAN-разметки в мостовых интерфейсах. Ошибка приводит к выходу за границы стека (OOB read) и копированию невалидных данных в дескриптор маршрута. Статья разбирает механику дефекта, условия срабатывания и методы проверки исправления.

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


Риск связан с нарушением целостности данных в сетевом стеке при обработке некорректных мостовых путей, что может привести к утечке информации или сбою маршрутизации.

  • Тип ошибки: Ошибка обработки данных (OOB read) в функции nft_dev_forward_path().
  • CVSS 3.1: 9.8 (CRITICAL), вектор CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
  • Условия атаки: Сетевой доступ, отсутствие необходимости в аутентификации и пользовательском взаимодействии.
  • Эксплуатация: Публичные данные о реальной эксплуатации отсутствуют.
  • EPSS: 0,38% (процентиль 30,89%), что указывает на низкую вероятность эксплуатации в ближайший год.

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


Уязвимость затрагивает ядра Linux, содержащие код обработки VLAN в netfilter flowtable. Точный диапазон версий определяется наличием исходного коммита e990cef6516d и отсутствием исправления.

  • Компонент: net/netfilter/nf_flow_table_path.c.
  • Исходный коммит: e990cef6516d (добавление поддержки фильтрации VLAN в мостах).
  • Исправляющие коммиты: e052f920773b73be49eb4d8702a9f85de7464363 (mainline) и 2f55fa28011c97d6495d5787808db10a8c2d690d (stable).

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


Причина дефекта кроется в некорректном порядке операций при обработке случая DEV_PATH_BR_VLAN_UNTAG в функции nft_dev_path_info().

В исходном коде операция декремента info->num_encaps выполнялась внутри макроса WARN_ON_ONCE(). Поскольку num_encaps имеет тип u8, при значении 0 декремент приводит к переполнению (wrap-around) в 255. Макрос break прерывает только внутренний switch, позволяя дальнейшим записям стека пути восстановить info->indev.

В результате функция возвращает значение num_encaps == 255, хотя фактическое количество инкапсуляций равно нулю. Это нарушает инвариант безопасности, согласно которому счетчик не должен превышать размер массива info.encap[] (размер 2).

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


Атака эксплуатирует несогласованность между счетчиком инкапсуляций и фактическим состоянием стека путей.

  1. Атакующий формирует пакет, проходящий через мостовой интерфейс с некорректной VLAN-разметкой, что приводит к срабатыванию ветки DEV_PATH_BR_VLAN_UNTAG при num_encaps == 0.
  2. Из-за переполнения num_encaps принимает значение 255.
  3. Функция nft_dev_forward_path() начинает итерацию по массиву info.encap[] (размер 2) до значения num_encaps (255).
  4. Происходит чтение за границами стека (OOB stack read).
  5. Некорректное значение 255 копируется в дескриптор маршрута, что может привести к обработке невалидных данных или утечке информации из стека.

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


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

  • Наличие в ядре модуля nf_flow_table и поддержки VLAN в мостовых интерфейсах.
  • Возможность доставки специально сформированных сетевых пакетов через мостовой интерфейс.
  • Отсутствие исправляющего коммита e052f920773b73be49eb4d8702a9f85de7464363 в текущей версии ядра.
  • Отсутствие дополнительных механизмов защиты, блокирующих некорректные VLAN-метки на уровне моста.

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


Сценарий атаки предполагает сетевое взаимодействие с хостом, использующим мостовые интерфейсы с VLAN-фильтрацией.

Атакующий отправляет пакет, который при обработке в netfilter flowtable попадает в ветку DEV_PATH_BR_VLAN_UNTAG в момент, когда счетчик инкапсуляций равен нулю. Это вызывает переполнение счетчика в 255. Далее, при формировании маршрута, ядро пытается прочитать 255 элементов из массива, содержащего только 2 элемента.

В результате происходит чтение памяти за пределами стека. Зависит от контекста, это может привести к утечке данных из стека ядра или к некорректному формированию маршрута, что может быть использовано для обхода сетевых политик или для сбора информации о состоянии системы.

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


На момент публикации сведений о CVE-2026-80634 публичные эксплойты или PoC-коды не обнаружены в открытых источниках.

  • PoC: Отсутствуют подтвержденные публичные PoC.
  • Техническое описание: Доступно в коммитах исправления.
  • Эксплуатация: Нет данных о подтвержденной эксплуатации в реальных атаках.

Отсутствие публичного эксплойта не означает, что уязвимость не может быть эксплуатирована. Учитывая высокий CVSS-скор, разработку эксплойта следует считать вероятной.

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


Специфичные индикаторы компрометации (IOC) для CVE-2026-80634 не опубликованы. Ниже приведены общие, неспецифичные точки контроля:

  • Аномальные записи в журналах ядра (dmesg) с упоминанием WARN_ON_ONCE в контексте netfilter.
  • Необычные сетевые потоки через мостовые интерфейсы с некорректными VLAN-метками.
  • Сбои в маршрутизации или некорректные дескрипторы маршрутов в сетевых утилитах.

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

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


Обнаружение атаки затруднено из-за отсутствия специфичных сигнатур. Рекомендуется использовать следующие методы:

  • Мониторинг журналов ядра на наличие предупреждений, связанных с nf_flow_table.
  • Анализ сетевых пакетов на предмет некорректных VLAN-меток в мостовых интерфейсах.
  • Проверка целостности дескрипторов маршрутов с помощью сетевых утилит.
  • Использование eBPF-программ для отслеживания аномального поведения в netfilter flowtable.

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


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

Bash:
uname -r
uname -a
cat /proc/version

Затем сверьте версию ядра с наличием коммита e052f920773b73be49eb4d8702a9f85de7464363 в истории изменений. Если коммит отсутствует, система уязвима.

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


Единственным надежным способом устранения уязвимости является обновление ядра до версии, содержащей исправляющий коммит.

  • Mainline: Коммит e052f920773b73be49eb4d8702a9f85de7464363.
  • Stable: Коммит 2f55fa28011c97d6495d5787808db10a8c2d690d.

Обновите ядро через пакетный менеджер вашей дистрибутива или соберите ядро из исходников, убедившись, что исправление включено.

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


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

  • Отключите поддержку VLAN в мостовых интерфейсах, если это не критично для работы сети.
  • Ограничьте доступ к мостовым интерфейсам, используя firewall-правила.
  • Отключите модуль nf_flow_table, если он не используется.
  • Убедитесь, что мостовые интерфейсы не обрабатывают некорректные VLAN-метки на уровне пользовательского пространства.

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


Для проверки успешного применения исправления выполните следующие шаги:

  1. Убедитесь, что версия ядра содержит коммит e052f920773b73be49eb4d8702a9f85de7464363.
  2. Проверьте, что функция nft_dev_path_info() в исходниках ядра содержит исправленную логику (декремент вне WARN_ON_ONCE).
  3. Проведите функциональное тестирование мостовых интерфейсов с VLAN-фильтрацией.
  4. Убедитесь, что в журналах ядра отсутствуют предупреждения, связанные с nf_flow_table.

Вывод​


CVE-2026-80634 представляет собой серьезную уязвимость в Linux Kernel, связанную с некорректной обработкой VLAN в netfilter flowtable. Высокий CVSS-скор и сетевой вектор атаки делают ее приоритетной для устранения. Рекомендуется незамедлительно обновить ядро до версии, содержащей исправление, и применить временные меры защиты до завершения обновления.

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


  1. NVD — CVE-2026-80634
  2. FIRST EPSS — CVE-2026-80634
  3. netfilter: flowtable: avoid num_encaps underflow on bridge VLAN untag - kernel/git/stable/linux.git - Linux kernel stable tree
  4. netfilter: flowtable: avoid num_encaps underflow on bridge VLAN untag - kernel/git/stable/linux.git - Linux kernel stable tree
  5. CVEs — The Linux Kernel documentation

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


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