CVE-2026-74612 в Linux Kernel: некорректный учёт длины skb в veth после XDP

CVE: CVE-2026-74612
Продукт: Linux Kernel
Дата публикации: 22.08.2026
Критичность: CRITICAL
CVSS: 10.0 (3.1)
EPSS: 0,49%; процентиль 40,00%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


В драйвере veth Linux Kernel обнаружена ошибка учёта длины пакетов после обработки XDP-программами. Дефект приводит к чтению данных за границей буфера и утечке указателей ядра в пользовательское пространство. Разбираем техническую механику сбоя, условия срабатывания и порядок проверки актуальности системы.

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


Уязвимость классифицирована как CRITICAL с баллом CVSS 10.0 (вектор CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H). Дефект затрагивает компонент драйвера виртуального Ethernet (veth) в Linux Kernel. Сбой возникает при взаимодействии XDP-программ с нелинейными пакетами (skb с фрагментами). Последствия включают утечку внутренней структуры ядра (указатели, метаданные фрагментов) и повреждение передаваемых данных. Исправление внесено в код драйвера veth.c и распространено в стабильных релизах.

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


Затронуты версии Linux Kernel, содержащие исходный код драйвера veth, введённый коммитом 718a18a0c8a6. Точный диапазон версий, в которых присутствует уязвимость, не раскрыт в предоставленных материалах. Известно, что исправление (коммит cb6379feaaff11c4e1e79c26c745ffa23182768a) было применено в стабильных ветках ядра. Пользователям необходимо сверить версию своего ядра с официальными списками обновлений дистрибутива или kernel.org, чтобы определить, содержит ли система патч.

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


Причина дефекта кроется в функции veth_xdp_rcv_skb() в файле drivers/net/veth.c. При обработке пакетов, прошедших через XDP, код обновлял поле skb->data_len, но не корректировал поле skb->len. Если XDP-программа изменяла размер фрагментной области (shrink), значение skb->len оставалось завышенным. Это приводило к тому, что функция skb_headlen() возвращала значение, превышающее фактическую длину линейной области пакета. В результате последующие операции копирования данных в пользовательское пространство выходили за границы выделенной памяти.

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


Атака эксплуатирует рассинхронизацию метаданных пакета. Когда veth обрабатывает нелинейный skb, на который повлияла XDP-программа, длина пакета в структуре ядра становится некорректной. В пути приёма UDP функция __skb_datagram_iter() использует эти невалидные значения для определения объёма данных, подлежащих копированию. В результате в пользовательское пространство копируются байты, расположенные сразу после фактического конца пакета. Это приводит к утечке данных из структуры skb_shared_info, включая указатели ядра и служебные поля.

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


Для успешной эксплуатации необходимо наличие в системе драйвера veth и работающей XDP-программы, которая изменяет фрагментную область пакета. Атакующий должен иметь возможность отправлять UDP-пакеты через veth-интерфейс. Сложность атаки оценивается как низкая (AC:L), а привилегии не требуются (PR:N). Уязвимость срабатывает при обработке пакетов с определённой структурой, что делает её потенциально доступной для удалённых атакующих.

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


Сценарий атаки предполагает, что атакующий отправляет UDP-пакет через veth-пару, где на приёмном конце запущена XDP-программа, изменяющая хвост пакета. Из-за ошибки в учёте длины ядро считает пакет длиннее, чем он есть на самом деле. При передаче данных в пользовательское пространство приложение получает не только полезную нагрузку, но и данные из внутренней структуры ядра. Это позволяет атакующему извлечь указатели ядра, что может быть использовано для обхода механизмов защиты, таких как KASLR, или для дальнейшей эксплуатации.

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


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

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


