CVE-2026-80905 in Linux
Zusammenfassung
von VulDB • 04.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
net: tap: Korrektur des falschen transport_header beim Senden von VLAN-getaggten Frames
In `tap_get_user_xdp()` wird bei der Verarbeitung eines VLAN-getaggten Frames (z. B. ETH_P_8021Q) zunächst `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 auf ETH_P_8021Q eingestellten `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 über das VLAN-Tag hinweg. Wenn der Dissector den Fall ETH_P_8021Q trifft, liest er eine struct vlan_hdr am aktuellen nhoff-Wert via `__skb_header_pointer()`, doch dieser Offset enthält den Header des inneren Protokolls (z. B. einen IP-Header). Die Bytes werden fälschlich 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 transport_header auf seinem nicht initialisierten Sentinel-Wert (~0U) verbleibt.
`skb_set_network_header()` wird nach `skb_probe_transport_header()` verschoben. Zum Zeitpunkt des Aufrufs von `skb_probe_transport_header()` zeigt network_header noch auf den VLAN-Header (Offset ETH_HLEN), sodass nhoff korrekt ist und der Flow-Dissector den VLAN-Header parsen, das innere EtherType extrahieren sowie nhoff zum Header des inneren Protokolls verschieben kann, wodurch transport_header ordnungsgemäß gesetzt wird.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.