
Cloud Vulnerability DB
A community-led vulnerabilities database
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).
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).
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).
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).
/proc/sys/kernel/unprivileged_userns_clone = 1, or equivalent), which allows obtaining namespaced CAP_NET_RAW without root.unshare(CLONE_NEWUSER | CLONE_NEWNET) to create a new user namespace and network namespace, granting the unprivileged process CAP_NET_RAW within that namespace.socket(AF_INET6, SOCK_RAW, IPPROTO_RAW)) within the new namespace.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.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.__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)./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.unshare() with CLONE_NEWUSER | CLONE_NEWNET followed by sendmsg() with large numbers of IPV6_DSTOPTS ancillary messages; processes creating new user/network namespaces unexpectedly.sendmsg() system calls on raw IPv6 sockets with anomalously large or numerous IPV6_DSTOPTS control messages from low-privileged users.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).
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).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."