Специфичные индикаторы компрометации (IOC) для CVE-2026-74612 в источниках не описаны. Общие неспецифичные точки контроля включают мониторинг аномальных UDP-трафиков через veth-интерфейсы, анализ логов на предмет ошибок в сетевом стеке и проверку на наличие подозрительных XDP-программ. Утечка указателей ядра может проявляться в аномальных значениях в дампах памяти или логгах приложений, но это требует глубокого анализа.

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


Детектирование атаки затруднено из-за отсутствия специфичных сигнатур. Рекомендуется использовать мониторинг сетевых интерфейсов veth на предмет аномальной нагрузки и проверки целостности данных UDP-пакетов. Включение аудита XDP-программ и анализ логов ядра на предмет срабатываний SKB_LINEAR_ASSERT могут помочь в выявлении попыток эксплуатации. Также полезно отслеживать изменения в конфигурации сетевых интерфейсов и наличие новых XDP-программ.

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


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

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

Полученную версию необходимо сравнить с официальными списками обновлений вашего дистрибутива Linux или с релизами на kernel.org. Если ваша версия ядра старше даты выпуска исправления (август 2026), система, вероятно, уязвима. Точный список затронутых версий следует уточнять в документации вашего поставщика.

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


Единственным подтверждённым методом устранения уязвимости является обновление ядра Linux до версии, содержащей коммит cb6379feaaff11c4e1e79c26c745ffa23182768a. Пользователям рекомендуется установить последние доступные обновления безопасности от своего дистрибутива. Если обновление ядра невозможно в краткосрочной перспективе, следует рассмотреть временные меры митигации, описанные ниже. Важно, что исправление затрагивает только драйвер veth, поэтому системы, не использующие veth, могут быть менее подвержены риску, но обновление всё равно рекомендуется.

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


Временные меры митигации включают отключение XDP-программ на veth-интерфейсах, если это позволяет бизнес-логика. Также можно ограничить доступ к veth-интерфейсам, разрешив передачу UDP-трафика только от доверенных источников. Если возможно, следует снизить MTU на veth-интерфейсах, чтобы избежать формирования пакетов с фрагментами, которые могут триггерить уязвимость. Эти меры не устраняют уязвимость, но снижают вероятность её эксплуатации.

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


После обновления ядра необходимо проверить, что исправление применено. Это можно сделать, проверив версию ядра (см. раздел version_check) и убедившись, что она соответствует версии, содержащей патч. Также можно проверить наличие коммита cb6379feaaff11c4e1e79c26c745ffa23182768a в истории ядра, если это возможно в вашей системе. Проведение функционального тестирования сетевых интерфейсов veth с XDP-программами поможет убедиться, что данные передаются корректно и без утечек.

Вывод​


CVE-2026-74612 представляет собой критическую уязвимость в Linux Kernel, связанную с некорректной обработкой пакетов в драйвере veth. Исправление уже доступно в стабильных версиях ядра. Пользователям настоятельно рекомендуется обновить свои системы, чтобы устранить риск утечки данных ядра и повреждения трафика. При невозможности немедленного обновления следует применить временные меры митигации и усилить мониторинг сетевых интерфейсов.

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


  1. NVD — CVE-2026-74612
  2. FIRST EPSS — CVE-2026-74612
  3. veth: fix skb length accounting after XDP frag adjustment - kernel/git/stable/linux.git - Linux kernel stable tree
  4. veth: fix skb length accounting after XDP frag adjustment - kernel/git/stable/linux.git - Linux kernel stable tree
  5. veth: fix skb length accounting after XDP frag adjustment - kernel/git/stable/linux.git - Linux kernel stable tree
  6. veth: fix skb length accounting after XDP frag adjustment - kernel/git/stable/linux.git - Linux kernel stable tree
  7. veth: fix skb length accounting after XDP frag adjustment - kernel/git/stable/linux.git - Linux kernel stable tree
  8. veth: fix skb length accounting after XDP frag adjustment - kernel/git/stable/linux.git - Linux kernel stable tree
  9. CVEs — The Linux Kernel documentation

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


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