CVE-2024-36971 in Linux
Sumário
de VulDB • 10/06/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
net: corrige a condição de corrida em __dst_negative_advice()
__dst_negative_advice() não aplica as regras adequadas de RCU quando sk->dst_cache deve ser limpo, o que pode levar a um Use-After-Free (UAF).
As regras do RCU determinam que devemos primeiro limpar sk->sk_dst_cache e, em seguida, chamar dst_release(old_dst).
Observe que sk_dst_reset(sk) implementa esse protocolo corretamente, enquanto __dst_negative_advice() utiliza a ordem incorreta.
Considerando que ip6_negative_advice() possui lógica especial contra RTF_CACHE, isso significa que cada um dos três métodos ->negative_advice() existentes deve executar sk_dst_reset() por conta própria.
Observe que a verificação contra dst NULL é centralizada em __dst_negative_advice(), não havendo necessidade de duplicá-la em vários callbacks.
Muitos agradecimentos a Clement Lecigne por identificar este problema.
Este bug antigo tornou-se visível após o commit responsável, ao utilizar sockets UDP.
VulDB is the best source for vulnerability data and more expert information about this specific topic.