CVE-2026-31684
Description
In the Linux kernel, the following vulnerability has been resolved:
net: sched: act_csum: validate nested VLAN headers
tcf_csum_act() walks nested VLAN headers directly from skb->data when an skb still carries in-payload VLAN tags. The current code reads vlan->h_vlan_encapsulated_proto and then pulls VLAN_HLEN bytes without first ensuring that the full VLAN header is present in the linear area.
If only part of an inner VLAN header is linearized, accessing h_vlan_encapsulated_proto reads past the linear area, and the following skb_pull(VLAN_HLEN) may violate skb invariants.
Fix this by requiring pskb_may_pull(skb, VLAN_HLEN) before accessing and pulling each nested VLAN header. If the header still is not fully available, drop the packet through the existing error path.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
A missing pskb_may_pull() check in the Linux kernel's act_csum packet classifier can cause out-of-bounds reads when processing nested VLAN headers.
The tcf_csum_ops->act() function in the Linux kernel's act_csum classifier walks nested VLAN headers directly from skb->data when a packet still has in-payload VLAN tags. Before this fix, the code did not use pskb_may_pull() to ensure that a full VLAN header (VLAN_HLEN bytes) was present in the linear area before reading vlan->h_vlan_encapsulated_proto and subsequently calling skb_pull(VLAN_HLEN). If only part of an inner VLAN header had been linearized, the read could go past the linear area, leading to an out-of-bounds access, and the skb_pull() call could corrupt the socket buffer's internal state. [1] [2] [3] [4]
The vulnerability resides in the network path where an attacker can craft a packet carrying multiple 802.1Q or 802.1ad VLAN headers, causing the kernel to attempt to parse multiple encapsulations. The attacker does not need any special privileges; the packet can be sent from a user space application or over the network to a host that uses the act_csum action in its traffic control rules. The kernel's existing error path drops the packet if the header is not fully available, but the missing linearity check defeats that safeguard. [1]
An attacker who successfully triggers the bug could cause a kernel crash (out-of-bounds read and kernel panic) leading to a denial of service (DoS) on the affected system. The CVSS v3 score of 5.5 (Medium) reflects the availability impact, with no confidentiality or integrity compromise expected. The issue does not appear to be exploitable for code execution, but it can reliably crash the kernel if the attack is repeated. [2] [3]
The fix adds a pskb_may_pull(skb, VLAN_HLEN) check before each nested VLAN header access, ensuring the header is fully linear before reading or pulling. If the check fails, the packet is dropped via the existing error path without performing the VLAN parsing. The fix has been applied to multiple stable kernel branches, and it is recommended to update to the latest patched kernel version to mitigate CVE-2026-31684. [1] [2] [3] [4]
AI Insight generated on May 18, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
8cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*+ 7 more
- cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*range: >=4.19.99,<4.20
- cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:7.0:rc4:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:7.0:rc5:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:7.0:rc6:*:*:*:*:*:*
- cpe:2.3:o:linux:linux_kernel:7.0:rc7:*:*:*:*:*:*
Patches
0No patches discovered yet.
Vulnerability mechanics
AI mechanics synthesis has not run for this CVE yet.
References
5- git.kernel.org/stable/c/3d165d975305cf76ff0b10a3c798fb31e5f5f9a5nvdPatch
- git.kernel.org/stable/c/a69738efea0996d05a3c7d2178551b891744df1bnvdPatch
- git.kernel.org/stable/c/c842743d073bdd683606cb414eb0ca84465dd834nvdPatch
- git.kernel.org/stable/c/eb3765b90eb8f2a3d6310a80c14a9e57ec4267a2nvdPatch
- git.kernel.org/stable/c/ec4930979b3f7bbeb7af5744599fc6603a4dba62nvdPatch
News mentions
0No linked articles in our index yet.