CVE-2026-98371: уязвимость в IPTFS ядра Linux приводит к панике ядра
В подсистеме xfrm ядра Linux обнаружена уязвимость в механизме IPTFS, позволяющая вызвать панику ядра (skb_over_panic) при сборке фрагментированных внутренних пакетов. Проблема затрагивает системы с настроенными IPTFS SA и может эксплуатироваться как локально, так и удалённо против VPN-шлюзов. Критичность — отказ в обслуживании (DoS).
Подробности
Уязвимость затрагивает ядро Linux. Когда начало внутреннего пакета разбито между двумя внешними пакетами так, что в конце первого оказывается менее 4 байт, функция __input_process_payload() сохраняет эти байты как «runt» (остаток) и пропускает проверку iplen/iphlen, которая выполняется для обычных пакетов. При приходе пакета-продолжения функция iptfs_reassem_cont() требует лишь того, чтобы заявленная длина внутреннего пакета была не меньше sizeof(ra_runt) (6 байт), после чего выделяет буфер сборки с этой контролируемой атакующим длиной. Однако функция __iptfs_iphlen() всегда возвращает фиксированный минимальный размер IP-заголовка — 20 байт для IPv4 и 40 для IPv6. В результате для внутреннего IPv4-пакета с tot_len в диапазоне [6, 19] копирование заголовка выходит за пределы заявленной длины пакета, а последующая операция «ipremain -= copylen» приводит к целочисленному переполнению до ~4 ГБ. При этом длина копирования полезной нагрузки ограничена только значением blkoff (до 64 КБ). В ходе выполнения проверка свободного места в skb_put() превращает это в skb_over_panic() — панику ядра. Эксплуатация возможна локально через userns+netns с IPTFS SA, а также удалённо против IPTFS VPN-шлюзов, когда расшифрованный внешний skb является линейным (например, при перехвате через AF_PACKET или доставке через tun/tap). Уязвимость обнаружил динамический фаззер ядра autokbug в Tencent Yunding Lab.Что делать
Рекомендуется обновить ядро Linux до версии, содержащей исправление. Патч приводит путь обработки «runt» в соответствие с обычным путём: теперь заявленная длина внутреннего пакета должна покрывать как минимум размер IP-заголовка, что автоматически исключает и прежнюю проверку на sizeof(ra_runt), поскольку минимальный IP-заголовок всегда больше буфера runt. Если обновление невозможно, следует рассмотреть ограничение доступа к настройке IPTFS SA и минимизацию сценариев, при которых расшифрованные внешние skb остаются линейными (в частности, контроль за AF_PACKET-перехватами и доставкой через tun/tap). Для VPN-шлюзов на базе IPTFS рекомендуется приоритезировать установку обновления. Итог: CVE-2026-98371 — локальная и удалённая уязвимость отказа в обслуживании в подсистеме xfrm ядра Linux, приводящая к панике ядра. Ключевая мера защиты — своевременное обновление ядра.Источник: CVE Project (cvelistV5)
