In the Linux kernel, the following vulnerability has been resolved:
net: ip_tunnel: prevent perpetual headroom growth
syzkaller triggered following kasan splat: BUG: KASAN: use-after-free in __skb_flow_dissect+0x19d1/0x7a50 net/core/flow_dissector.c:1170 Read of size 1 at addr ffff88812fb4000e by task syz-executor183/5191 [..] kasan_report+0xda/0x110 mm/kasan/report.c:588 __skb_flow_dissect+0x19d1/0x7a50 net/core/flow_dissector.c:1170 skb_flow_dissect_flow_keys include/linux/skbuff.h:1514 [inline] ___skb_get_hash net/core/flow_dissector.c:1791 [inline] __skb_get_hash+0xc7/0x540 net/core/flow_dissector.c:1856 skb_get_hash include/linux/skbuff.h:1556 [inline] ip_tunnel_xmit+0x1855/0x33c0 net/ipv4/ip_tunnel.c:748 ipip_tunnel_xmit+0x3cc/0x4e0 net/ipv4/ipip.c:308 __netdev_start_xmit include/linux/netdevice.h:4940 [inline] netdev_start_xmit include/linux/netdevice.h:4954 [inline] xmit_one net/core/dev.c:3548 [inline] dev_hard_start_xmit+0x13d/0x6d0 net/core/dev.c:3564 __dev_queue_xmit+0x7c1/0x3d60 net/core/dev.c:4349 dev_queue_xmit include/linux/netdevice.h:3134 [inline] neigh_connected_output+0x42c/0x5d0 net/core/neighbour.c:1592 ... ip_finish_output2+0x833/0x2550 net/ipv4/ip_output.c:235 ip_finish_output+0x31/0x310 net/ipv4/ip_output.c:323 .. iptunnel_xmit+0x5b4/0x9b0 net/ipv4/ip_tunnel_core.c:82 ip_tunnel_xmit+0x1dbc/0x33c0 net/ipv4/ip_tunnel.c:831 ipgre_xmit+0x4a1/0x980 net/ipv4/ip_gre.c:665 __netdev_start_xmit include/linux/netdevice.h:4940 [inline] netdev_start_xmit include/linux/netdevice.h:4954 [inline] xmit_one net/core/dev.c:3548 [inline] dev_hard_start_xmit+0x13d/0x6d0 net/core/dev.c:3564 ...
The splat occurs because skb->data points past skb->head allocated area. This is because neigh layer does: __skb_pull(skb, skb_network_offset(skb));
... but skb_network_offset() returns a negative offset and __skb_pull() arg is unsigned. IOW, we skb->data gets "adjusted" by a huge value.
The negative value is returned because skb->head and skb->data distance is more than 64k and skb->network_header (u16) has wrapped around.
The bug is in the ip_tunnel infrastructure, which can cause dev->needed_headroom to increment ad infinitum.
The syzkaller reproducer consists of packets getting routed via a gre tunnel, and route of gre encapsulated packets pointing at another (ipip) tunnel. The ipip encapsulation finds gre0 as next output device.
This results in the following pattern:
1). First packet is to be sent out via gre0. Route lookup found an output device, ipip0.
2). ip_tunnel_xmit for gre0 bumps gre0->needed_headroom based on the future output device, rt.dev->needed_headroom (ipip0).
3). ip output / start_xmit moves skb on to ipip0. which runs the same code path again (xmit recursion).
4). Routing step for the post-gre0-encap packet finds gre0 as output device to use for ipip0 encapsulated packet.
tunl0->needed_headroom is then incremented based on the (already bumped) gre0 device headroom.
This repeats for every future packet:
gre0->needed_headroom gets inflated because previous packets' ipip0 step incremented rt->dev (gre0) headroom, and ipip0 incremented because gre0 needed_headroom was increased.
For each subsequent packet, gre/ipip0->needed_headroom grows until post-expand-head reallocations result in a skb->head/data distance of more than 64k.
Once that happens, skb->network_header (u16) wraps around when pskb_expand_head tries to make sure that skb_network_offset() is unchanged after the headroom expansion/reallocation.
After this skb_network_offset(skb) returns a different (and negative) result post headroom expansion.
The next trip to neigh layer (or anything else that would __skb_pull the network header) makes skb->data point to a memory location outside skb->head area.
v2: Cap the needed_headroom update to an arbitarily chosen upperlimit to prevent perpetual increase instead of dropping the headroom increment completely.
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-zfcpdump-develUpgrade kernel-64k-debugUpgrade kernel-zfcpdump-modulesUpgrade kernel-cross-headersUpgrade libperfUpgrade kernel-debug-modules-extraUpgrade kernel-rt-debug-kvmUpgrade kernel-zfcpdump-coreUpgrade kernel-64k-coreUpgrade kernel-64k-modulesUpgrade kernel-64k-debug-modules-extraUpgrade kernel-abi-stablelistsUpgrade kernel-headersUpgrade kernel-devel-matchedUpgrade kernel-rt-debug-modules-extraUpgrade kernel-docUpgrade kernelUpgrade kernel-64k-devel-matchedUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-debug-devel-matchedUpgrade kernel-rtUpgrade kernel-modules-coreUpgrade kernel-rt-debug-develUpgrade kernel-rt-modules-coreUpgrade kernel-modulesUpgrade kernel-uki-virtUpgrade kernel-64kUpgrade kernel-tools-libs-develUpgrade kernel-tools-libsUpgrade kernel-rt-debug-modules-coreUpgrade kernel-rt-debugUpgrade kernel-modules-extraUpgrade kernel-toolsUpgrade kernel-rt-kvmUpgrade kernel-coreUpgrade kernel-64k-debug-modules-coreUpgrade kernel-rt-develUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-develUpgrade kernel-debug-modules-coreUpgrade rvUpgrade kernel-rt-debug-modulesUpgrade kernel-rt-modulesUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-rt-debug-coreUpgrade kernel-64k-debug-develUpgrade kernel-rt-coreUpgrade kernel-rt-modules-extraUpgrade kernel-64k-debug-modulesUpgrade bpftoolUpgrade kernel-debugUpgrade perfUpgrade kernel-64k-debug-coreUpgrade kernel-64k-develUpgrade kernel-debug-coreUpgrade python3-perfUpgrade kernel-zfcpdumpUpgrade kernel-64k-modules-coreUpgrade kernel-debug-uki-virtUpgrade rtlaUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-64k-modules-extraUpgrade kernel-debug-develUpgrade kernel-debug-modules | Jul 3, 2024 | Apr 4, 2024 |
| Amazon Linux Ami 2 | — | Upgrade python-perf-debuginfoUpgrade kernel-tools-develUpgrade perf-debuginfoUpgrade kernel-headersUpgrade kernel-toolsUpgrade kernel-livepatch-5.15.152-100.162Upgrade kernelUpgrade kernel-develUpgrade perfUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-livepatch-5.10.213-201.855Upgrade bpftoolUpgrade kernel-debuginfoUpgrade python-perfUpgrade kernel-livepatch-4.14.355-280.713Upgrade kernel-tools-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade bpftool-debuginfo | Aug 28, 2024 | Apr 4, 2024 |
| Amazon_linux_2023 | — | Upgrade bpftool-debuginfoUpgrade python3-perf-debuginfoUpgrade kernel-modules-extra-commonUpgrade kernel-modules-extraUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-headersUpgrade kernel-libbpf-develUpgrade bpftoolUpgrade kernel-libbpf-staticUpgrade kernelUpgrade kernel-livepatch-6.1.82-99.168Upgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-debuginfoUpgrade python3-perfUpgrade kernel-toolsUpgrade perfUpgrade perf-debuginfoUpgrade kernel-tools-develUpgrade kernel-debuginfoUpgrade kernel-develUpgrade kernel-libbpf | Feb 17, 2025 | Apr 4, 2024 |
| Debian | — | Upgrade linux | May 8, 2024 | Apr 4, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade python3-perfUpgrade kernel-toolsUpgrade kernel-abi-stablelistsUpgrade kernelUpgrade kernel-tools-libs | Jul 16, 2024 | Apr 4, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-toolsUpgrade python3-perfUpgrade kernel-abi-stablelistsUpgrade bpftoolUpgrade kernelUpgrade kernel-tools-libs | Jun 26, 2024 | Apr 4, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade python3-perfUpgrade bpftoolUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade kernelUpgrade kernel-abi-stablelists | Oct 8, 2024 | Apr 4, 2024 |
| Huawei Euleros 2_0_sp8 | — | Upgrade perfUpgrade python-perfUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade bpftoolUpgrade kernel-develUpgrade kernelUpgrade kernel-headersUpgrade python3-perf | Jul 23, 2024 | Apr 4, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade kernel-toolsUpgrade kernel-tools-libsUpgrade kernelUpgrade python3-perf | Jul 17, 2024 | Apr 4, 2024 |
| Oracle_linux | — | Upgrade kernel | May 25, 2024 | Apr 4, 2024 |
| Redhat_linux | — | Upgrade kernelUpgrade kernel-rtNo solution exists | May 30, 2024 | Apr 4, 2024 |
| Rocky_linux | — | Upgrade kernel-rt-modules-extraUpgrade kernel-debugUpgrade kernel-rt-debugUpgrade kernel-rt-coreUpgrade kernel-rt-develUpgrade kernel-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-rt-kvmUpgrade kernel-debug-develUpgrade kernel-rt-debug-kvmUpgrade kernel-develUpgrade kernel-cross-headersUpgrade kernel-tools-libs-develUpgrade perf-debuginfoUpgrade python3-perfUpgrade perfUpgrade kernel-headersUpgrade kernelUpgrade kernel-rt-debuginfo-common-x86_64Upgrade kernel-rt-debug-coreUpgrade kernel-rtUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-coreUpgrade kernel-rt-modulesUpgrade kernel-rt-debuginfoUpgrade kernel-rt-debug-modulesUpgrade python3-perf-debuginfoUpgrade bpftool-debuginfoUpgrade kernel-modules-extraUpgrade kernel-modulesUpgrade kernel-debug-modulesUpgrade kernel-debug-modules-extraUpgrade kernel-rt-debug-debuginfoUpgrade kernel-toolsUpgrade kernel-debug-debuginfoUpgrade bpftoolUpgrade kernel-rt-debug-develUpgrade kernel-debug-coreUpgrade kernel-rt-debug-modules-extraUpgrade kernel-tools-libs | Jul 16, 2024 | Apr 4, 2024 |
| Suse | — | Upgrade kernel-kvmsmallUpgrade kernel-kvmsmall-livepatch-develUpgrade dtb-freescaleUpgrade kernel-64kb-develUpgrade kernel-azure-develUpgrade kernel-azure-optionalUpgrade dtb-qcomUpgrade kernel-rt_debug-vdsoUpgrade kernel-symsUpgrade dtb-amlogicUpgrade ocfs2-kmp-64kbUpgrade cluster-md-kmp-azureUpgrade kernel-kvmsmall-vdsoUpgrade kernel-devel-rtUpgrade dtb-amazonUpgrade kernel-azure-extraUpgrade dtb-apmUpgrade kernel-obs-qaUpgrade kernel-syms-rtUpgrade kernel-docs-htmlUpgrade kernel-syms-azureUpgrade dlm-kmp-64kbUpgrade kernel-devel-azureUpgrade kernel-macrosUpgrade kernel-sourceUpgrade gfs2-kmp-rtUpgrade dtb-broadcomUpgrade dtb-exynosUpgrade kernel-azure-vdsoUpgrade kernel-default-extraUpgrade kernel-rt-livepatchUpgrade kernel-zfcpdumpUpgrade kernel-rt-livepatch-develUpgrade kernel-default-manUpgrade ocfs2-kmp-rtUpgrade kernel-default-develUpgrade kernel-debug-livepatch-develUpgrade kernel-default-vdsoUpgrade kernel-rtUpgrade kernel-64kbUpgrade dtb-alteraUpgrade gfs2-kmp-64kbUpgrade kselftests-kmp-64kbUpgrade dtb-mediatekUpgrade dtb-lgUpgrade cluster-md-kmp-defaultUpgrade kernel-source-azureUpgrade kernel-kvmsmall-develUpgrade kernel-default-livepatchUpgrade kernel-64kb-optionalUpgrade kernel-azure-livepatch-develUpgrade kernel-default-base-rebuildUpgrade kernel-64kb-livepatch-develUpgrade kernel-source-rtUpgrade kernel-develUpgrade dtb-hisiliconUpgrade dtb-appleUpgrade dtb-amdUpgrade kernel-rt-optionalUpgrade kselftests-kmp-rtUpgrade kernel-defaultUpgrade kernel-obs-buildUpgrade kernel-docsUpgrade dlm-kmp-rtUpgrade reiserfs-kmp-64kbUpgrade gfs2-kmp-defaultUpgrade dtb-sprdUpgrade kselftests-kmp-defaultUpgrade reiserfs-kmp-azureUpgrade kernel-rt-extraUpgrade reiserfs-kmp-rtUpgrade kernel-debug-vdsoUpgrade dtb-caviumUpgrade dlm-kmp-azureUpgrade kernel-rt_debugUpgrade kernel-debug-develUpgrade kernel-azureUpgrade ocfs2-kmp-defaultUpgrade ocfs2-kmp-azureUpgrade kernel-default-livepatch-develUpgrade kernel-debugUpgrade kernel-64kb-extraUpgrade cluster-md-kmp-64kbUpgrade dlm-kmp-defaultUpgrade kernel-rt-vdsoUpgrade reiserfs-kmp-defaultUpgrade dtb-allwinnerUpgrade kernel-rt-develUpgrade dtb-socionextUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-rt_debug-develUpgrade dtb-nvidiaUpgrade kernel-default-optionalUpgrade dtb-renesasUpgrade dtb-armUpgrade dtb-xilinxUpgrade cluster-md-kmp-rtUpgrade kselftests-kmp-azureUpgrade dtb-rockchipUpgrade kernel-source-vanillaUpgrade kernel-default-baseUpgrade gfs2-kmp-azureUpgrade dtb-marvell | Dec 5, 2025 | Oct 8, 2024 |
| Ubuntu | — | Upgrade linux-image-oem-20.04dUpgrade linux-image-5.4.0-1045-xilinx-zynqmpUpgrade linux-image-5.4.0-186-lowlatencyUpgrade linux-image-5.15.0-113-generic-64kUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-raspi2Upgrade linux-image-5.4.0-1126-awsUpgrade linux-image-oem-osp1Upgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-nvidiaUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-oem-20.04bUpgrade linux-image-5.4.0-1114-kvmUpgrade linux-image-generic-64kUpgrade linux-image-oem-20.04Upgrade linux-image-genericUpgrade linux-image-azure-lts-22.04Upgrade linux-image-5.15.0-1046-gkeopUpgrade linux-image-5.15.0-113-generic-lpaeUpgrade linux-image-5.15.0-1066-azureUpgrade linux-image-5.15.0-112-generic-lpaeUpgrade linux-image-gkeop-5.4Upgrade linux-image-5.15.0-1065-azure-fdeUpgrade linux-image-5.4.0-1093-gkeopUpgrade linux-image-virtualUpgrade linux-image-5.15.0-113-genericUpgrade linux-image-lowlatency-64kUpgrade linux-image-oracle-lts-20.04Upgrade linux-image-5.4.0-1038-iotUpgrade linux-image-gkeUpgrade linux-image-5.15.0-1057-ibmUpgrade linux-image-oem-20.04cUpgrade linux-image-azureUpgrade linux-image-gcpUpgrade linux-image-5.4.0-186-generic-lpaeUpgrade linux-image-5.15.0-1030-xilinx-zynqmpUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-lowlatency-hwe-18.04Upgrade linux-image-intel-iotgUpgrade linux-image-gke-5.15Upgrade linux-image-5.15.0-1058-intel-iotgUpgrade linux-image-gkeop-5.15Upgrade linux-image-lowlatencyUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-gkeopUpgrade linux-image-5.4.0-1073-ibmUpgrade linux-image-intelUpgrade linux-image-5.15.0-1058-raspiUpgrade linux-image-oemUpgrade linux-image-ibmUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-gcp-lts-20.04Upgrade linux-image-5.15.0-1060-gkeUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-5.4.0-1086-bluefieldUpgrade linux-image-oracleUpgrade linux-image-5.15.0-1056-ibmUpgrade linux-image-5.4.0-1131-azureUpgrade linux-image-5.4.0-1110-raspiUpgrade linux-image-5.15.0-110-lowlatency-64kUpgrade linux-image-raspi-hwe-18.04Upgrade linux-image-5.4.0-186-genericUpgrade linux-image-raspi-nolpaeUpgrade linux-image-generic-hwe-18.04Upgrade linux-image-5.15.0-112-genericUpgrade linux-image-bluefieldUpgrade linux-image-5.15.0-110-lowlatencyUpgrade linux-image-5.15.0-112-generic-64kUpgrade linux-image-5.4.0-1130-gcpUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-azure-lts-20.04Upgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-5.15.0-1063-awsUpgrade linux-image-5.15.0-1058-nvidia-lowlatencyUpgrade linux-image-aws-lts-20.04Upgrade linux-image-kvmUpgrade linux-image-aws-lts-22.04Upgrade linux-image-generic-lpaeUpgrade linux-image-awsUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.4.0-1125-oracleUpgrade linux-image-5.15.0-1058-nvidiaUpgrade linux-image-5.15.0-1061-oracleUpgrade linux-image-5.15.0-1060-kvmUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-ibm-lts-20.04Upgrade linux-image-5.15.0-1062-gcpUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-virtual-hwe-18.04Upgrade linux-image-raspi | Jul 1, 2024 | Apr 4, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | Apr 4, 2024 |
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