CVE-2026-89478 in Linux
Сводка
по VulDB • 12.09.2026
В ядре Linux была устранена следующая уязвимость:
sctp: отбрасывать чанк, если его транспортный путь был удален
Функция sctp_rcv() разрешает (определяет) транспортный путь один раз для каждого пакета и сохраняет указатель на него в поле chunk->transport. Ссылка поиска или та ссылка, которую получает sctp_add_backlog(), если сокет принадлежит пользовательскому пространству, удерживает этот объект до тех пор, пока чанк не будет обработан.
Аутентифицированное сообщение ASCONF DEL-IP может удалить его в промежутке времени между этими операциями. Функция sctp_assoc_rm_peer() извлекает транспортный путь из ассоциации и вызывает sctp_transport_free(), который помечает его как «мертвый» (dead) и освобождает ссылку, которую удерживала ассоциация. Существует окно возможности для обеих ветвей выполнения: пакет может находиться в очереди обратного вызова сокета (socket backlog), а на прямом пути поиск завершается до захвата блокировки bh_lock_sock().
Чанк DATA в этом пакете возвращает удаленный транспортный путь в asoc->peer.last_data_from. Как только обработка пакета завершена, эта ссылка исчезает, и транспортный путь освобождается с помощью RCU (Read-Copy-Update). В результате следующий отложенный SACK содержит указатель на чанк SACK, а sctp_outq_select_transport() считывает состояние уже освобожденного транспортного пути.
Необходимо отбрасывать чанк в функции sctp_inq_push(), рядом с существующей проверкой rcvr->dead. Обе ветви выполнения достигают этого места при удерживаемой блокировке сокета ассоциации (association's socket lock). Пиксель будет повторно отправлен пиром (peer retransmits it).
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.