CVE: CVE-2026-74743
Продукт: Linux Kernel
Дата публикации: 26.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,52%; процентиль 41,84%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В драйвере macvlan ядра Linux обнаружена ошибка, при которой параметры
needed_headroom и needed_tailroom не наследуются от нижележащего устройства. Это приводит к некорректному выделению памяти для пакетов, что может вызвать переполнение буфера или сбой ядра. Статья описывает техническую суть дефекта, условия его проявления и методы проверки исправления.Основные характеристики
Ошибка в сетевом стеке Linux позволяет нарушить целостность памяти при обработке пакетов в конфигурациях с macvlan. Риск связан с некорректным выделением пространства под заголовки и трейлеры, что может привести к падению системы или потенциальному выполнению кода.
- Тип ошибки: Некорректное управление памятью (Memory Corruption) в сетевом драйвере.
- CVSS 3.1: 9.8 (CRITICAL). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Означает высокую сложность эксплуатации, но критический уровень последствий при успешной атаке.
- Условия атаки: Требуется наличие интерфейса macvlan, привязанного к устройству, требующему дополнительного пространства (например, WireGuard, IPsec, MACsec).
- Эксплуатация: Публичные данные о массовой эксплуатации отсутствуют. EPSS составляет 0,52%, что указывает на низкую вероятность атаки в ближайший год.
- Статус: Уязвимость устранена в актуальных ветках ядра. Патч опубликован в репозитории Linux kernel.
Какие продукты и версии затронуты
Уязвимость затрагивает драйвер
macvlan в ядре Linux. Проблема существует с момента добавления поддержки macvlan (коммит b863ceb7ddce) и сохраняется до внесения исправлений в актуальных ветках.- Компонент:
drivers/net/macvlan.c.
- Версии: Все версии ядра, содержащие исходный код драйвера macvlan без патча
cef51860becd9700217c81732ca1eb1ea6ed6fe1.
- Ограничения: Проблема проявляется только при использовании macvlan поверх устройств, которые требуют дополнительного headroom или tailroom (например, туннели, veth с rx headroom).
Точный список затронутых версий конкретных дистрибутивов не указан в предоставленных источниках. Рекомендуется сверяться с базами данных безопасности вашего провайдера.
Причина уязвимости
При инициализации устройства macvlan функция
macvlan_init() копирует hard_header_len из нижележащего устройства, но оставляет поля needed_headroom и needed_tailroom равными нулю.Когда нижележащий интерфейс (например, WireGuard или IPsec) требует дополнительного пространства для заголовков или трейлеров, верхние слои сетевого стека вычисляют размер буфера на основе нулевых значений. В результате выделяется недостаточно памяти для размещения данных пакета.
При попытке добавить заголовок через
dev_hard_header() или macvlan_hard_header() происходит обращение к памяти за пределами выделенного буфера. Это приводит к переполнению (underflow) или использованию освобожденной памяти (use-after-free), что фиксируется KASAN как сбой.Как работает атака
Атакующий направляет сетевой трафик на интерфейс, использующий macvlan поверх устройства с дополнительными требованиями к памяти. Сетевой стек ядра пытается обработать пакет, но из-за нулевых значений
needed_headroom выделяет буфер недостаточного размера.При добавлении заголовков или трейлеров данные записываются в память, которая не была зарезервирована для этого. Это может повредить соседние структуры данных в памяти ядра. В худшем случае атакующий может контролировать содержимое записанных данных, что позволяет изменить управление потоком выполнения ядра.
Механизм не требует специальных привилегий, если атакующий имеет доступ к отправке пакетов на уязвимый интерфейс. Однако для успешной эксплуатации часто требуется точное управление размером и содержимым пакетов, чтобы вызвать конкретный сбой памяти.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо соблюдение следующих условий:
- В системе настроен интерфейс macvlan, привязанный к нижележащему устройству, требующему дополнительного headroom или tailroom (например, WireGuard, IPsec, MACsec, туннели).
- Атакующий имеет возможность отправлять сетевые пакеты на этот интерфейс (локальный доступ или удаленный доступ через сеть).
- В ядре не применен патч, исправляющий наследование
needed_headroomиneeded_tailroom.
Если нижележащее устройство не требует дополнительного пространства, уязвимость не проявляется, так как стандартного буфера достаточно для размещения заголовков.
Возможный сценарий атаки
Администратор настраивает контейнеризованную среду, где контейнеры используют macvlan поверх WireGuard-интерфейса для шифрованного трафика. Атакующий, получивший доступ к сети, отправляет специально сформированные пакеты на macvlan-интерфейс.
Ядро пытается обработать пакет, но из-за ошибки в
macvlan_init() не резервирует дополнительное пространство, необходимое для WireGuard-заголовков. При добавлении заголовков происходит запись в память за пределами буфера. Это приводит к повреждению структур ядра и падению системы (kernel panic) или, в случае успешного контроля записи, к выполнению кода с привилегиями ядра.Сценарий требует, чтобы нижележащий интерфейс действительно требовал дополнительного пространства. В стандартных конфигурациях с обычными Ethernet-интерфейсами без туннелей уязвимость не эксплуатируется.
Есть ли публичный эксплойт
На момент публикации CVE-2026-74743 публичные эксплойты или PoC-коды в открытых базах данных не зафиксированы. В источниках указаны только коммиты с исправлением и описание проблемы.
Отсутствие публичного эксплойта не означает, что уязвимость не может быть эксплуатирована. Исследователи могут разработать PoC на основе технического описания. Рекомендуется считать уязвимость потенциально эксплуатируемой, особенно в средах с высокой ценностью данных.
Признаки эксплуатации
Специфические индикаторы компрометации (IOC) для этой уязвимости не опубликованы. Однако можно отслеживать следующие неспецифичные признаки:
- Записи в
dmesgилиkern.logо сбоях KASAN, связанных сmacvlan,dev_hard_headerилиskb.
- Нестабильность сетевых интерфейсов macvlan, сопровождающаяся падением ядра.
- Необъяснимые задержки в передаче пакетов на интерфейсах с туннелями (WireGuard, IPsec).
Эти признаки могут указывать на другие проблемы, поэтому их наличие требует дополнительной диагностики.
Как обнаружить атаку
Для обнаружения попыток эксплуатации или последствий уязвимости рекомендуется:
- Мониторинг логов ядра на наличие сообщений KASAN, упоминаний
macvlanиuse-after-free.
- Использование инструментов аудита сетевых интерфейсов для проверки конфигураций macvlan.
- Анализ трафика на аномальные пакеты, направленные на macvlan-интерфейсы, особенно если они используют туннели.
Автоматические правила для SIEM-систем, специфичные для CVE-2026-74743, не предоставлены в источниках. Рекомендуется настроить алерты на падения ядра и сетевые аномалии.
Как проверить свою версию
Для проверки версии ядра и наличия патча используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Сравните полученную версию с официальными релизами Linux kernel, содержащими коммит
cef51860becd9700217c81732ca1eb1ea6ed6fe1. Если ваша версия ядра старше даты коммита (06.08.2026), вероятно, патч не применен.Для проверки конкретных пакетов дистрибутива используйте инструменты управления пакетами (например,
apt list --installed linux-image для Debian/Ubuntu), заменив <имя-пакета> на фактическое имя пакета ядра в вашей системе.Исправление
Единственный надежный способ устранения уязвимости — обновление ядра Linux до версии, содержащей исправление.
- Примените патч
cef51860becd9700217c81732ca1eb1ea6ed6fe1или обновитесь до актуальной стабильной ветки ядра.
- Для дистрибутивов: установите обновления ядра из официальных репозиториев безопасности.
- После обновления перезагрузите систему для применения нового ядра.
Не используйте cherry-pick отдельных коммитов без полного обновления, так как ядро является сложной системой, и отдельные патчи могут быть несовместимы с другими изменениями.
Временные меры защиты
Пока не применено обновление, можно снизить риск эксплуатации:
- Избегайте использования macvlan поверх устройств, требующих дополнительного headroom/tailroom (WireGuard, IPsec, MACsec, туннели).
- Если использование macvlan обязательно, рассмотрите альтернативные методы виртуализации сетей (например, bridge с фильтрацией, если это допустимо политикой безопасности).
- Ограничьте доступ к macvlan-интерфейсам, разрешив трафик только от доверенных источников.
- Убедитесь, что KASAN включен в ядре (если это допустимо в рабочей среде), чтобы фиксировать попытки эксплуатации.
Эти меры не устраняют уязвимость, но снижают вероятность успешной атаки.
Как проверить устранение уязвимости
После обновления ядра проверьте, что патч применен:
- Убедитесь, что система работает на новой версии ядра:
uname -r.
- Проверьте наличие коммита в истории ядра (если доступно):
git log --oneline | grep cef51860becd9700217c81732ca1eb1ea6ed6fe1(для сборок из исходников).
- Проведите функциональное тестирование сетевых интерфейсов macvlan, убедившись, что трафик проходит корректно и не вызывает сбоев.
- Проверьте логи ядра на отсутствие новых сообщений KASAN или ошибок памяти.
Если система стабильна и версия ядра соответствует актуальной, уязвимость считается устраненной.
Вывод
CVE-2026-74743 представляет серьезную угрозу для систем, использующих macvlan поверх туннелированных интерфейсов. Ошибка в наследовании параметров памяти может привести к падению ядра или выполнению кода.
Рекомендуется срочно обновить ядро до актуальной версии, содержащей патч. Временные меры, такие как ограничение использования macvlan с туннелями, могут снизить риск, но не заменяют обновление.
Мониторинг логов и тестирование после обновления помогут убедиться в эффективности исправления.
Официальные источники
- NVD — CVE-2026-74743
- FIRST EPSS — CVE-2026-74743
- macvlan: inherit needed_headroom and needed_tailroom from lowerdev - kernel/git/stable/linux.git - Linux kernel stable tree
- macvlan: inherit needed_headroom and needed_tailroom from lowerdev - kernel/git/stable/linux.git - Linux kernel stable tree
- macvlan: inherit needed_headroom and needed_tailroom from lowerdev - kernel/git/stable/linux.git - Linux kernel stable tree
- macvlan: inherit needed_headroom and needed_tailroom from lowerdev - kernel/git/stable/linux.git - Linux kernel stable tree
- macvlan: inherit needed_headroom and needed_tailroom from lowerdev - kernel/git/stable/linux.git - Linux kernel stable tree
- macvlan: inherit needed_headroom and needed_tailroom from lowerdev - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 29.08.2026 — Опубликована первая версия материала.
