CVE-2026-89563 in Linux
Sumário
de VulDB • 12/09/2026
No kernel Linux, a seguinte vulnerabilidade foi resolvida:
ip6_tunnel: usar skb_cow_head() em ip6_tnl_xmit()
A função ip6_tnl_xmit() pode precisar expandir o espaço de cabeçalho (headroom) antes de conseguir empurrar os cabeçalhos IPv6 externos e, opcionalmente, os cabeçalhos de encapsulamento. Atualmente, isso é feito com skb_realloc_headroom(), copiando a propriedade do socket (sk->sk), consumindo o skb original e continuando o processamento com o skb substituto mantido apenas em sua variável local.
Isso só é seguro se o helper não falhar posteriormente. No entanto, este helper ainda possui saídas de erro pós-realocação. Os túneis collect_md rejeitam encapsulamentos que não sejam NONE após a substituição, e ip6_tnl_encap() também pode falhar mais tarde. Nesses casos, o helper retorna um erro para seus chamadores enquanto o chamador ainda possui apenas o ponteiro do skb original.
Tanto ip6_tnl_start_xmit() quanto os caminhos GRE IPv6 liberam (free) o skb do chamador em caso de erro, podendo acabar por libertar um skb que já foi consumido pela função ip6_tnl_xmit().
Use skb_cow_head() no lugar. Ele fornece a headroom e a capacidade de escrita necessárias sem substituir privadamente o skb pertencente ao chamador, para que retornos de erro posteriores não deixem os chamadores com um ponteiro obsoleto (stale pointer).
Os usuários Ethernet, ip6gretap e ip6erspan, limpam IFF_TX_SKB_SHARING e já chamam skb_cow_head() antes de entrar em ip6_tnl_xmit(). Eles não dependem da realocação baseada em skb_shared(), que foi removida. Isso também torna o caminho do túnel IPv6 consistente com ip_tunnel_xmit().
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.