CVE-2026-64577 в Linux Kernel: уязвимость в обработке GTP-пакетов

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-туннели. В настоящее время не подтверждено использование уязвимости в реальных атаках.

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


  1. NVD — CVE-2026-64577
  2. FIRST EPSS — CVE-2026-64577
  3. gtp: check skb_pull_data() return in gtp1u_send_echo_resp() - kernel/git/stable/linux.git - Linux kernel stable tree
  4. gtp: check skb_pull_data() return in gtp1u_send_echo_resp() - kernel/git/stable/linux.git - Linux kernel stable tree
  5. gtp: check skb_pull_data() return in gtp1u_send_echo_resp() - kernel/git/stable/linux.git - Linux kernel stable tree
  6. gtp: check skb_pull_data() return in gtp1u_send_echo_resp() - kernel/git/stable/linux.git - Linux kernel stable tree
  7. gtp: check skb_pull_data() return in gtp1u_send_echo_resp() - kernel/git/stable/linux.git - Linux kernel stable tree
  8. CVEs — The Linux Kernel documentation

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


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