In the Linux kernel, the following vulnerability has been resolved:
ipv6: avoid overflows in ip6_datagram_send_ctl()
Yiming Qian reported : <quote> I believe I found a locally triggerable kernel bug in the IPv6 sendmsg ancillary-data path that can panic the kernel via `skb_under_panic()` (local DoS).
The core issue is a mismatch between:
- a 16-bit length accumulator (`struct ipv6_txoptions::opt_flen`, type `__u16`) and - a pointer to the *last* provided destination-options header (`opt->dst1opt`)
when multiple `IPV6_DSTOPTS` control messages (cmsgs) are provided.
- `include/net/ipv6.h`: - `struct ipv6_txoptions::opt_flen` is `__u16` (wrap possible). (lines 291-307, especially 298) - `net/ipv6/datagram.c:ip6_datagram_send_ctl()`: - Accepts repeated `IPV6_DSTOPTS` and accumulates into `opt_flen` without rejecting duplicates. (lines 909-933) - `net/ipv6/ip6_output.c:__ip6_append_data()`: - Uses `opt->opt_flen + opt->opt_nflen` to compute header sizes/headroom decisions. (lines 1448-1466, especially 1463-1465) - `net/ipv6/ip6_output.c:__ip6_make_skb()`: - Calls `ipv6_push_frag_opts()` if `opt->opt_flen` is non-zero. (lines 1930-1934) - `net/ipv6/exthdrs.c:ipv6_push_frag_opts()` / `ipv6_push_exthdr()`: - Push size comes from `ipv6_optlen(opt->dst1opt)` (based on the pointed-to header). (lines 1179-1185 and 1206-1211)
1. `opt_flen` is a 16-bit accumulator:
- `include/net/ipv6.h:298` defines `__u16 opt_flen; /* after fragment hdr */`.
2. `ip6_datagram_send_ctl()` accepts *repeated* `IPV6_DSTOPTS` cmsgs and increments `opt_flen` each time:
- In `net/ipv6/datagram.c:909-933`, for `IPV6_DSTOPTS`: - It computes `len = ((hdr->hdrlen + 1) << 3);` - It checks `CAP_NET_RAW` using `ns_capable(net->user_ns, CAP_NET_RAW)`. (line 922) - Then it does: - `opt->opt_flen += len;` (line 927) - `opt->dst1opt = hdr;` (line 928)
There is no duplicate rejection here (unlike the legacy `IPV6_2292DSTOPTS` path which rejects duplicates at `net/ipv6/datagram.c:901-904`).
If enough large `IPV6_DSTOPTS` cmsgs are provided, `opt_flen` wraps while `dst1opt` still points to a large (2048-byte) destination-options header.
In the attached PoC (`poc.c`):
- 32 cmsgs with `hdrlen=255` => `len = (255+1)*8 = 2048` - 1 cmsg with `hdrlen=0` => `len = 8` - Total increment: `32*2048 + 8 = 65544`, so `(__u16)opt_flen == 8` - The last cmsg is 2048 bytes, so `dst1opt` points to a 2048-byte header.
3. The transmit path sizes headers using the wrapped `opt_flen`:
- In `net/ipv6/ip6_output.c:1463-1465`: - `headersize = sizeof(struct ipv6hdr) + (opt ? opt->opt_flen + opt->opt_nflen : 0) + ...;`
With wrapped `opt_flen`, `headersize`/headroom decisions underestimate what will be pushed later.
4. When building the final skb, the actual push length comes from `dst1opt` and is not limited by wrapped `opt_flen`:
- In `net/ipv6/ip6_output.c:1930-1934`: - `if (opt->opt_flen) proto = ipv6_push_frag_opts(skb, opt, proto);` - In `net/ipv6/exthdrs.c:1206-1211`, `ipv6_push_frag_opts()` pushes `dst1opt` via `ipv6_push_exthdr()`. - In `net/ipv6/exthdrs.c:1179-1184`, `ipv6_push_exthdr()` does: - `skb_push(skb, ipv6_optlen(opt));` - `memcpy(h, opt, ipv6_optlen(opt));`
With insufficient headroom, `skb_push()` underflows and triggers `skb_under_panic()` -> `BUG()`:
- `net/core/skbuff.c:2669-2675` (`skb_push()` calls `skb_under_panic()`) - `net/core/skbuff.c:207-214` (`skb_panic()` ends in `BUG()`)
- The `IPV6_DSTOPTS` cmsg path requires `CAP_NET_RAW` in the target netns user namespace (`ns_capable(net->user_ns, CAP_NET_RAW)`). - Root (or any task with `CAP_NET_RAW`) can trigger this without user namespaces. - An unprivileged `uid=1000` user can trigger this if unprivileged user namespaces are enabled and it can create a userns+netns to obtain namespaced `CAP_NET_RAW` (the attached PoC does this).
- Local denial of service: kernel BUG/panic (system crash). - ---truncated---
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-develUpgrade perf-debuginfoUpgrade kernel-headersUpgrade perfUpgrade python-perf-debuginfoUpgrade kernel-debuginfoUpgrade python-perfUpgrade bpftool-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-livepatch-5.15.204-143.230Upgrade kernel-toolsUpgrade bpftoolUpgrade kernelUpgrade kernel-livepatch-5.10.253-252.1015Upgrade kernel-develUpgrade kernel-debuginfo-common-x86_64 | May 20, 2026 | May 20, 2026 |
| Amazon_linux_2023 | — | Upgrade kernel6.12-modules-extra-commonUpgrade kernel-tools-debuginfoUpgrade perfUpgrade bpftool-debuginfoUpgrade kernel6.12-modules-extraUpgrade kernel-livepatch-6.1.168-202.320Upgrade kernel6.18-debuginfo-common-aarch64Upgrade perf6.18-debuginfoUpgrade kernel-modules-extraUpgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel6.12-headersUpgrade perf6.12Upgrade bpftool6.12-debuginfoUpgrade kernel6.12Upgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel-headersUpgrade bpftool6.18Upgrade kernel6.18-modules-extra-commonUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-libbpf-debuginfoUpgrade kernel-livepatch-6.18.25-52.107Upgrade python3-perf-debuginfoUpgrade kernel-libbpfUpgrade perf-debuginfoUpgrade kernel-toolsUpgrade kernel6.18-tools-debuginfoUpgrade kernel-develUpgrade python3-perf6.18Upgrade kernel6.12-tools-develUpgrade python3-perf6.18-debuginfoUpgrade kernel6.12-toolsUpgrade bpftoolUpgrade kernel6.18-modules-extraUpgrade kernel6.18-debuginfo-common-x86_64Upgrade kernel-modules-extra-commonUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-debuginfoUpgrade kernel6.18-toolsUpgrade kernel6.12-tools-debuginfoUpgrade kernel6.18-develUpgrade kernel6.18-headersUpgrade kernel6.18-debuginfoUpgrade python3-perf6.12-debuginfoUpgrade perf6.18Upgrade kernel6.18Upgrade kernel6.12-develUpgrade kernel6.12-debuginfoUpgrade kernel-tools-develUpgrade kernel-livepatch-6.12.83-113.160Upgrade kernel-libbpf-staticUpgrade bpftool6.12Upgrade kernel-libbpf-develUpgrade python3-perf6.12Upgrade bpftool6.18-debuginfoUpgrade kernelUpgrade python3-perfUpgrade kernel6.18-tools-develUpgrade perf6.12-debuginfo | May 19, 2026 | Apr 13, 2026 |
| Debian | — | Upgrade linuxUpgrade linux-6.1 | May 3, 2026 | May 3, 2026 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | Apr 13, 2026 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1046-gkeopUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-5.15.0-1117-azure-fipsUpgrade linux-image-azure-6.8Upgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-nvidia-tegra-rtUpgrade linux-image-6.8.0-1059-gke-64kUpgrade linux-image-6.8.0-1059-nvidia-lowlatencyUpgrade linux-image-6.8.0-136-lowlatency-64kUpgrade linux-image-6.8.0-1059-gkeUpgrade linux-image-aws-6.8Upgrade linux-image-gcp-lts-22.04Upgrade linux-image-generic-lpaeUpgrade linux-image-aws-lts-22.04Upgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-6.8.0-1064-gcp-64kUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-gkeop-6.8Upgrade linux-image-oracle-5.15Upgrade linux-image-oracle-64k-6.8Upgrade linux-image-6.8.0-1061-raspiUpgrade linux-image-5.15.0-1107-nvidiaUpgrade linux-image-genericUpgrade linux-image-ibm-5.15Upgrade linux-image-azure-lts-24.04Upgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-azure-fde-5.15Upgrade linux-image-oem-22.04cUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-6.8.0-136-lowlatencyUpgrade linux-image-intelUpgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-generic-5.15Upgrade linux-image-lowlatency-64kUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-virtual-6.8Upgrade linux-image-5.15.0-186-generic-lpaeUpgrade linux-image-5.15.0-1112-gcp-fipsUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-5.15.0-1107-nvidia-lowlatencyUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-5.15.0-1111-realtimeUpgrade linux-image-6.8.0-1059-nvidia-64kUpgrade linux-image-gcp-fipsUpgrade linux-image-gkeopUpgrade linux-image-intel-iotg-5.15Upgrade linux-image-5.15.0-1117-azure-fdeUpgrade linux-image-aws-64kUpgrade linux-image-generic-64k-5.15Upgrade linux-image-oem-22.04aUpgrade linux-image-raspiUpgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-raspi-realtime-6.8Upgrade linux-image-aws-fipsUpgrade linux-image-6.8.0-1030-nvidia-tegra-rtUpgrade linux-image-6.8.0-1064-gcp-fipsUpgrade linux-image-5.15.0-1104-kvmUpgrade linux-image-azure-fips-5.15Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-6.8.0-136-fipsUpgrade linux-image-5.15.0-1112-aws-fipsUpgrade linux-image-5.15.0-1106-ibmUpgrade linux-image-6.8.0-1058-oracleUpgrade linux-image-5.15.0-1112-gcpUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-generic-64kUpgrade linux-image-lowlatency-5.15Upgrade linux-image-fipsUpgrade linux-image-lowlatency-6.8Upgrade linux-image-6.8.0-1058-oracle-64kUpgrade linux-image-azureUpgrade linux-image-azure-lts-22.04Upgrade linux-image-kvm-5.15Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-nvidia-tegraUpgrade linux-image-ibmUpgrade linux-image-5.15.0-1075-xilinx-zynqmpUpgrade linux-image-gke-5.15Upgrade linux-image-5.15.0-1108-gkeUpgrade linux-image-oem-22.04Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-oem-20.04bUpgrade linux-image-generic-lpae-5.15Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-nvidia-5.15Upgrade linux-image-gke-6.8Upgrade linux-image-oem-20.04cUpgrade linux-image-gkeUpgrade linux-image-nvidiaUpgrade linux-image-intel-iotgUpgrade linux-image-lowlatencyUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1063-azureUpgrade linux-image-gke-64kUpgrade linux-image-gcpUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-azure-fips-6.8Upgrade linux-image-raspi-5.15Upgrade linux-image-oem-20.04dUpgrade linux-image-generic-64k-6.8Upgrade linux-image-6.8.0-1061-aws-fipsUpgrade linux-image-6.8.1-1056-realtimeUpgrade linux-image-fips-5.15Upgrade linux-image-ibm-6.8Upgrade linux-image-generic-hwe-20.04Upgrade linux-image-gcp-64kUpgrade linux-image-azure-fipsUpgrade linux-image-6.8.0-1033-xilinxUpgrade linux-image-virtualUpgrade linux-image-nvidia-tegra-igxUpgrade linux-image-azure-5.15Upgrade linux-image-5.15.0-184-lowlatency-64kUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-fips-6.8Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-aws-lts-24.04Upgrade linux-image-6.8.0-1059-nvidiaUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-awsUpgrade linux-image-aws-5.15Upgrade linux-image-5.15.0-1112-awsUpgrade linux-image-6.8.0-1059-nvidia-lowlatency-64kUpgrade linux-image-5.15.0-1053-nvidia-tegra-igx-rtUpgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-5.15.0-186-fipsUpgrade linux-image-realtime-6.8.1Upgrade linux-image-realtime-5.15Upgrade linux-image-oracle-6.8Upgrade linux-image-oem-22.04dUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-xilinx-6.8Upgrade linux-image-azure-fde-6.8Upgrade linux-image-6.8.0-2050-raspi-realtimeUpgrade linux-image-6.8.0-1064-gcpUpgrade linux-image-nvidia-64kUpgrade linux-image-5.15.0-1109-oracleUpgrade linux-image-6.8.0-1061-ibmUpgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-gcp-64k-6.8Upgrade linux-image-gke-64k-6.8Upgrade linux-image-aws-fips-5.15Upgrade linux-image-6.8.0-1062-azure-fdeUpgrade linux-image-6.8.0-1061-aws-64kUpgrade linux-image-oem-22.04bUpgrade linux-image-generic-6.8Upgrade linux-image-oracle-64kUpgrade linux-image-oem-20.04Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-azure-fdeUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-6.8.0-1063-azure-fipsUpgrade linux-image-5.15.0-184-lowlatencyUpgrade linux-image-5.15.0-1095-gkeopUpgrade linux-image-aws-fips-6.8Upgrade linux-image-aws-64k-6.8Upgrade linux-image-5.15.0-1106-raspiUpgrade linux-image-5.15.0-1053-nvidia-tegra-igxUpgrade linux-image-5.15.0-186-generic-64kUpgrade linux-image-raspi-realtimeUpgrade linux-image-raspi-6.8Upgrade linux-image-oracleUpgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-laptop-23.10Upgrade linux-image-azure-cvmUpgrade linux-image-xilinxUpgrade linux-image-virtual-5.15Upgrade linux-image-raspi-nolpaeUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-aws-64k-5.15Upgrade linux-image-6.8.0-1030-nvidia-tegraUpgrade linux-image-5.15.0-1064-nvidia-tegra-rtUpgrade linux-image-kvmUpgrade linux-image-gcp-fips-5.15Upgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.8.0-136-generic-64kUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-gcp-6.8Upgrade linux-image-gcp-5.15Upgrade linux-image-5.15.0-186-genericUpgrade linux-image-5.15.0-1117-azureUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-6.8.0-136-genericUpgrade linux-image-5.15.0-1112-aws-64kUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-6.8.0-1061-awsUpgrade linux-image-5.15.0-1104-intel-iot-realtimeUpgrade linux-image-5.15.0-1064-nvidia-tegraUpgrade linux-image-5.15.0-1107-intel-iotgUpgrade linux-image-gkeop-5.15Upgrade linux-image-realtime | May 25, 2026 | Apr 13, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | May 27, 2026 | Apr 13, 2026 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub