* CVE-2026-80905: net: tap: fix wrong transport_header when sending VLAN-tagged frame
@ 2026-09-04 17:17 Greg Kroah-Hartman
0 siblings, 0 replies; only message in thread
From: Greg Kroah-Hartman @ 2026-09-04 17:17 UTC (permalink / raw)
To: linux-cve-announce; +Cc: Greg Kroah-Hartman
From: Greg Kroah-Hartman <gregkh@kernel.org>
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
net: tap: fix wrong transport_header when sending VLAN-tagged frame
In tap_get_user_xdp(), when processing a VLAN-tagged frame (e.g.
ETH_P_8021Q), skb_set_network_header() is called first to advance
network_header past the VLAN tag to the inner protocol header.
skb_probe_transport_header() is then called with skb->protocol still
set to ETH_P_8021Q, while nhoff (derived from skb_network_offset())
already points past the VLAN tag to the inner protocol header.
In __skb_flow_dissect(), proto is initialized to ETH_P_8021Q and nhoff
points past the VLAN tag. When the dissector hits case ETH_P_8021Q, it
reads a struct vlan_hdr at the current nhoff via __skb_header_pointer(),
but that offset contains the inner protocol header (e.g. an IP header).
The bytes are misinterpreted as a VLAN header, yielding a garbage
encapsulated EtherType that matches no known protocol. The dissector
returns false, so skb_probe_transport_header() never calls
skb_set_transport_header(), leaving transport_header at its uninitialized
sentinel value (~0U).
Move skb_set_network_header() to after skb_probe_transport_header(). At
the time skb_probe_transport_header() is called, network_header still
points to the VLAN header (offset ETH_HLEN), so nhoff is correct and the
flow dissector can parse the VLAN header, extract the inner EtherType,
and advance nhoff to the inner protocol header, allowing transport_header
to be set correctly.
The Linux kernel CVE team has assigned CVE-2026-80905 to this issue.
Affected and fixed versions
===========================
Issue introduced in 5.0 with commit 8c76e77f9069f10505c08e02646c3ee11ad79038 and fixed in 6.18.46 with commit 5ffaa5d7f56ab24a8e23cf131eadfef31a3bbc4b
Issue introduced in 5.0 with commit 8c76e77f9069f10505c08e02646c3ee11ad79038 and fixed in 7.1.10 with commit 88b79ac89ecc04d7f2613f7e1c0b46f0c4ddb2f3
Issue introduced in 5.0 with commit 8c76e77f9069f10505c08e02646c3ee11ad79038 and fixed in 7.2 with commit cbb35cbe8db268fefe34c23df15348cf99025298
Issue introduced in 4.20.1 with commit 3cae5ef1f37a475faf7c40bc6a3c170779f3e0b1
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2026-80905
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
drivers/net/tap.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/5ffaa5d7f56ab24a8e23cf131eadfef31a3bbc4b
https://git.kernel.org/stable/c/88b79ac89ecc04d7f2613f7e1c0b46f0c4ddb2f3
https://git.kernel.org/stable/c/cbb35cbe8db268fefe34c23df15348cf99025298
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-04 17:20 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-04 17:17 CVE-2026-80905: net: tap: fix wrong transport_header when sending VLAN-tagged frame Greg Kroah-Hartman
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.