CVE: CVE-2026-80590
Продукт: Linux Kernel
Дата публикации: 28.08.2026
Критичность: HIGH
CVSS: 8.6 (3.1)
EPSS: 0,59%; процентиль 45,68%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В стеке обработки сетевых пакетов ядра Linux обнаружена логическая ошибка, позволяющая вызвать панику ядра (kernel panic). Атакующий с минимальными привилегиями может отправить IP-фрагменты, несущие некорректные метаданные GSO, через TUN/TAP или AF_PACKET. При реконструкции пакет сохраняет эти метаданные, что приводит к срабатыванию внутренних проверок в функции skb_segment().
Основные характеристики
Уязвимость позволяет неуправляемому пользователю вызвать отказ в обслуживании (DoS) на уровне ядра, заставляя систему перезагрузиться. Риск связан с обработкой сетевых пакетов, где нарушается инвариант: IP-фрагменты не должны нести метаданные GSO.
- CVSS: 8.6 (HIGH). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H. Высокая оценка обусловлена удаленным вектором и полным отказом в обслуживании.
- EPSS: 0,59% (процентиль 45,68%). Вероятность эксплуатации в ближайшие 30 дня оценивается как низкая.
- Тип атаки: Denial of Service (DoS) через панику ядра.
- Статус в CISA KEV: Не подтверждено наличие в каталоге.
- Публичный PoC: Описан в коммитах ядра, готовый эксплойт-код в источниках не опубликован.
Какие продукты и версии затронуты
Уязвимость затрагивает ядро Linux, начиная с версии, содержащей commit
f43798c27684 ("tun: Allow GSO using virtio_net_hdr"). Точные номера версий дистрибутивов в предоставленных источниках не указаны.- Linux Kernel: Все версии, где функция
inet_frag_queue_insert()не сбрасывает GSO-метаданные перед добавлением фрагмента в очередь.
- Виртуализация: Гостевые системы, где VMM пробрасывает
virtio_net_hdrв tap-интерфейсы.
- Контейнеризация: Системы, где контейнеры имеют доступ к созданию TUN/TAP устройств или используют
AF_PACKETсPACKET_VNET_HDR.
Причина уязвимости
Причина ошибки — отсутствие сброса полей GSO (
gso_size, gso_type, gso_segs) в структуре sk_buff при добавлении IP-фрагмента в очередь реконструкции. Функция inet_frag_queue_insert() не нормализовала эти метаданные.При завершении реконструкции (
inet_frag_reasm_finish) первый фрагмент становится заголовком итогового пакета, сохраняя свои shinfo (socket buffer info). Остальные фрагменты добавляются в frag_list без проверки их структуры. В результате реконструированный пакет помечается как GSO, хотя по определению IP-фрагменты не могут быть GSO-пакетами.Последующая обработка таким пакетом в функции
skb_segment() нарушает предположения о структуре данных (GRO-shaped input), что вызывает срабатывание BUG_ON() и панику ядра.Как работает атака
Атакующий отправляет IP-фрагменты через TUN/TAP интерфейс или с использованием
AF_PACKET с флагом PACKET_VNET_HDR. В заголовке virtio_net_hdr устанавливаются значения, помечающие фрагмент как GSO.Ядро принимает фрагменты и помещает их в очередь реконструкции. При завершении реконструкции первый фрагмент становится головой пакета, а остальные — элементами списка
frag_list. Пакет сохраняет метку GSO.При дальнейшей обработке (например, в
udp_rcv_segment или ip_finish_output_gso) пакет передается в skb_segment(). Функция ожидает, что frag_list имеет определенную структуру (GRO), но получает данные, сформированные из произвольных фрагментов. Это приводит к срабатыванию внутренних проверок и панике ядра.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости атакующему необходимо:
- Доступ к созданию или использованию TUN/TAP интерфейсов в своей пользовательской среде (user namespace).
- Возможность отправки IP-фрагментов с заголовком
virtio_net_hdr.
- Наличие в ядре уязвимой версии кода обработки фрагментов.
- Отсутствие дополнительных механизмов защиты, блокирующих передачу GSO-метаданных на уровне VMM или сетевых фильтров.
Возможный сценарий атаки
Атакующий создает пользовательское пространство (user namespace) и виртуальный сетевой интерфейс (TUN/TAP). Через этот интерфейс он отправляет два IP-фрагмента, в заголовках которых через
virtio_net_hdr заданы параметры GSO.Ядро Linux принимает пакеты и начинает процесс реконструкции IP-пакета. После сборки полного пакета он попадает в стек обработки UDP или IP. При попытке сегментации пакета функция
skb_segment() обнаруживает несоответствие структуры данных ожиданиям и вызывает BUG_ON().Ядро переходит в состояние паники (kernel panic), что приводит к немедленному завершению работы системы. Все активные сессии и процессы прерываются, требуется перезагрузка для восстановления работоспособности.
Есть ли публичный эксплойт
В описании CVE и коммитах ядра Linux предоставлен технический анализ и описание воспроизведения (reproducer). Указано, что два записи в tap-интерфейс от неуправляемого пользователя достаточно для вызова паники.
Публичный PoC (Proof of Concept) описан в тексте коммита, но готовый эксплойт-код или подтвержденная эксплуатация в реальных атаках в предоставленных источниках не указаны. Отсутствие сведений о массовом использовании не означает, что эксплойт не существует, но подтвержденных данных о его распространении нет.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости в предоставленных источниках не описаны. Однако можно использовать следующие неспецифичные признаки:
- Записи в системном журнале (syslog, journalctl) о панике ядра с упоминанием
skb_segmentилиnet/core/skbuff.c.
- Необъяснимые перезагрузки серверов, особенно тех, где активно используются виртуальные сетевые интерфейсы.
- Аномальная активность процессов, создающих TUN/TAP устройства в изолированных пространствах.
Как обнаружить атаку
Для обнаружения попыток эксплуатации или последствий атаки рекомендуется:
- Мониторинг системных журналов на наличие сообщений о панике ядра (kernel panic) с трассировкой стека, включающей
skb_segment.
- Контроль создания TUN/TAP устройств в контейнерах и виртуальных машинах.
- Анализ сетевых пакетов на наличие аномальных заголовков
virtio_net_hdrс GSO-флагами в IP-фрагментах (если возможно на уровне сетевых фильтров).
Как проверить свою версию
Для проверки версии ядра и наличия исправления используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Сравните полученную версию с релизами, содержащими commit
d5dc1e69fd7258ea605c9952e5d5947539159ae3 или его порты в stable-ветки. Если версия ядра старше даты публикации исправления (28.08.2026) и не содержит патча, система уязвима.Исправление
Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление.
- Обновите ядро до последней доступной версии в вашем дистрибутиве.
- Убедитесь, что в ядре присутствует commit
d5dc1e69fd7258ea605c9952e5d5947539159ae3или его эквивалент в stable-ветках.
- Перезагрузите систему после обновления ядра, чтобы изменения вступили в силу.
Исправление добавляет вызов
skb_gso_reset(skb) в функцию inet_frag_queue_insert(), что сбрасывает GSO-метаданные перед добавлением фрагмента в очередь реконструкции.Временные меры защиты
Пока обновление ядра не установлено, можно применить следующие временные меры:
- Ограничьте доступ к созданию TUN/TAP устройств для неуправляемых пользователей и контейнеров.
- Отключите проброс
virtio_net_hdrв виртуальных машинах, если это не критично для производительности.
- Используйте сетевые фильтры (iptables/nftables) для блокировки подозрительных IP-фрагментов, если возможно идентифицировать их.
- Изолируйте критические системы от сетей, где могут находиться потенциальные атакующие с доступом к виртуальным интерфейсам.
Как проверить устранение уязвимости
После обновления ядра проверьте наличие исправления:
Bash:
uname -r
Убедитесь, что версия ядра соответствует релизу с патчем. Для дополнительной проверки можно использовать
git log в исходниках ядра (если доступно) или проверить наличие строки skb_gso_reset в функции inet_frag_queue_insert в исходном коде ядра.Также можно провести функциональное тестирование: создать TUN/TAP интерфейс и отправить тестовые IP-фрагменты с GSO-метаданными. Если ядро не переходит в состояние паники, исправление работает.
Вывод
CVE-2026-80590 представляет собой серьезную угрозу для систем с доступом к виртуальным сетевым интерфейсам. Уязвимость позволяет вызвать панику ядра с минимальными привилегиями.
Администраторам необходимо срочно обновить ядро Linux до версии с исправлением. Временные меры по ограничению доступа к TUN/TAP могут снизить риск, но не заменяют патч.
Мониторинг журналов на признаки паники ядра поможет обнаружить попытки эксплуатации.
Официальные источники
- NVD — CVE-2026-80590
- FIRST EPSS — CVE-2026-80590
- inet: frags: strip GSO state from fragments before reassembly - kernel/git/stable/linux.git - Linux kernel stable tree
- inet: frags: strip GSO state from fragments before reassembly - kernel/git/stable/linux.git - Linux kernel stable tree
- inet: frags: strip GSO state from fragments before reassembly - kernel/git/stable/linux.git - Linux kernel stable tree
- inet: frags: strip GSO state from fragments before reassembly - kernel/git/stable/linux.git - Linux kernel stable tree
- inet: frags: strip GSO state from fragments before reassembly - kernel/git/stable/linux.git - Linux kernel stable tree
- inet: frags: strip GSO state from fragments before reassembly - kernel/git/stable/linux.git - Linux kernel stable tree
- inet: frags: strip GSO state from fragments before reassembly - kernel/git/stable/linux.git - Linux kernel stable tree
- inet: frags: strip GSO state from fragments before reassembly - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 02.09.2026 — Опубликована первая версия материала.
