CVE-2026-80725 в Linux Kernel: OOB-write в GRO при агрегации BIG TCP

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

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


В функции skb_gro_receive() ядра Linux обнаружена ошибка валидации условий агрегации пакетов BIG TCP. Некорректная проверка размера MAC-заголовка и типа протокола позволяет нарушить целостность памяти ядра при обработке специально сформированных сетевых кадров.

Проблема затрагивает стабильные ветки 6.18.y и 6.1.y. В mainline (7.0+) подсистема переписана, поэтому уязвимость там отсутствует. Ниже описаны механика срабатывания, условия эксплуатации и порядок проверки исправления.

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


Риск связан с выходом за пределы буфера (out-of-bounds write) в памяти ядра при обработке сетевых пакетов. Атакующий может повредить структуры ядра, что потенциально ведет к выполнению кода в контексте ядра.

  • CVSS: 9.8 (CRITICAL), вектор CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Оценки отражают удаленный доступ без привилегий и полное влияние на конфиденциальность, целостность и доступность.
  • EPSS: 0,19% (вероятность эксплуатации в ближайшие 30 дней). Процентиль 8,83%.
  • Тип ошибки: Out-of-bounds write в skb_gro_receive() и ipv6_gro_complete().
  • Статус: Уязвимость исправлена в стабильных ветках, в mainline 7.0+ отсутствует из-за переработки кода.

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


Уязвимость затрагивает стабильные ветки ядра Linux, где функция skb_gro_receive() содержит ослабленные проверки для BIG TCP. В mainline (7.0+) проблема отсутствует из-за переработки подсистемы.

  • Linux Kernel 6.18.y: Затронут, исправление в коммите 03cb8cc2961f.
  • Linux Kernel 6.1.y: Затронут, исправление в коммите 37a5dcd6837f.
  • Linux Kernel 7.0+ (mainline): Не затронут, подсистема переписана в коммите 81be30c1f5f2.

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

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


Причина уязвимости заключается в некорректной валидации условий агрегации пакетов BIG TCP в функции skb_gro_receive(). Коммит b1a78b9b9886 ослабил проверки, что привело к трем основным проблемам.

Первая проблема: проверка использовала skb_headroom(p) вместо фактического пространства перед MAC-заголовком (p->mac_header). Так как skb_headroom включает mac_len, специально сформированные кадры (например, через AF_PACKET) могли пройти проверку с p->mac_header < 8 байт. При вставке временного HBH jumbo-заголовка в ipv6_gro_complete() вызов memmove() начинался до skb->head, вызывая OOB-write.

Вторая проблема: разрешалась агрегация не-IP протоколов (например, ETH_P_8021Q), так как условие p->protocol != ETH_P_IPV6 было истинным.

Третья проблема: проверялся флаг p->encapsulation вместо NAPI_GRO_CB(skb)->encap_mark, что позволяло инкапсулированным потокам (например, SIT) агрегироваться сверх 64KB.

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


Атакующий отправляет специально сформированные сетевые кадры на хост, где включена агрегация GRO. Кадры должны быть сконструированы так, чтобы пройти ослабленные проверки в skb_gro_receive().

Для IPv6-трафика атакующий может использовать кадры с p->mac_header < 8 байт, но с достаточным skb_headroom. Когда ядро пытается вставить HBH jumbo-заголовок, memmove() записывает данные за пределы выделенного буфера skb->head, повреждая память ядра.

Для не-IP протоколов (VLAN) или инкапсулированных потоков (SIT) агрегация также происходит сверх лимита 64KB, что может привести к аналогичным нарушениям целостности памяти. Повреждение памяти может быть использовано для выполнения кода в контексте ядра.

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


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

  • Система использует стабильную версию ядра Linux (например, 6.18.y или 6.1.y), где присутствует уязвимая логика в skb_gro_receive().
  • Включена агрегация пакетов GRO (Generic Receive Offload).
  • Атакующий имеет сетевой доступ к системе и может отправлять специально сформированные кадры (например, через AF_PACKET или сетевой стек).
  • Для IPv6-сценария: система обрабатывает IPv6-трафик, и включена поддержка BIG TCP.

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


Атакующий с удаленного хоста отправляет на целевую систему серию специально сформированных IPv6-кадров. Кадры имеют p->mac_header < 8 байт, но skb_headroom достаточно велик, чтобы пройти проверку. Ядро пытается агрегировать их в BIG TCP.

