CVE: CVE-2026-64577
Продукт: Linux Kernel
Дата публикации: 05.08.2026
Критичность: HIGH
CVSS: 7.5 (3.1)
EPSS: 0,54%; процентиль 42,28%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
Уязвимость CVE-2026-64577 в Linux Kernel связана с неправильной обработкой возвращаемого значения функции skb_pull_data() в модуле GTP (Generic Tunnel Protocol). При обработке некорректных по длине пакетов происходит сбой ядра, что может привести к отказу в обслуживании. Системы, использующие GTP-туннели, должны быть обновлены для устранения уязвимости.
Основные характеристики
CVE-2026-64577 — уязвимость типа отказа в обслуживании (DoS) в Linux Kernel, возникающая при обработке пакетов GTP. Неправильная проверка результата вызова skb_pull_data() приводит к некорректному управлению указателем буфера данных, вызывая ошибку skb_under_panic и последующий краш ядра. Уязвимость имеет высокий уровень критичности (CVSS 7.5) [1].
Какие продукты и версии затронуты
Уязвимость затрагивает Linux Kernel версий, где реализован GTP (Generic Tunnel Protocol) в подсистеме сетевых интерфейсов. В частности, она влияет на модуль drivers/net/gtp.c. Системы, обрабатывающие GTP-туннели, особенно подвержены риску. Уязвимость была исправлена в коммите [3].
Причина уязвимости
Основная причина уязвимости — отсутствие проверки возвращаемого значения функции skb_pull_data() в функции gtp1u_send_echo_resp(). Вызывающая функция gtp1u_udp_encap_recv() гарантирует наличие 16 байт (UDP заголовок + GTP заголовок), но skb_pull_data() пытается извлечь 20 байт (GTP заголовок длинный + UDP заголовок). Для пакетов длиной 16–19 байт операция skb_pull_data() возвращает NULL, но дальнейший код продолжает выполнение, что приводит к некорректному перемещению указателя данных (skb->data) ниже границы буфера, вызывая skb_under_panic и последующий краш ядра [1].
Как работает атака
Атака происходит через отправку специально подготовленного GTP-пакета с длиной 16–19 байт. Ядро получает такой пакет, вызывает gtp1u_udp_encap_recv(), который гарантирует наличие 16 байт данных. Однако gtp1u_send_echo_resp() пытается извлечь 20 байт, и skb_pull_data() возвращает NULL. Код продолжает выполнение, вызывая skb_push() и iptunnel_xmit(), которые перемещают skb->data ниже skb->head, вызывая skb_under_panic. Это приводит к крашу ядра и отказу в обслуживании системы [1].
Условия успешной эксплуатации
Для эксплуатации уязвимости требуется возможность отправки GTP-пакетов в систему, обрабатывающую GTP-трафик. Атакующий должен быть способен отправить GTP-пакет с длиной 16–19 байт. В настоящее время не подтверждено наличие публичного PoC или эксплуатации в реальных условиях. Эксплуатация возможна только в случае, если система обрабатывает входящие GTP-пакеты, например, в контексте GTP-туннелей, используемых в мобильных сетях или виртуализации [1].
Возможный сценарий атаки
Атакующий отправляет GTP-пакет длиной 16–19 байт на систему, работающую с GTP-туннелями. Ядро обрабатывает пакет через gtp1u_udp_encap_recv(), но функция gtp1u_send_echo_resp() не проверяет результат skb_pull_data(). Это приводит к некорректному управлению указателем буфера и вызову skb_under_panic, что завершается крашем ядра. Система становится недоступной для других пакетов, пока не будет перезагружена [1].
Есть ли публичный эксплойт
На момент анализа не подтверждено наличие публичного эксплойта или PoC для CVE-2026-64577. Уязвимость была исправлена в коммите [3], но не известно, были ли использованы её для активных атак. Необходимо учитывать, что уязвимость может быть использована в рамках атак типа DoS, если система обрабатывает GTP-трафик [1].
Признаки эксплуатации
Признаки компрометации отсутствуют, так как нет подтверждённых случаев эксплуатации. Однако, если система подверглась DoS-атаке, можно наблюдать сбои ядра, сообщения об ошибках skb_under_panic и падение ядра. Для мониторинга рекомендуется анализировать логи ядра и журналы сетевой активности на предмет неожиданных пакетов GTP с малым размером [1].
Как обнаружить атаку
Для обнаружения уязвимости необходимо проверить, поддерживает ли система GTP-туннели, и анализировать логи ядра на наличие сообщений skb_under_panic. Также можно использовать системные мониторы для отслеживания необычного сетевого трафика GTP. Проверка версии ядра также важна для определения необходимости обновления [1].
Как проверить свою версию
Для проверки версии ядра на наличие уязвимости выполните следующие команды:
Код:
uname -r
uname -a
Если используется версия ядра, в которой не применяется исправление, рекомендуется обновиться до версии, содержащей коммит [3].
Исправление
Рекомендуется обновить ядро до версии, в которой устранена уязвимость CVE-2026-64577. Исправление включает добавление проверки возвращаемого значения skb_pull_data() в функции gtp1u_send_echo_resp(). Подробности изменения находятся в коммите [3].
Временные меры защиты
Временные меры защиты не предусмотрены, поскольку уязвимость связана с внутренней логикой обработки пакетов. Рекомендуется ограничить доступ к системам, обрабатывающим GTP-трафик, и отключить GTP-туннели, если они не требуются. Также можно использовать фильтрацию трафика на уровне сетевого оборудования [1].
Как проверить устранение уязвимости
После применения обновления проверьте, что версия ядра содержит исправление. Пример команды:
Код:
uname -r
Если версия содержит коммит [3], то уязвимость устранена. Также можно проверить, что в логах ядра больше не появляются ошибки skb_under_panic [1].
Вывод
CVE-2026-64577 представляет собой уязвимость DoS в Linux Kernel, связанную с некорректной обработкой GTP-пакетов. Она может привести к крашу ядра и отказу в обслуживании. Администраторы должны обновить ядро до версии, содержащей исправление, и проверить, используют ли системы GTP-туннели. В настоящее время не подтверждено использование уязвимости в реальных атаках.
Официальные источники
- NVD — CVE-2026-64577
- FIRST EPSS — CVE-2026-64577
- gtp: check skb_pull_data() return in gtp1u_send_echo_resp() - kernel/git/stable/linux.git - Linux kernel stable tree
- gtp: check skb_pull_data() return in gtp1u_send_echo_resp() - kernel/git/stable/linux.git - Linux kernel stable tree
- gtp: check skb_pull_data() return in gtp1u_send_echo_resp() - kernel/git/stable/linux.git - Linux kernel stable tree
- gtp: check skb_pull_data() return in gtp1u_send_echo_resp() - kernel/git/stable/linux.git - Linux kernel stable tree
- gtp: check skb_pull_data() return in gtp1u_send_echo_resp() - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 10.08.2026 — Опубликована первая версия материала.
