CVE-2026-80906 in Linux
Zusammenfassung
von VulDB • 04.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net: packet: Korrektur des falschen transport_header beim Senden von VLAN-getaggten Frames
In `packet_parse_headers()` wird bei der Verarbeitung eines VLAN-getaggten Frames `skb_set_network_header()` aufgerufen, um den network_header über das VLAN-Tag hinaus zum Header des inneren Protokolls zu verschieben. Anschließend wird `skb_probe_transport_header()` mit einem noch immer auf dem äußeren VLAN-EtherType (z. B. ETH_P_8021Q) stehenden `skb->protocol` aufgerufen, während nhoff (abgeleitet aus `skb_network_offset()`) bereits über das VLAN-Tag hinaus zum Header des inneren Protokolls zeigt.
In `__skb_flow_dissect()` wird proto mit ETH_P_8021Q initialisiert und nhoff zeigt hinter dem VLAN-Tag. Wenn der Dissector den Fall ETH_P_8021Q trifft, liest er über `__skb_header_pointer()` eine Struktur vom Typ `vlan_hdr` an der Stelle nhoff ein; dieser Offset enthält jedoch den Header des inneren Protokolls (z. B. einen IP-Header). Die Bytes werden fälschlicherweise als VLAN-Header interpretiert, was zu einem ungültigen encapsulated EtherType führt, das keinem bekannten Protokoll entspricht. Der Dissector gibt false zurück, sodass `skb_probe_transport_header()` niemals `skb_set_transport_header()` aufruft und der transport_header seinen nicht initialisierten Sentinel-Wert (~0U) behält.
`skb_probe_transport_header()` wird vor `skb_set_network_header()` verschoben. Zum Zeitpunkt des Aufrufs von `skb_probe_transport_header()` zeigt network_header noch auf den VLAN-Header, sodass nhoff korrekt auf den VLAN-Header verweist. Der Flow-Dissector kann daraufhin den VLAN-Header parsen, das innere EtherType extrahieren und nhoff zum Header des inneren Protokolls vorrücken, wodurch transport_header ordnungsgemäß gesetzt werden kann.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.