При вызове ipv6_gro_complete() ядро вставляет временный HBH jumbo-заголовок. Функция memmove() начинает копирование данных от адреса skb_mac_header(skb) - hoplen, который оказывается до skb->head. Это приводит к записи за пределы буфера, повреждая соседние структуры ядра.

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

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


В предоставленных источниках отсутствуют сведения о публичных PoC, технических описаниях эксплойтов или подтвержденной эксплуатации в реальных атаках. Уязвимость была обнаружена и исправлена в рамках процесса стабильного обновления ядра. Отсутствие информации о публичном эксплойте не означает, что он не существует, но на данный момент официальных подтверждений нет.

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


Специфичные индикаторы компрометации (IOC) для этой уязвимости в источниках не указаны. Общие неспецифичные признаки, которые могут указывать на попытку эксплуатации:

  • Аномальные сетевые пакеты с нестандартными MAC-заголовками или инкапсуляцией.
  • Сбои или перезагрузки ядра, связанные с повреждением памяти (kernel panics, oops).
  • Необычная активность в сетевом стеке, связанная с агрегацией пакетов GRO.

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


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

  • Мониторинг сетевых пакетов на наличие аномальных кадров с p->mac_header < 8 байт в IPv6-трафике.
  • Анализ журналов ядра на наличие сообщений об ошибках, связанных с skb_gro_receive() или ipv6_gro_complete().
  • Использование инструментов для анализа сетевых пакетов (например, Wireshark) для выявления специально сформированных кадров, которые могут использоваться для эксплуатации.

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


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

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

Затем сверьте версию с официальными уведомлениями поставщика дистрибутива. Для Linux Kernel 6.18.y исправление включено в коммит 03cb8cc2961f, для 6.1.y — в 37a5dcd6837f. Убедитесь, что ваша система обновлена до версии, содержащей эти коммиты.

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


Основной способ устранения уязвимости — обновление ядра до версии, содержащей исправления. Для стабильных веток Linux:

  • 6.18.y: Обновитесь до версии, содержащей коммит 03cb8cc2961f.
  • 6.1.y: Обновитесь до версии, содержащей коммит 37a5dcd6837f.
  • 7.0+ (mainline): Уязвимость отсутствует, обновление не требуется.

Следуйте инструкциям вашего дистрибутива для обновления ядра. После обновления перезагрузите систему для применения изменений.

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


Пока обновление не установлено, можно временно снизить риск, отключив агрегацию BIG TCP или ограничив размер агрегации. Это может быть сделано через параметры ядра или настройки сетевого стека, но конкретные команды зависят от дистрибутива. Рекомендуется также ограничить сетевой доступ к системе, если это возможно.

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


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

  1. Проверьте версию ядра с помощью uname -r.
  2. Убедитесь, что версия соответствует той, в которой включены коммиты 03cb8cc2961f (для 6.18.y) или 37a5dcd6837f (для 6.1.y).
  3. Проверьте логи обновления ядра, чтобы убедиться, что пакет был установлен корректно.
  4. При необходимости выполните функциональное тестирование сетевого стека, чтобы убедиться, что агрегация BIG TCP работает корректно.

Вывод​


CVE-2026-80725 представляет собой критическую уязвимость в стабильных версиях ядра Linux, позволяющую нарушить целостность памяти ядра через специально сформированные сетевые кадры. Уязвимость отсутствует в mainline 7.0+, но затрагивает ветки 6.18.y и 6.1.y.

Рекомендуется срочно обновить ядро до исправленной версии. Пока обновление не установлено, рассмотрите временные меры по ограничению сетевого доступа или отключению агрегации BIG TCP.

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


  1. NVD — CVE-2026-80725
  2. FIRST EPSS — CVE-2026-80725
  3. net: gro: properly validate BIG TCP aggregation criteria - kernel/git/stable/linux.git - Linux kernel stable tree
  4. net: gro: properly validate BIG TCP aggregation criteria - kernel/git/stable/linux.git - Linux kernel stable tree
  5. net: gro: properly validate BIG TCP aggregation criteria - kernel/git/stable/linux.git - Linux kernel stable tree
  6. net/ipv6: Drop HBH for BIG TCP on RX side - kernel/git/stable/linux.git - Linux kernel stable tree
  7. net: gro: properly validate BIG TCP aggregation criteria - kernel/git/stable/linux.git - Linux kernel stable tree
  8. CVEs — The Linux Kernel documentation

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


  • 03.09.2026 — Опубликована первая версия материала.
  • 04.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