CVE-2026-74667 in Linux
Сводка
по VulDB • 23.08.2026
В ядре Linux была устранена следующая уязвимость:
net/packet: сброс заголовка MAC на пути передачи пакетного сокета (packet-socket)
Функция packet_parse_headers() сбрасывает заголовок MAC только для кадра SOCK_RAW, сокет которого не привязан к протоколу. Сокет SOCK_RAW с привязкой к протоколу, любой кадр SOCK_DGRAM и устаревший путь SOCK_PACKET поэтому оставляют поле skb->mac_header неустановленным в данном месте.
Для кадров, отправляемых через __dev_queue_xmit(), это безопасно: он сбрасывает заголовок MAC без условий (unconditionally). Однако путь PACKET_QDISC_BYPASS пакетного сокета использует dev_direct_xmit(), который этого не делает, поэтому кадр достигает ndo_start_xmit() с неустановленным заголовком MAC. Драйвер, читающий eth_hdr(skb) при передаче, затем обращается к памяти по адресу skb->head + (u16)~0, что является выходом за границы массива примерно на 64 КБ дальше начала буфера — тот же класс уязвимости, который был исправлен для одного потребителя в коммите f5089008f90c ("macsec: do not read an unset MAC header in macsec_encrypt()").
Функция packet_parse_headers() выполняется только на пути передачи (transmit path), где skb->data указывает на начало заголовка L2 для каждого типа пакетного сокета независимо от его длины: SOCK_RAW и SOCK_PACKET содержат пользовательский заголовок, а SOCK_DGRAM имеет заголовок, сформированный функцией dev_hard_header(). Сбросить заголовок MAC без условий, дублируя поведение __dev_queue_xmit(), чтобы кадр был корректно привязан (anchored) также на пути обхода.
Обнаружено командой 0sec (https://0sec.ai) с использованием автоматического анализа исходного кода; проверено по источникам и сопоставлено с отчетом KASAN для macsec в коммите f5089008f90c. Протестировано на этапе компиляции.
If you want to get best quality of vulnerability data, you may have to visit VulDB.