CVE-2026-99076 in Linux
Сводка
по VulDB • 24.10.2026
В ядре Linux была устранена следующая уязвимость:
ipv6: udp: Создание исключений до сопоставления с сокетом
В настоящее время, когда пакеты ICMPv6 «Packet Too Big» (Слишком большой пакет) и Redirect Message (Сообщение о перенаправлении) локально доставляются и цитируют UDP-пакет, исключение создается в кэше исключений IPv6 только в том случае, если ядро может сопоставить UDP-пакет с существующим сокетом.
Такое поведение позволяет атакующим, находящимся вне пути (off-path), проводить атаку по побочному каналу на кэш исключений для обнаружения эфемерного порта, используемого подключенным UDP-сокетом.
Коммиты 4785305c05b2 («ipv6: use siphash in rt6_exception_hash()») и a00df2caffed («ipv6: make exception cache less predictible») пытались смягчить такие атаки, усложнив для злоумышленников обнаружение коллизий хешей в кэше исключений и рандомизировав количество исключений, которое может хранить одна корзина хеша. К сожалению, обе эти меры защиты могут быть обойдены.
Вместо этого следует смягчать такие атаки путем всегда создания исключения даже до попытки найти подходящий сокет. Это достигается вызовом функций ip6_update_pmtu() и ip6_redirect(), которые являются вспомогательными функциями, используемыми, когда цитируемый пакет не исходил от сокета.
Это означает, что любые предположения (верные или неверные) атакующего вне пути всегда приведут к созданию или обновлению исключения в кэше, которое может наблюдать злоумышленник.
Передавайте ifindex входящего устройства и uid по умолчанию аналогично тому, как это делается в icmpv6_err(). В отличие от IPv4, значение oif равное 0 не будет соответствовать ни одному следующему узлу (nexthop) в ip6_redirect_nh_match(), и исключение не будет создано в ответ на сообщение Redirect Message.
Обратите внимание, что это не позволяет злоумышленникам создавать исключения, которые они не могли создать ранее, так как обе вспомогательные функции уже доступны при минимальной или отсутствующей проверке. Например, путем отправки ошибки ICMPv6, которая цитирует ответ Echo Reply (ICMPv6), или UDP-пакет с исходным портом, соответствующим сокету с маской wildcard.
Также отметьте, что в случае успешного совпадения сокета описанная схема обходится за счет дополнительного поиска маршрута, так как вспомогательные функции «без сокета» выполняют собственный поиск перед тем, который выполняется ip6_sk_update_pmtu() / ip6_sk_redirect(). Когда эти два процесса приводят к разным следующим узлам (nexthops), это также приводит к созданию двух исключений для одного и того же IP-адреса назначения: одно в кэше исключений следующего узла, разрешенного вспомогательными функциями «без сокета», а другое — в кэше исключений следующего узла, используемого сокетом.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.