CVE: CVE-2026-80646
Продукт: Linux Kernel
Дата публикации: 28.08.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: 0,51%; процентиль 41,34%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В ядре Linux обнаружена уязвимость, позволяющая вызвать сбой системы (DoS) через обращение к NULL-указателю в функции статистики IPv6. Исправление уже включено в стабильные ветки ядра. Статья описывает механику ошибки, условия срабатывания и методы проверки актуальности системы.
Основные характеристики
Уязвимость представляет собой риск отказа в обслуживании (DoS) для систем, использующих VRF и IPv6. Атакующий может вызвать панику ядра, отправив пакет на устройство, которое было отключено в момент обработки статистики.
- Тип ошибки: Обращение к NULL-указателю (NULL pointer dereference) в функции
__in6_dev_stats_get().
- CVSS 3.1: 7.5 (HIGH). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H. Оценивается как высокий риск из-за удаленного доступа и отсутствия необходимости в привилегиях.
- Условия атаки: Требуется наличие конфигурации VRF (Virtual Routing and Forwarding) и активный трафик IPv6.
- Эксплуатация: Публичные данные о подтвержденной эксплуатации в реальных атаках отсутствуют.
- EPSS: 0,51% (процентиль 41,34%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая.
Какие продукты и версии затронуты
Уязвимость затрагивает ядра Linux, в которых присутствует функция
__in6_dev_stats_get() без проверки на NULL после вызова dev_get_by_index_rcu(). Ошибка была введена в коммите e1ae5c2ea478.Исправление (коммит
507541c2a8eeb76c02bd2511958f73a8cfa3e1bc) было интегрировано в следующие стабильные ветки ядра:- 6.15.y
- 6.12.y
- 6.6.y
- 6.1.y
- 5.15.y
- 5.10.y
Системы, использующие версии ядра старше указанных веток или не содержащие патч, остаются уязвимыми. Точный список версий для конкретных дистрибутивов зависит от их политики обновления.
Причина уязвимости
Причина ошибки кроется в логике обработки статистики IPv6 для устройств, являющихся L3-мастерами (например, VRF).
Функция
__in6_dev_stats_get() пытается получить указатель на исходное физическое устройство, используя индекс из заголовка пакета (inet6_iif(skb)). Для этого вызывается dev_get_by_index_rcu(). Если исходное физическое устройство было отключено (unregistered) в момент обработки пакета, эта функция возвращает NULL.В исходном коде отсутствовала проверка возвращаемого значения. Функция передавала
NULL в __in6_dev_get(), что приводило к обращению к нулевому указателю и последующему падению ядра.Как работает атака
Атакующий направляет IPv6-пакет (например, ICMPv6) на интерфейс, который является частью VRF-конфигурации.
При обработке пакета ядро вызывает функцию статистики. Если в этот момент физическое устройство, ассоциированное с VRF, было отключено администратором или из-за сбоя,
dev_get_by_index_rcu() возвращает NULL. Без проверки на NULL ядро пытается прочитать память по нулевому адресу, что вызывает kernel panic и перезагрузку системы.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:
- Система использует VRF (Virtual Routing and Forwarding) для сегментации сети.
- На интерфейсе VRF активен трафик IPv6.
- Физическое устройство, связанное с VRF, находится в состоянии отключения (unregistered) в момент обработки пакета.
- Атакующий имеет сетевой доступ для отправки IPv6-пакетов на целевой интерфейс.
Возможный сценарий атаки
Сценарий атаки предполагает, что атакующий знает о наличии VRF на целевой системе. Он отправляет IPv6-пакет на интерфейс VRF. В момент обработки пакета администратор отключает физический порт или происходит сбой, ведущий к deregister устройства.
Ядро пытается обновить статистику ICMPv6 для исходного устройства. Функция
dev_get_by_index_rcu() не находит устройство и возвращает NULL. Из-за отсутствия проверки код продолжает выполнение, обращаясь к NULL. Это приводит к срабатыванию обработчика исключений и остановке работы ядра.Есть ли публичный эксплойт
Публичные данные о готовых эксплоитах или подтвержденной эксплуатации в реальных атаках отсутствуют. Уязвимость была обнаружена инструментом Sashiko и исправлена в ядре. Отсутствие сведений о PoC не означает, что эксплойт невозможен, но текущая вероятность активной эксплуатации оценивается как низкая.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости не определены. Однако можно использовать следующие неспецифичные признаки:
- Внезапные перезагрузки системы или
kernel panicс сообщениями об обращении к NULL-указателю в стекеipv6.
- Аномальные всплески ICMPv6-трафика на интерфейсах VRF.
- Журналы, фиксирующие отключение физических устройств в момент сбоев.
Как обнаружить атаку
Для обнаружения попыток эксплуатации или последствий уязвимости рекомендуется:
- Мониторинг журналов ядра (
dmesg,journalctl) на наличие сообщенийBUG: unable to handle page faultилиkernel panicв контексте функцийipv6.
- Анализ сетевых логов на предмет аномального IPv6-трафика, направленного на интерфейсы VRF.
- Проверка стабильности систем с VRF-конфигурациями после обновлений ядра.
Как проверить свою версию
Для проверки версии ядра и определения необходимости обновления используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Сравните полученную версию с перечнем исправленных веток (6.15.y, 6.12.y, 6.6.y, 6.1.y, 5.15.y, 5.10.y). Если ваша версия не входит в эти ветки или не содержит патч
507541c2a8eeb76c02bd2511958f73a8cfa3e1bc, система уязвима.Исправление
Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление.
- Для дистрибутивов с автоматическим обновлением ядра: выполните стандартную процедуру обновления пакетов.
- Для кастомных сборок: пересоберите ядро с включением коммита
507541c2a8eeb76c02bd2511958f73a8cfa3e1bc.
- Проверьте, что после обновления функция
__in6_dev_stats_get()содержит проверкуif (!dev) return NULL;.
Временные меры защиты
Пока обновление ядра не выполнено, можно снизить риск, применив следующие временные меры:
- Ограничьте доступ к интерфейсам VRF, если это позволяет бизнес-процесс.
- Отключите IPv6 на интерфейсах VRF, если он не используется.
- Избегайте частого отключения физических устройств, связанных с VRF, во время активного трафика.
- Настройте мониторинг для быстрого обнаружения сбоев.
Как проверить устранение уязвимости
После обновления ядра проверьте, что исправление применено:
- Убедитесь, что версия ядра соответствует одной из исправленных веток.
- Проверьте наличие коммита
507541c2a8eeb76c02bd2511958f73a8cfa3e1bcв истории ядра (если доступно).
- Проведите нагрузочное тестирование с VRF и IPv6-трафиком, имитируя отключение устройств, чтобы убедиться в отсутствии паник.
Вывод
CVE-2026-80646 представляет собой серьезный риск для систем, использующих VRF и IPv6. Уязвимость позволяет вызвать отказ в обслуживании через обращение к NULL-указателю.
Исправление уже доступно в стабильных ветках ядра. Рекомендуется как можно скорее обновить системы до актуальных версий, чтобы исключить возможность эксплуатации этой ошибки.
Официальные источники
- NVD — CVE-2026-80646
- FIRST EPSS — CVE-2026-80646
- ipv6: guard against possible NULL deref in __in6_dev_stats_get() - kernel/git/stable/linux.git - Linux kernel stable tree
- ipv6: guard against possible NULL deref in __in6_dev_stats_get() - kernel/git/stable/linux.git - Linux kernel stable tree
- ipv6: guard against possible NULL deref in __in6_dev_stats_get() - kernel/git/stable/linux.git - Linux kernel stable tree
- ipv6: guard against possible NULL deref in __in6_dev_stats_get() - kernel/git/stable/linux.git - Linux kernel stable tree
- ipv6: guard against possible NULL deref in __in6_dev_stats_get() - kernel/git/stable/linux.git - Linux kernel stable tree
- ipv6: guard against possible NULL deref in __in6_dev_stats_get() - kernel/git/stable/linux.git - Linux kernel stable tree
- ipv6: guard against possible NULL deref in __in6_dev_stats_get() - kernel/git/stable/linux.git - Linux kernel stable tree
- ipv6: guard against possible NULL deref in __in6_dev_stats_get() - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 02.09.2026 — Опубликована первая версия материала.
