CVE: CVE-2026-74582
Продукт: Linux Kernel
Дата публикации: 21.08.2026
Критичность: HIGH
CVSS: 7.8 (3.1)
EPSS: 0,12%; процентиль 2,03%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В подсистеме
af_packet ядра Linux обнаружена гонка, связанная с несогласованным чтением параметра hard_header_len при отправке пакетов. Рассинхронизация значений между вычислением резерва и выделением буфера skb приводит к out-of-bounds записи в память ядра. Материал описывает механику ошибки, условия эксплуатации и способы проверки исправления.Основные характеристики
Риск заключается в нарушении целостности памяти ядра через запись за пределы выделенного буфера. Ошибка возникает из-за гонки при чтении конфигурации сетевого устройства в момент формирования пакета.
- Тип уязвимости: Race condition, приводящий к out-of-bounds write (OOB write) в памяти ядра.
- CVSS 3.1: 7.8 (HIGH). Вектор:
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. Оценка отражает локальный доступ с низкими привилегиями и полное воздействие на конфиденциальность, целостность и доступность.
- EPSS: 0,12% (процентиль 2,03%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая.
- Статус эксплуатации: Публичные данные о подтвержденной эксплуатации в реальных атаках отсутствуют.
Какие продукты и версии затронуты
Затронуты версии Linux Kernel, в которых функции
packet_snd() и packet_sendmsg_spkt() читают dev->hard_header_len несколько раз без фиксации значения.- Компонент: Подсистема
af_packet(файлnet/packet/af_packet.c).
- Функции:
packet_snd(),packet_sendmsg_spkt().
- История: Ошибка была введена коммитом
b84bbaf7a6c8и исправлена в патче03390aa32e669cc4ecd7d34108e2e1afc13d689d.
Точный список уязвимых версий не указан в предоставленных источниках. Для определения статуса системы необходимо сверить версию ядра с официальными релизами дистрибутива, содержащими данный фикс.
Причина уязвимости
Причина уязвимости — нарушение атомарности чтения конфигурационных параметров сетевого устройства во время формирования пакета.
Функция
packet_snd() обращается к dev->hard_header_len несколько раз: сначала для определения размера резерва (reserve), затем для вычисления размера headroom при выделении skb.Между этими чтениями может произойти переконфигурация устройства (например, смена типа bonding-интерфейса), что изменяет значение
hard_header_len. Если первое чтение вернуло большое значение, а второе — меньшее, выделенный буфер окажется слишком малым для данных, которые ядро попытается в него записать.Как работает атака
Атака эксплуатирует временное окно между чтением конфигурации и выделением памяти.
- Атакующий открывает сокет типа
SOCK_RAWилиSOCK_DGRAM.
- Во время вызова
sendto()функцияpacket_snd()читаетhard_header_lenдля расчетаreserve.
- Параллельно значение
hard_header_lenуменьшается из-за переконфигурации устройства.
- При выделении
skbфункцияLL_RESERVED_SPACE()использует новое, меньшее значение, выделяя меньше памяти, чем требуется дляreserve.
- При сдвиге указателя
skb->dataназад на величинуreserveон оказывается за границейskb->head.
- Последующее копирование данных из пользовательского пространства приводит к out-of-bounds записи в память ядра.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости атакующему необходимо:
- Локальный доступ: Наличие учетной записи на целевой системе.
- Права на создание сокетов: Возможность открывать сокет
AF_PACKET(обычно требуетCAP_NET_RAWили root-прав).
- Возможность переконфигурации: Доступ к изменению параметров сетевого устройства (например,
CAP_NET_ADMIN) для создания гонки.
- Точность тайминга: Необходимость попасть в узкое временное окно между чтением параметра и выделением буфера.
Возможный сценарий атаки
Сценарий атаки предполагает одновременное выполнение двух потоков.
Первый поток инициирует отправку пакета через
AF_PACKET сокет. Второй поток изменяет тип bonding-интерфейса или другую конфигурацию, влияющую на hard_header_len.Если изменение конфигурации произойдет в момент, когда
packet_snd() уже прочитал старое значение для reserve, но еще не вычислил размер выделенного буфера, произойдет рассинхронизация. Ядро выделит буфер, рассчитанный под новый (меньший) заголовок, но попытается вписать в него данные, рассчитанные под старый (больший) заголовок. Это приведет к записи за пределы буфера и потенциальному выполнению кода в контексте ядра.Есть ли публичный эксплойт
На момент публикации CVE-2026-74582 публичные эксплойты или PoC в открытых базах данных не зафиксированы.
- PoC: Отсутствуют.
- Техническое описание: Доступно в коммитах исправления.
- Подтвержденная эксплуатация: Случаев использования уязвимости в реальных атаках не обнаружено.
Отсутствие публичного эксплойта не означает, что уязвимость не может быть эксплуатирована. Механика гонки сложна, но реализуема при наличии соответствующих привилегий.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для данной уязвимости не определены, так как она не оставляет характерных следов в логах по умолчанию.
- Неспецифичные признаки:
- Аномальные изменения конфигурации bonding-интерфейсов.
- Внезапные сбои ядра (kernel panic) или ошибки памяти в процессах, работающих с
AF_PACKET.
- Необычная активность процессов с правами
CAP_NET_RAW.
- Аномальные изменения конфигурации bonding-интерфейсов.
Эти признаки могут указывать на другие проблемы, поэтому требуют дополнительной верификации.
Как обнаружить атаку
Обнаружение атаки затруднено из-за природы гонки.
- Мониторинг конфигурации: Отслеживание изменений параметров сетевых устройств (bonding, VLAN) через
auditd.
- Анализ сбоев: Поиск записей в
dmesgилиkern.logоб ошибках памяти, связанных сaf_packetилиskb.
- Проверка версии: Регулярная сверка версии ядра с базой уязвимостей для подтверждения наличия патча.
Специализированные правила SIEM для данного CVE отсутствуют.
Как проверить свою версию
Для проверки версии ядра и определения необходимости обновления используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Полученную версию необходимо сверить с официальными уведомлениями безопасности вашего дистрибутива Linux. Если дистрибутив предоставляет пакет ядра, проверьте наличие обновлений через пакетный менеджер (например,
apt, yum, dnf), заменив <имя-пакета> на фактическое имя пакета ядра в вашей системе.Исправление
Единственным надежным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление.
- Официальный патч: Коммит
03390aa32e669cc4ecd7d34108e2e1afc13d689dв mainline и соответствующие backport'ы в stable-ветки.
- Действия:
- Проверьте наличие обновлений ядра в репозитории вашего дистрибутива.
- Установите обновленный пакет ядра.
- Перезагрузите систему для применения нового ядра.
- Проверьте наличие обновлений ядра в репозитории вашего дистрибутива.
Не пытайтесь применять патч вручную, если дистрибутив не предоставляет его в виде пакета.
Временные меры защиты
Полной временной защиты от этой уязвимости не существует, так как она затрагивает ядро.
- Ограничение прав: Ограничьте доступ к
CAP_NET_RAWиCAP_NET_ADMINтолько для доверенных процессов и пользователей.
- Контроль конфигурации: Ограничьте возможность динамической переконфигурации bonding-интерфейсов в критических системах.
- Мониторинг: Усиленный мониторинг процессов, работающих с
AF_PACKET.
Эти меры снижают вероятность успешной атаки, но не устраняют уязвимость.
Как проверить устранение уязвимости
Для подтверждения успешного исправления выполните следующие шаги:
- Проверьте версию ядра после перезагрузки:
Bash:uname -r - Убедитесь, что версия соответствует той, в которой заявлено наличие патча для CVE-2026-74582.
- Проверьте логи загрузки ядра на наличие ошибок:
Bash:dmesg | grep -i "af_packet\|skb" - Если возможно, выполните функциональное тестирование сетевых сокетов
AF_PACKETдля подтверждения работоспособности.
Вывод
CVE-2026-74582 представляет собой серьезную уязвимость в Linux Kernel, связанную с гонкой в подсистеме
af_packet. Она позволяет локальному атакующему с низкими привилегиями нарушить целостность памяти ядра.Несмотря на сложность эксплуатации, риск остается высоким из-за потенциала для повышения привилегий. Администраторам необходимо срочно обновить ядро до исправленной версии и ограничить доступ к сетевым функциям ядра.
Официальные источники
- NVD — CVE-2026-74582
- FIRST EPSS — CVE-2026-74582
- packet: use consistent hard_header_len in non-ring send paths - kernel/git/stable/linux.git - Linux kernel stable tree
- packet: use consistent hard_header_len in non-ring send paths - kernel/git/stable/linux.git - Linux kernel stable tree
- packet: use consistent hard_header_len in non-ring send paths - kernel/git/stable/linux.git - Linux kernel stable tree
- packet: use consistent hard_header_len in non-ring send paths - kernel/git/stable/linux.git - Linux kernel stable tree
- packet: use consistent hard_header_len in non-ring send paths - kernel/git/stable/linux.git - Linux kernel stable tree
- packet: use consistent hard_header_len in non-ring send paths - kernel/git/stable/linux.git - Linux kernel stable tree
- packet: use consistent hard_header_len in non-ring send paths - kernel/git/stable/linux.git - Linux kernel stable tree
- packet: use consistent hard_header_len in non-ring send paths - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 21.08.2026 — Опубликована первая версия материала.
- 26.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
- 28.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
