CVE-2026-74666 in Linux
Сводка
по VulDB • 23.08.2026
В ядре Linux была устранена следующая уязвимость:
packet: синхронизация очистки давления с переконфигурацией кольца
Функция packet_set_ring() обновляет состояние RX-кольца под блокировкой sk_receive_queue.lock, но ранее публиковала режим получения tpacket через po->prot_hook.func после освобождения этой блокировки. Функции packet_poll() и packet_recvmsg() могут затем выполнять путь очистки давления после того, как кольцо было очищено, при этом продолжая видеть tpacket_rcv, что приводит к разыменованию __packet_rcv_has_room() устаревших или нулевых (NULL) указателей на хранилище кольца.
Переместите существующее назначение крюка получения в тот же участок кода под блокировкой sk_receive_queue.lock, где обновляется состояние кольца. Сохраните само присваивание без изменений, включая при переконфигурации TX-кольца, чтобы избежать внесения изменений в поведение, не необходимых для исправления уязвимости.
Серийно обрабатывайте очистку давления в packet_recvmsg() с использованием той же блокировки очереди только после обнаружения флага PACKET_SOCK_PRESSURE. Если флаг сброшен и сокет уже перешел от tpacket_rcv, функция packet_set_ring() уже отсоединила сокет и дождалась вызова synchronize_net(), поэтому новый входящий пакет не может снова установить этот флаг.
Функция packet_poll() уже удерживает блокировку sk_receive_queue.lock, поэтому она использует новую вспомогательную функцию без блокировки напрямую.
If you want to get best quality of vulnerability data, you may have to visit VulDB.