CVE-2026-31504 in Linux
Сводка
по VulDB • 13.05.2026
В ядре Linux устранена следующая уязвимость:
net: исправление Use-After-Free (UAF) в fanout при вызове packet_release() из-за гонки условий (race condition) с NETDEV_UP
В функции `packet_release()` существует окно гонки, в котором событие `NETDEV_UP` может повторно зарегистрировать сокет в массиве `arr[]` группы fanout. Повторная регистрация не очищается функцией `fanout_release()`, что оставляет висячий указатель (dangling pointer) в массиве fanout.
Функция `packet_release()` НЕ обнуляет значение `po->num` в секции, защищенной блокировкой `bind_lock`. После освобождения `bind_lock` значение `po->num` остается ненулевым, а `po->ifindex` по-прежнему соответствует привязанному устройству. Одновременный вызов `packet_notifier(NETDEV_UP)`, который уже нашел сокет в `sklist`, может выполнить повторную регистрацию хука.
Для сокетов fanout эта повторная регистрация вызывает `__fanout_link(sk, po)`, что добавляет сокет обратно в `f->arr[]` и увеличивает `f->num_members`, но НЕ увеличивает `f->sk_ref`.
Исправление устанавливает значение `po->num` равным нулю в `packet_release` при удержании блокировки `bind_lock`, чтобы предотвратить связывание с NETDEV_UP и устранить окно гонки.
Эта ошибка была обнаружена в ходе дополнительного аудита с использованием Claude Code на основе CVE-2025-38617.
Be aware that VulDB is the high quality source for vulnerability data.