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 libperfUpgrade kernel-zfcpdump-develUpgrade kernel-zfcpdump-modulesUpgrade kernel-rt-debug-kvmUpgrade kernel-modulesUpgrade kernel-64k-coreUpgrade kernel-64k-modulesUpgrade kernel-64kUpgrade kernel-64k-devel-matchedUpgrade kernel-zfcpdump-coreUpgrade kernel-debug-devel-matchedUpgrade kernel-tools-libsUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-64k-modules-extraUpgrade rvUpgrade kernel-debug-uki-virtUpgrade kernel-zfcpdumpUpgrade kernel-zfcpdump-modules-extraUpgrade python3-perfUpgrade kernel-rt-debugUpgrade kernel-rt-modules-extraUpgrade kernel-debug-develUpgrade kernel-64k-modules-coreUpgrade kernel-rt-debug-modules-coreUpgrade perfUpgrade kernel-coreUpgrade kernel-debug-modulesUpgrade kernel-64k-debug-modules-coreUpgrade kernel-64k-develUpgrade kernel-modules-extraUpgrade kernel-64k-debug-coreUpgrade kernel-rt-modulesUpgrade kernel-rt-develUpgrade kernel-rt-debug-modulesUpgrade kernel-64k-debug-develUpgrade rtlaUpgrade kernel-rt-debug-coreUpgrade kernel-debug-modules-coreUpgrade kernel-debug-coreUpgrade kernel-rt-kvmUpgrade bpftoolUpgrade kernel-rt-coreUpgrade kernel-toolsUpgrade kernel-develUpgrade kernel-64k-debug-modulesUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-debugUpgrade kernel-64k-debugUpgrade kernel-rtUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-debug-modules-extraUpgrade kernel-rt-debug-modules-extraUpgrade kernel-modules-coreUpgrade kernel-headersUpgrade kernel-rt-modules-coreUpgrade kernel-tools-libs-develUpgrade kernel-uki-virtUpgrade kernel-cross-headersUpgrade kernel-64k-debug-modules-extraUpgrade kernel-abi-stablelistsUpgrade kernel-docUpgrade kernel-devel-matchedUpgrade kernel-rt-debug-develUpgrade kernel | Jul 3, 2024 | Apr 4, 2024 |
| Amazon Linux Ami 2 | — | Upgrade kernel-debuginfo-common-x86_64Upgrade bpftool-debuginfoUpgrade kernel-tools-debuginfoUpgrade python-perfUpgrade kernel-livepatch-4.14.355-280.713Upgrade bpftoolUpgrade kernel-debuginfoUpgrade kernel-headersUpgrade kernelUpgrade kernel-develUpgrade perf-debuginfoUpgrade kernel-livepatch-5.15.152-100.162Upgrade kernel-toolsUpgrade python-perf-debuginfoUpgrade perfUpgrade kernel-livepatch-5.10.213-201.855Upgrade kernel-tools-develUpgrade kernel-debuginfo-common-aarch64 | Aug 28, 2024 | Apr 4, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-debuginfo-common-x86_64Upgrade kernel-headersUpgrade bpftool-debuginfoUpgrade bpftoolUpgrade kernel-livepatch-6.1.82-99.168Upgrade kernel-libbpf-develUpgrade kernel-libbpf-staticUpgrade kernel-modules-extra-commonUpgrade python3-perf-debuginfoUpgrade kernel-modules-extraUpgrade kernelUpgrade perf-debuginfoUpgrade python3-perfUpgrade kernel-libbpfUpgrade kernel-tools-debuginfoUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-develUpgrade kernel-tools-develUpgrade kernel-debuginfoUpgrade kernel-toolsUpgrade perf | Feb 17, 2025 | Apr 4, 2024 |
| Debian | — | Upgrade linux | May 8, 2024 | Apr 4, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernel-tools-libsUpgrade kernelUpgrade kernel-abi-stablelistsUpgrade python3-perfUpgrade kernel-tools | Jul 16, 2024 | Apr 4, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade bpftoolUpgrade kernel-abi-stablelistsUpgrade kernelUpgrade kernel-tools-libsUpgrade python3-perfUpgrade kernel-tools | Jun 26, 2024 | Apr 4, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-tools-libsUpgrade bpftoolUpgrade python3-perfUpgrade kernel-abi-stablelistsUpgrade kernel-toolsUpgrade kernel | Oct 8, 2024 | Apr 4, 2024 |
| Huawei Euleros 2_0_sp8 | — | Upgrade kernel-headersUpgrade kernelUpgrade python3-perfUpgrade kernel-toolsUpgrade perfUpgrade python-perfUpgrade kernel-tools-libsUpgrade kernel-develUpgrade bpftool | Jul 23, 2024 | Apr 4, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade python3-perfUpgrade kernelUpgrade kernel-tools-libsUpgrade kernel-tools | Jul 17, 2024 | Apr 4, 2024 |
| Oracle_linux | — | Upgrade kernel | May 25, 2024 | Apr 4, 2024 |
| Redhat_linux | — | Upgrade kernel-rtUpgrade kernelNo solution exists | May 30, 2024 | Apr 4, 2024 |
| Rocky_linux | — | Upgrade kernel-cross-headersUpgrade kernel-tools-debuginfoUpgrade perf-debuginfoUpgrade kernelUpgrade kernel-rt-modules-extraUpgrade kernel-rt-debugUpgrade kernel-debuginfoUpgrade kernel-debug-develUpgrade perfUpgrade kernel-tools-libs-develUpgrade kernel-rt-coreUpgrade kernel-rt-debug-kvmUpgrade python3-perfUpgrade kernel-headersUpgrade kernel-rt-develUpgrade kernel-develUpgrade kernel-rt-kvmUpgrade kernel-debugUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-rt-modulesUpgrade kernel-modules-extraUpgrade kernel-debug-debuginfoUpgrade bpftoolUpgrade kernel-toolsUpgrade kernel-rt-debug-debuginfoUpgrade kernel-rtUpgrade kernel-rt-debuginfo-common-x86_64Upgrade python3-perf-debuginfoUpgrade bpftool-debuginfoUpgrade kernel-coreUpgrade kernel-tools-libsUpgrade kernel-rt-debug-coreUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-debug-develUpgrade kernel-debug-coreUpgrade kernel-rt-debug-modulesUpgrade kernel-rt-debuginfoUpgrade kernel-debug-modules-extraUpgrade kernel-modulesUpgrade kernel-debug-modules | Jul 16, 2024 | Apr 4, 2024 |
| Suse | — | Upgrade kernel-default-develUpgrade kernel-azure-vdsoUpgrade dtb-alteraUpgrade kselftests-kmp-64kbUpgrade kernel-sourceUpgrade kernel-debug-livepatch-develUpgrade kernel-symsUpgrade kernel-syms-azureUpgrade kernel-default-manUpgrade dtb-qcomUpgrade kernel-macrosUpgrade kernel-azure-extraUpgrade kernel-default-extraUpgrade cluster-md-kmp-azureUpgrade dtb-exynosUpgrade kernel-syms-rtUpgrade kernel-kvmsmallUpgrade dtb-mediatekUpgrade kernel-rt-livepatch-develUpgrade kernel-default-livepatchUpgrade kernel-default-base-rebuildUpgrade kernel-source-azureUpgrade kernel-64kb-optionalUpgrade kernel-azure-livepatch-develUpgrade kernel-kvmsmall-develUpgrade kernel-rt_debug-vdsoUpgrade dlm-kmp-64kbUpgrade kernel-rtUpgrade gfs2-kmp-64kbUpgrade gfs2-kmp-rtUpgrade kernel-obs-qaUpgrade kernel-zfcpdumpUpgrade dtb-lgUpgrade cluster-md-kmp-defaultUpgrade kernel-64kb-develUpgrade dtb-amlogicUpgrade dtb-freescaleUpgrade kernel-azure-optionalUpgrade kernel-64kb-livepatch-develUpgrade kernel-devel-rtUpgrade kernel-default-vdsoUpgrade dtb-apmUpgrade kernel-docs-htmlUpgrade kernel-azure-develUpgrade kernel-rt-livepatchUpgrade ocfs2-kmp-rtUpgrade kernel-64kbUpgrade kernel-kvmsmall-vdsoUpgrade kernel-devel-azureUpgrade kernel-kvmsmall-livepatch-develUpgrade ocfs2-kmp-64kbUpgrade dtb-amazonUpgrade dtb-broadcomUpgrade kernel-default-baseUpgrade kernel-obs-buildUpgrade kernel-debug-vdsoUpgrade kernel-rt-extraUpgrade kernel-source-vanillaUpgrade dtb-socionextUpgrade reiserfs-kmp-azureUpgrade reiserfs-kmp-defaultUpgrade dtb-allwinnerUpgrade reiserfs-kmp-rtUpgrade kernel-rt_debugUpgrade dlm-kmp-azureUpgrade dtb-caviumUpgrade kernel-default-livepatch-develUpgrade kernel-rt-optionalUpgrade gfs2-kmp-azureUpgrade dtb-hisiliconUpgrade dtb-appleUpgrade dtb-amdUpgrade dtb-marvellUpgrade dtb-nvidiaUpgrade dtb-renesasUpgrade dlm-kmp-rtUpgrade reiserfs-kmp-64kbUpgrade kselftests-kmp-rtUpgrade kernel-docsUpgrade dtb-armUpgrade kernel-rt-vdsoUpgrade kernel-default-optionalUpgrade dtb-xilinxUpgrade kernel-64kb-extraUpgrade dlm-kmp-defaultUpgrade dtb-sprdUpgrade kselftests-kmp-defaultUpgrade gfs2-kmp-defaultUpgrade kernel-debugUpgrade kernel-develUpgrade kernel-debug-develUpgrade ocfs2-kmp-defaultUpgrade ocfs2-kmp-azureUpgrade cluster-md-kmp-64kbUpgrade kernel-azureUpgrade kselftests-kmp-azureUpgrade dtb-rockchipUpgrade cluster-md-kmp-rtUpgrade kernel-defaultUpgrade kernel-source-rtUpgrade kernel-rt-develUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-rt_debug-devel | Dec 5, 2025 | Oct 8, 2024 |
| Ubuntu | — | Upgrade linux-image-gkeop-5.4Upgrade linux-image-azure-lts-22.04Upgrade linux-image-5.15.0-1066-azureUpgrade linux-image-5.15.0-1065-azure-fdeUpgrade linux-image-generic-64kUpgrade linux-image-5.4.0-1038-iotUpgrade linux-image-genericUpgrade linux-image-5.4.0-1073-ibmUpgrade linux-image-5.4.0-1093-gkeopUpgrade linux-image-5.15.0-1046-gkeopUpgrade linux-image-lowlatencyUpgrade linux-image-5.15.0-113-generic-lpaeUpgrade linux-image-oem-20.04Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-5.15.0-112-generic-lpaeUpgrade linux-image-oem-20.04bUpgrade linux-image-gcp-lts-20.04Upgrade linux-image-oemUpgrade linux-image-5.15.0-113-generic-64kUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-5.4.0-1126-awsUpgrade linux-image-oem-20.04cUpgrade linux-image-5.15.0-1058-intel-iotgUpgrade linux-image-intelUpgrade linux-image-oem-20.04dUpgrade linux-image-5.15.0-1057-ibmUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-5.4.0-186-lowlatencyUpgrade linux-image-gkeopUpgrade linux-image-gke-5.15Upgrade linux-image-5.4.0-1045-xilinx-zynqmpUpgrade linux-image-5.15.0-1058-raspiUpgrade linux-image-gcpUpgrade linux-image-5.15.0-1030-xilinx-zynqmpUpgrade linux-image-5.4.0-1086-bluefieldUpgrade linux-image-azureUpgrade linux-image-ibmUpgrade linux-image-intel-iotgUpgrade linux-image-5.15.0-1060-gkeUpgrade linux-image-5.4.0-186-generic-lpaeUpgrade linux-image-lowlatency-64kUpgrade linux-image-5.15.0-113-genericUpgrade linux-image-oracle-lts-20.04Upgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-lowlatency-hwe-18.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-nvidiaUpgrade linux-image-gkeUpgrade linux-image-oem-osp1Upgrade linux-image-raspi2Upgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-virtualUpgrade linux-image-5.4.0-1114-kvmUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-generic-hwe-18.04Upgrade linux-image-5.4.0-1131-azureUpgrade linux-image-5.15.0-1060-kvmUpgrade linux-image-oracleUpgrade linux-image-raspi-hwe-18.04Upgrade linux-image-5.15.0-1062-gcpUpgrade linux-image-bluefieldUpgrade linux-image-5.15.0-112-generic-64kUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-azure-lts-20.04Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-5.4.0-1130-gcpUpgrade linux-image-ibm-lts-20.04Upgrade linux-image-5.15.0-112-genericUpgrade linux-image-kvmUpgrade linux-image-5.15.0-1058-nvidia-lowlatencyUpgrade linux-image-aws-lts-22.04Upgrade linux-image-generic-lpaeUpgrade linux-image-5.15.0-1063-awsUpgrade linux-image-5.4.0-1125-oracleUpgrade linux-image-5.15.0-1061-oracleUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-virtual-hwe-18.04Upgrade linux-image-5.4.0-1110-raspiUpgrade linux-image-5.15.0-110-lowlatency-64kUpgrade linux-image-awsUpgrade linux-image-5.4.0-186-genericUpgrade linux-image-aws-lts-20.04Upgrade linux-image-5.15.0-1058-nvidiaUpgrade linux-image-5.15.0-1056-ibmUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-5.15.0-110-lowlatencyUpgrade linux-image-raspiUpgrade linux-image-raspi-nolpaeUpgrade linux-image-lowlatency-64k-hwe-20.04 | 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