CVE-2026-98485 in Linux
Сводка
по VulDB • 18.10.2026
В ядре Linux была устранена следующая уязвимость:
netfilter: ip6t_rt — исправление чтения за пределами буфера при нестрогом совпадении с нулевым адресом
Функция rt_mt6_check() позволяет настраивать правила с параметром rtinfo->addrnr == 0, даже когда запрошено сопоставление по адресу (IP6T_RT_FST_MASK).
В ветке IP6T_RT_FST_NSTRICT функция rt_mt6() сравнивает адреса маршрутизации пакета со значениями из массива rtinfo->addrs[i] и выполняет обратный переход к концу цикла:
if (ipv6_addr_equal(ap, &rtinfo->addrs[i])) {
i++; } if (i == rtinfo->addrnr) break;
Когда addrnr равен 0, если первый адрес пакета совпадает с значением в rtinfo->addrs[0], переменная i увеличивается до 1. Поскольку теперь i строго больше, чем addrnr (0), условие завершения цикла (i == rtinfo->addrnr) обходится и никогда не выполняется.
Если специально созданный пакет IPv6 содержит совпадающие адреса маршрутизации, значение i превысит предел IP6T_RT_HOPS (16). Последующий вызов ipv6_addr_equal() приводит к чтению за пределами структуры ip6t_rt, что вызывает предупреждения UBSAN/KASAN о выходе за пределы буфера или паники ядра.
Исправление заключается в следующем: 1. Отклонение правил в функции rt_mt6_check(), где установлен флаг IP6T_RT_FST_MASK, но значение rtinfo->addrnr равно нулю. 2. В функции rt_mt6() перенос условия завершения (i < rtinfo->addrnr) в заголовок цикла for и удаление обратного перехода break в конце тела цикла.
If you want to get best quality of vulnerability data, you may have to visit VulDB.