Уязвимость вызвана записью за пределы выделенного буфера в обработчике фрагментированных UDP-пакетов в IPv6 (CVE-2026-53362) и IPv4 (CVE-2026-5336) стеках ядра. Для эксплуатации уязвимости осуществляется отправка порции данных, размер которых не укладываются в допустимый размер фрагмента (превышает MTU), через UDP-сокет с выставленной опцией UDP_CORK, предписывающей объединять поступающие через сокет данные в одну датаграмму. Проблема возникает при обработке данных, требующих разделения на фрагменты, с параметром MSG_SPLICE_PAGES, который выставляется, например, при передаче данных из pipe-канала в сокет при помощи вызова splice().
Из-за ошибки неверно рассчитывается размер выделяемой памяти, что приводит к записи 15 хвостовых байтов за пределы выделенного буфера, в результате чего перезаписывается часть содержимого идущей следом структуры «skb_shared_info». Среди прочего, в структуре «skb_shared_info» перезаписывается поле «nr_frags», определяющее количество фрагментов. Через изменение данного поля можно создать условия когда ядро будет считать уже освобождённым фрагмент, как остающийся в обработке (use-after-free).
Проблема проявляется начиная с ядра 6.1. Исправление принято в ядро 21 июня и вошло в состав корректирующих выпусков
7.1.3,
6.18.38,
6.12.95,
6.6.144 и
6.1.177. Статус устранения уязвимости в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE/openSUSE, RHEL, Gentoo, Arch,
Fedora.
Для эксплуатации уязвимости через IPv6 достаточно, чтобы ядро было собрано с опцией «CONFIG_IPV6=y», а для атаки через IPv4 требуется возможность создания пространств имён идентификаторов пользователей (user namespace).
Источник: http://www.opennet.ru/opennews/art.shtml?num=65952
