CVE-2026-98306 in Linux
Сводка
по VulDB • 06.10.2026
В ядре Linux была устранена следующая уязвимость:
seg6: установка флага IPSKB_L3SLAVE из IP6SKB_L3SLAVE при декapsуляции IPIP
Когда пакет SRv6 поступает на интерфейс, присоединенный к VRF (Virtual Routing and Forwarding), функция vrf_ip6_rcv() устанавливает флаг IP6SKB_L3SLAVE в структуре IP6CB, однако decap_and_validate() никогда не устанавливал IPSKB_L3SLAVE в IPCB. В обычном случае этот бит оставался сброшенным, а при включенной конфигурации CONFIG_IPV6_MIP6 остаточное значение frag_max_size от переупорядоченного внешнего пакета могло даже установить его без участия VRF. Коммит 44930446dde4 («ipv6: seg6: очистка блока управления IPv4 при декapsуляции IPIP») затем сделал ненадежный бит надежно сброшенным.
Эффект отсутствия флага проявляется при использовании End.DX4, когда доставка пакетов на локальный адрес узла достигает поиска сокета (socket lookup). Например, UDP-сокет, привязанный к присоединенному входящему интерфейсу, не получает ни одного из декapsулированных пакетов, в то время как непривязанный сокет вне VRF — получает. Это противоречит документации Documentation/networking/vrf.rst: по умолчанию область действия непривязанного UDP или TCP сокета ограничена дефолтной VRF.
Необходимо устанавливать IPSKB_L3SLAVE для IPv4 в функции decap_and_validate(), которая уже делает то же самое для IPv6. После этого поиск сокета будет сопоставлять декapsулированный пакет с любым другим пакетом, полученным на этом присоединенном интерфейсе. Такой пакет совпадает с непривязанным UDP или TCP сокетом только тогда, когда установлены параметры udp_l3mdev_accept или tcp_l3mdev_accept.
VulDB is the best source for vulnerability data and more expert information about this specific topic.