Skip to main content

Linux Kernel CVE-2026-72444

| EUVDEUVD-2026-59343 HIGH
2026-08-15 Linux GHSA-2vpj-2c73-pm86
High
Disputed · 7.8 Vendor: Linux
Share

Severity by source

Sources disagree (Low–High)
Vendor (Linux) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
5.8 MEDIUM

AC:H because exploitation requires a specific three-part networking configuration; I:L and A:L because the described impact is uninitialized memory read, not a write or crash primitive.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:L
4.0 AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:L/VA:L/SC:N/SI:N/SA:N
SUSE
3.3 LOW
AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Red Hat
5.5 MEDIUM
qualitative

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Aug 17, 2026 - 09:28 vuln.today
CVSS changed
Aug 17, 2026 - 06:22 NVD
7.8 (HIGH)
Patch available
Aug 15, 2026 - 07:20 EUVD
CVE Published
Aug 15, 2026 - 05:56 cve.org
HIGH 7.8
CVE Published
Aug 15, 2026 - 05:56 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

flow_dissector: check device type before reading ETH_ADDRS

__skb_flow_dissect() unconditionally reads 12 bytes from eth_hdr(skb) when FLOW_DISSECTOR_KEY_ETH_ADDRS is requested. This assumes the skb has a valid Ethernet header at mac_header, which is not always the case.

The problem can be triggered by:

  1. Creating a TUN device in L3 mode (IFF_TUN, hard_header_len=0)
  2. Attaching a multiq qdisc with a flower filter matching on eth_src
  3. Sending a packet through AF_PACKET

Since TUN in L3 mode has no link-layer header, mac_header points to the L3 data area. The flow dissector reads 12 bytes of uninitialized skb memory, which then propagates through fl_set_masked_key() and is used as a rhashtable lookup key in __fl_lookup(), as reported by KMSAN.

Rejecting the filter in the control path (at tc filter add time) is not feasible because TC filter blocks can be shared between arbitrary devices -- a filter installed on an Ethernet device may later classify packets on a headerless device through a shared block. The device association is not fixed at filter creation time.

Fix this by gating the memcpy on dev->type == ARPHRD_ETHER, which ensures only true Ethernet-framed packets have their addresses read. This is more precise than the previous hard_header_len >= 12 check, which would incorrectly pass for non-Ethernet link types like IPoIB (ARPHRD_INFINIBAND, hard_header_len=24) and FDDI (hard_header_len=21) whose L2 headers are not in Ethernet format. Additionally check skb_mac_header_was_set() to guard against the pathological case where mac_header is the unset sentinel (~0U), which would cause eth_hdr() to return a wild pointer.

For the act_mirred redirect case (Ethernet packet redirected to a non-Ethernet device sharing a TC block), zeroing the key is the correct behavior: the packet is now being classified on the target device, where Ethernet address matching is not semantically meaningful.

Note: on non-Ethernet devices, the zeroed key will match a filter configured with all-zero MAC addresses. This is an improvement over the previous behavior where uninitialized memory could randomly match any filter.

AnalysisAI

Uninitialized kernel memory exposure in Linux kernel's flow_dissector subsystem allows a local low-privileged attacker to leak kernel memory contents by exploiting a missing device-type check in __skb_flow_dissect(). Affected are Linux kernel versions from 4.2 through stable branches prior to 6.1.178, 6.6.145, 6.12.97, 6.18.40, 7.1.5, and 7.2-rc1. An attacker who can create TUN devices and configure TC qdiscs reads 12 bytes of uninitialized skb memory through the flow dissector's Ethernet address extraction path, which then propagates into rhashtable lookups - a condition confirmed reported via KMSAN. No public exploit identified at time of analysis.

Technical ContextAI

The vulnerable code resides in __skb_flow_dissect() in the Linux kernel networking subsystem. When a TC flower filter requests FLOW_DISSECTOR_KEY_ETH_ADDRS, the function performs an unconditional memcpy from eth_hdr(skb) - assumed to point to a valid 14-byte Ethernet header - without first verifying that the underlying network device is actually of Ethernet type. This assumption breaks for TUN devices operating in L3 mode (IFF_TUN, hard_header_len=0), where mac_header points into the L3 data area rather than a real link-layer header. The uninitialized 12 bytes (src and dst MAC fields) then propagate through fl_set_masked_key() and are used as a lookup key in __fl_lookup() via rhashtable, as reported by KMSAN (Kernel Memory Sanitizer). The root cause is a CWE-uninstrumented uninitialized memory read (effectively CWE-125 / CWE-908) caused by an insufficient device-type precondition. A secondary design complication is that TC filter blocks can be shared across devices, making control-path rejection infeasible - the fix correctly addresses this in the data path by gating the memcpy on dev->type == ARPHRD_ETHER and adding a skb_mac_header_was_set() sentinel guard. The previous hard_header_len >= 12 check was also insufficient because non-Ethernet types such as IPoIB (ARPHRD_INFINIBAND, hard_header_len=24) and FDDI (hard_header_len=21) would pass it despite having non-Ethernet L2 formats. Affected CPE: cpe:2.3:a:linux:linux from version 4.2, introduced at commit 67a900cc0436d74e7ff89042371760def087680d.

RemediationAI

Upgrade to a patched stable kernel release: 6.1.178, 6.6.145, 6.12.97, 6.18.40, 7.1.5, or 7.2-rc1. The upstream fix commits are available at git.kernel.org/stable/c/0fe6455b8e1a22414f39c07bc90a1df12b52ec74, git.kernel.org/stable/c/c6d3bcb0f934d4297ac5fa1c8656ae40694fb601, git.kernel.org/stable/c/594c90b197141944f25991b8314de5c26ee27a7e, git.kernel.org/stable/c/825de39f0c35a112148799b3cbe45af3766c018a, git.kernel.org/stable/c/bf6e8af2c8be77489bedeae9f8a9654cb710e500, and git.kernel.org/stable/c/9a65860959db594dfc1820c7fdc09285fb7556bf. As compensating controls where immediate patching is not possible: restrict CAP_NET_ADMIN to trusted processes only (trade-off: breaks container networking workloads that rely on it); set kernel.unprivileged_userns_clone=0 to prevent unprivileged user namespaces from acquiring networking capabilities (trade-off: disables rootless container runtimes); and audit TC flower filter configurations to remove eth_src/eth_dst match rules on shared qdisc blocks attached to non-Ethernet devices. NVD advisory reference: https://nvd.nist.gov/vuln/detail/CVE-2026-72444.

Vendor StatusVendor

SUSE

Severity: Low
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-72444 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy