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---
| 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 |
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