CVE-2026-31415
Linux Kernel vulnerability analysis and mitigation

Overview

CVE-2026-31415 is an integer overflow vulnerability in the Linux kernel's IPv6 datagram send control path (ip6_datagram_send_ctl()) that allows a local attacker to trigger a kernel panic (local denial of service). The flaw was reported by Yiming Qian and disclosed on April 13, 2026. It affects Linux kernel versions from 2.6.14 up to (but not including) 5.10.253, 5.15.203, 6.1.168, 6.6.134, 6.12.81, 6.18.22, and 6.19.12, as well as kernel 7.0 release candidates. It carries a CVSS v3.1 base score of 5.5 (Medium) (Red Hat Advisory, Red Hat Bugzilla).

Technical details

The root cause is an integer overflow/wraparound (CWE-190) combined with a reachable assertion (CWE-617) in net/ipv6/datagram.c. The struct ipv6_txoptions::opt_flen field is a 16-bit unsigned integer (__u16) that accumulates the total length of destination-options headers provided via IPV6_DSTOPTS control messages (cmsgs) in a sendmsg() call. Unlike the legacy IPV6_2292DSTOPTS path, ip6_datagram_send_ctl() does not reject duplicate IPV6_DSTOPTS cmsgs, so an attacker can supply enough large headers (e.g., 32 cmsgs with hdrlen=255, each contributing 2048 bytes) to wrap opt_flen to a small value (e.g., 8) while opt->dst1opt still points to a 2048-byte header. When the transmit path in __ip6_append_data() uses the wrapped opt_flen to compute headroom, it underestimates the required space; subsequently, ipv6_push_exthdr() calls skb_push() with the actual (large) header size, causing a buffer underflow that triggers skb_under_panic()BUG(). Exploitation requires CAP_NET_RAW in the target network namespace, which an unprivileged user can obtain by creating a user namespace + network namespace if unprivileged user namespaces are enabled (Red Hat Bugzilla).

Impact

Successful exploitation results in a kernel panic (skb_under_panic()BUG()), causing an immediate system crash and complete loss of availability — a local denial of service. There is no confidentiality or integrity impact, as the vulnerability only affects availability. The attack is limited to the local system and does not enable lateral movement or data exfiltration (Red Hat Advisory, Red Hat Bugzilla).

Exploitability

A proof-of-concept (poc.c) was described in the original bug report, demonstrating the crash using 32 large IPV6_DSTOPTS cmsgs followed by one small cmsg in a single sendmsg() call. There is no evidence of in-the-wild exploitation or threat actor attribution at this time. The EPSS score is 0.03% (very low probability of exploitation in the near term). The vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog. Exploitation requires local access and either root/CAP_NET_RAW privileges, or the ability to create unprivileged user namespaces (Red Hat Bugzilla, Feedly).

Exploitation steps

  1. Prerequisite check: Confirm the target runs a vulnerable Linux kernel version and that unprivileged user namespaces are enabled (/proc/sys/kernel/unprivileged_userns_clone = 1, or equivalent), which allows obtaining namespaced CAP_NET_RAW without root.
  2. Create user + network namespace: Use unshare(CLONE_NEWUSER | CLONE_NEWNET) to create a new user namespace and network namespace, granting the unprivileged process CAP_NET_RAW within that namespace.
  3. Open a raw IPv6 socket: Create a raw IPv6 socket (socket(AF_INET6, SOCK_RAW, IPPROTO_RAW)) within the new namespace.
  4. Craft malicious ancillary data: Prepare 32 IPV6_DSTOPTS control messages each with hdrlen=255 (contributing 2048 bytes each), followed by one IPV6_DSTOPTS cmsg with hdrlen=0 (contributing 8 bytes). Total accumulated length = 32×2048 + 8 = 65,544, which wraps a __u16 to 8, while dst1opt points to the last 2048-byte header.
  5. Trigger the overflow via sendmsg(): Call sendmsg() with the crafted cmsgs. The kernel's ip6_datagram_send_ctl() accumulates the wrapped opt_flen=8, but dst1opt still references the 2048-byte header.
  6. Kernel panic: During packet construction, __ip6_append_data() allocates insufficient headroom based on the wrapped opt_flen. When ipv6_push_exthdr() calls skb_push() with the actual 2048-byte size, the buffer underflows, triggering skb_under_panic()BUG() and crashing the kernel (Red Hat Bugzilla).

Indicators of compromise

  • Logs: Kernel oops/panic messages in /var/log/kern.log or dmesg containing skb_under_panic, skb_push, or BUG: followed by a stack trace referencing ipv6_push_exthdr, ipv6_push_frag_opts, __ip6_make_skb, or ip6_datagram_send_ctl.
  • Process: Unusual processes calling unshare() with CLONE_NEWUSER | CLONE_NEWNET followed by sendmsg() with large numbers of IPV6_DSTOPTS ancillary messages; processes creating new user/network namespaces unexpectedly.
  • Network: Repeated sendmsg() system calls on raw IPv6 sockets with anomalously large or numerous IPV6_DSTOPTS control messages from low-privileged users.

Mitigation and workarounds

Upgrade the Linux kernel to a patched version: 5.10.253, 5.15.203, 6.1.168, 6.6.134, 6.12.81, 6.18.22, or 6.19.12 (or later). Patches are available via the stable kernel tree on git.kernel.org. As a temporary workaround on systems that cannot be immediately patched, disable unprivileged user namespaces (sysctl -w kernel.unprivileged_userns_clone=0) to prevent unprivileged users from obtaining CAP_NET_RAW via namespace creation, though root users can still trigger the bug. Distribution-specific updates are available from Red Hat, SUSE, Amazon Linux, Debian, and others (Red Hat Advisory, Red Hat Bugzilla).

Community reactions

The vulnerability was reported by security researcher Yiming Qian, who provided a detailed technical analysis and proof-of-concept demonstrating the kernel panic. Red Hat tracked the issue via Bugzilla and assigned it medium severity. Distribution vendors including SUSE, Amazon Linux, and Debian have issued kernel update advisories addressing this CVE. No significant broader media coverage or social media discussion has been observed beyond standard vulnerability tracking channels (Red Hat Bugzilla).

Additional resources


SourceThis report was generated using AI

Related Linux Kernel vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-68454HIGH8.8
  • Linux Kernel logoLinux Kernel
  • linux-aws-6.17
NoYesAug 13, 2026
CVE-2026-68452HIGH7.8
  • Linux Kernel logoLinux Kernel
  • kernel-modules-core
NoYesAug 13, 2026
CVE-2026-68451HIGH7.8
  • Linux Kernel logoLinux Kernel
  • kernel-rt-64k-modules-partner
NoYesAug 13, 2026
CVE-2026-68453HIGH7.1
  • Linux Kernel logoLinux Kernel
  • kernel-64k-modules-extra
NoYesAug 13, 2026
CVE-2026-68450NONEN/A
  • Linux Kernel logoLinux Kernel
  • kernel-64k-debug-core
NoYesAug 12, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management