Skip to main content

Linux Kernel CVE-2026-63920

| EUVDEUVD-2026-45693 HIGH
2026-07-19 Linux GHSA-8539-cx26-hf58
7.1
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.1 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
vuln.today AI
7.1 HIGH

Local low-privilege attacker via unprivileged userns/nftables (AV:L, PR:L, AC:L); OOB read discloses kernel memory (C:H) and can crash the kernel (A:H) with no data modification (I:N).

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

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

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

Lifecycle Timeline

5
Analysis Generated
Jul 20, 2026 - 16:19 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
7.1 (HIGH)
Patch available
Jul 19, 2026 - 17:19 EUVD
CVE Published
Jul 19, 2026 - 14:55 cve.org
HIGH 7.1
CVE Published
Jul 19, 2026 - 14:55 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

ipv6: validate extension header length before copying to cmsg

ip6_datagram_recv_specific_ctl() builds IPV6_{HOPOPTS,DSTOPTS,RTHDR} cmsgs (and their IPV6_2292* legacy counterparts) by trusting the on-wire hdrlen byte (ptr[1]) when computing the put_cmsg() length. The length was validated only at parse time (ipv6_parse_hopopts(), etc.). An nftables payload-write expression can rewrite hdrlen after parsing and before the skb reaches recvmsg; the write itself is in-bounds but put_cmsg() then reads up to ((hdrlen+1) << 3) = 2040 bytes from an 8-byte header. nftables is reachable from an unprivileged user namespace, so this is an unprivileged slab-out-of-bounds read:

BUG: KASAN: slab-out-of-bounds in put_cmsg+0x3ac/0x540 put_cmsg+0x3ac/0x540 udpv6_recvmsg+0xca0/0x1250 sock_recvmsg+0xdf/0x190 ____sys_recvmsg+0x1b1/0x620

Add ipv6_get_exthdr_len() which validates that at least two bytes are accessible before reading the hdrlen field, then checks the computed length against skb_tail_pointer(skb), returning 0 on failure. Extension headers are kept in the linear skb area by pskb_may_pull() during input, so skb_tail_pointer() is the correct bound.

Use ipv6_get_exthdr_len() at all non-AH call sites: the five standalone cmsg blocks (HbH, 2292HbH, 2292DSTOPTS x2, 2292RTHDR) and the three standard cases in the extension-header walk loop (DSTOPTS, ROUTING, default). AH retains an inline bounds check because its length formula differs ((ptr[1]+2)<<2).

The walk loop also gets a pre-read bounds check at the top to validate ptr before any case accesses ptr[0] or ptr[1].

When the walk loop detects a corrupted header, return from the function instead of continuing to process later socket options.

AnalysisAI

Information disclosure (slab-out-of-bounds read) in the Linux kernel IPv6 datagram stack lets a local unprivileged attacker leak adjacent kernel slab memory and potentially crash the system. The flaw lives in ip6_datagram_recv_specific_ctl(), which trusts the on-wire extension-header length byte when building IPV6_HOPOPTS/DSTOPTS/RTHDR control messages; because nftables is reachable from an unprivileged user namespace, an attacker can rewrite that length after parse-time validation and force put_cmsg() to copy up to 2040 bytes from an 8-byte header. There is no public exploit and it is not in CISA KEV (EPSS 0.21%), so risk is credible but not yet demonstrated at scale.

Technical ContextAI

The affected code is the IPv6 ancillary-data path in the kernel networking stack (net/ipv6/datagram.c). When a datagram socket requests IPV6 extension-header cmsgs, ip6_datagram_recv_specific_ctl() computes the put_cmsg() copy length as ((hdrlen+1) << 3) using the header's second byte (ptr[1]). Extension headers (Hop-by-Hop options, Destination options, Routing header, plus the legacy IPV6_2292* variants) are validated for length only at input parse time (ipv6_parse_hopopts() etc.). The root cause is a time-of-check/time-of-use gap combined with missing re-validation: an nftables payload-write expression can mutate the hdrlen field in the linear skb after parsing but before recvmsg(), an in-bounds write that later drives an out-of-bounds read of neighboring slab memory. This is a classic CWE-125 (out-of-bounds read); the input CWE was listed as N/A. The fix adds ipv6_get_exthdr_len() to re-check that two bytes are readable and that the computed length stays within skb_tail_pointer(skb) before any copy, applied at all non-AH cmsg sites (AH keeps its own inline check because its length formula is ((ptr[1]+2)<<2)).

RemediationAI

Vendor-released patch: upgrade to a fixed stable kernel - 5.10.259, 5.15.210, 6.1.176, 6.6.143, 6.12.93, 6.18.35, or 7.0.12 or later on the corresponding branch - which introduces ipv6_get_exthdr_len() to bound-check extension-header lengths before put_cmsg() copies them. The patch commits are published at https://git.kernel.org/stable/c/ (e.g. 81394827dfb72772c50d0ae3bdfa094428a5d76d) and cataloged at https://nvd.nist.gov/vuln/detail/CVE-2026-63920. Where immediate patching is not possible, the most effective compensating control is to disable unprivileged user namespaces (sysctl kernel.unprivileged_userns_clone=0, or user.max_user_namespaces=0), which removes the unprivileged path to nftables that triggers the bug - the trade-off is that container runtimes and sandboxes relying on rootless userns (e.g. rootless Podman, some browser sandboxes) will break. As a narrower alternative, restrict nftables/netfilter access via seccomp or LSM policy for untrusted workloads; note this can interfere with legitimate firewall management in those contexts.

Vendor StatusVendor

SUSE

Severity: Important
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-63920 vulnerability details – vuln.today

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