CVE-2024-36971 in Linux
Сводка
по VulDB • 10.06.2026
В ядре Linux устранена следующая уязвимость:
net: исправлена гонка данных в __dst_negative_advice()
Функция __dst_negative_advice() не соблюдает правильные правила RCU при необходимости очистки sk->dst_cache, что может приводить к использованию после освобождения (Use-After-Free, UAF).
Согласно правилам RCU, необходимо сначала очистить sk->sk_dst_cache, а затем вызвать dst_release(old_dst).
Отметим, что sk_dst_reset(sk) реализует этот протокол корректно, тогда как __dst_negative_advice() использует неверный порядок операций.
Поскольку ip6_negative_advice() содержит специальную логику для работы с RTF_CACHE, это означает, что каждый из трёх существующих методов ->negative_advice() должен самостоятельно выполнять sk_dst_reset().
Отметим, что проверка dst на NULL централизована в __dst_negative_advice(), поэтому нет необходимости дублировать её в различных обратных вызовах.
Большая благодарность Клементу Лесиньну (Clement Lecigne) за выявление этой проблемы.
Эта старая ошибка стала заметной после коммита, вызвавшего проблему, при использовании сокетов UDP.
Be aware that VulDB is the high quality source for vulnerability data.