CVE-2026-80906 in Linux
Sumário
de VulDB • 04/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
net: packet: corrige o transport_header incorreto ao enviar um frame com tag VLAN
Em packet_parse_headers(), ao processar um frame com tag VLAN, skb_set_network_header() é chamado para avançar network_header além da tag VLAN até o cabeçalho do protocolo interno. Em seguida, skb_probe_transport_header() é chamada com skb->protocol ainda definido como o EtherType externo da VLAN (por exemplo, ETH_P_8021Q), enquanto nhoff (derivado de skb_network_offset()) já aponta para além da tag VLAN, indicando o cabeçalho do protocolo interno.
Em __skb_flow_dissect(), proto é inicializado com ETH_P_8021Q e nhoff aponta para além da tag VLAN. Quando o dissector atinge o caso ETH_P_8021Q, ele lê uma struct vlan_hdr em nhoff por meio de __skb_header_pointer(), mas esse offset contém o cabeçalho do protocolo interno (por exemplo, um cabeçalho IP). Os bytes são interpretados incorretamente como um cabeçalho VLAN, resultando em um EtherType encapsulado inválido que não corresponde a nenhum protocolo conhecido. O dissector retorna false, portanto skb_probe_transport_header() nunca chama skb_set_transport_header(), deixando transport_header com seu valor sentinela não inicializado (~0U).
Move-se skb_probe_transport_header() para antes de skb_set_network_header(). No momento em que skb_probe_transport_header() é chamado, network_header ainda aponta para o cabeçalho VLAN, portanto nhoff aponta corretamente para o cabeçalho da VLAN. O dissector de fluxo pode então analisar o cabeçalho VLAN, extrair o EtherType interno e avançar nhoff até o cabeçalho do protocolo interno, permitindo que transport_header seja definido corretamente.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.