In the Linux kernel, the following vulnerability has been resolved:
nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment().
syzbot triggered various splats (see [0] and links) by a crafted GSO packet of VIRTIO_NET_HDR_GSO_UDP layering the following protocols:
ETH_P_8021AD + ETH_P_NSH + ETH_P_IPV6 + IPPROTO_UDP
NSH can encapsulate IPv4, IPv6, Ethernet, NSH, and MPLS. As the inner protocol can be Ethernet, NSH GSO handler, nsh_gso_segment(), calls skb_mac_gso_segment() to invoke inner protocol GSO handlers.
nsh_gso_segment() does the following for the original skb before calling skb_mac_gso_segment()
1. reset skb->network_header 2. save the original skb->{mac_heaeder,mac_len} in a local variable 3. pull the NSH header 4. resets skb->mac_header 5. set up skb->mac_len and skb->protocol for the inner protocol.
and does the following for the segmented skb
6. set ntohs(ETH_P_NSH) to skb->protocol 7. push the NSH header 8. restore skb->mac_header 9. set skb->mac_header + mac_len to skb->network_header 10. restore skb->mac_len
There are two problems in 6-7 and 8-9.
(a) After 6 & 7, skb->data points to the NSH header, so the outer header (ETH_P_8021AD in this case) is stripped when skb is sent out of netdev.
Also, if NSH is encapsulated by NSH + Ethernet (so NSH-Ethernet-NSH), skb_pull() in the first nsh_gso_segment() will make skb->data point to the middle of the outer NSH or Ethernet header because the Ethernet header is not pulled by the second nsh_gso_segment().
(b) While restoring skb->{mac_header,network_header} in 8 & 9, nsh_gso_segment() does not assume that the data in the linear buffer is shifted.
However, udp6_ufo_fragment() could shift the data and change skb->mac_header accordingly as demonstrated by syzbot.
If this happens, even the restored skb->mac_header points to the middle of the outer header.
It seems nsh_gso_segment() has never worked with outer headers so far.
At the end of nsh_gso_segment(), the outer header must be restored for the segmented skb, instead of the NSH header.
To do that, let's calculate the outer header position relatively from the inner header and set skb->{data,mac_header,protocol} properly.
[0]: BUG: KMSAN: uninit-value in ipvlan_process_outbound drivers/net/ipvlan/ipvlan_core.c:524 [inline] BUG: KMSAN: uninit-value in ipvlan_xmit_mode_l3 drivers/net/ipvlan/ipvlan_core.c:602 [inline] BUG: KMSAN: uninit-value in ipvlan_queue_xmit+0xf44/0x16b0 drivers/net/ipvlan/ipvlan_core.c:668 ipvlan_process_outbound drivers/net/ipvlan/ipvlan_core.c:524 [inline] ipvlan_xmit_mode_l3 drivers/net/ipvlan/ipvlan_core.c:602 [inline] ipvlan_queue_xmit+0xf44/0x16b0 drivers/net/ipvlan/ipvlan_core.c:668 ipvlan_start_xmit+0x5c/0x1a0 drivers/net/ipvlan/ipvlan_main.c:222 __netdev_start_xmit include/linux/netdevice.h:4989 [inline] netdev_start_xmit include/linux/netdevice.h:5003 [inline] xmit_one net/core/dev.c:3547 [inline] dev_hard_start_xmit+0x244/0xa10 net/core/dev.c:3563 __dev_queue_xmit+0x33ed/0x51c0 net/core/dev.c:4351 dev_queue_xmit include/linux/netdevice.h:3171 [inline] packet_xmit+0x9c/0x6b0 net/packet/af_packet.c:276 packet_snd net/packet/af_packet.c:3081 [inline] packet_sendmsg+0x8aef/0x9f10 net/packet/af_packet.c:3113 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg net/socket.c:745 [inline] __sys_sendto+0x735/0xa10 net/socket.c:2191 __do_sys_sendto net/socket.c:2203 [inline] __se_sys_sendto net/socket.c:2199 [inline] __x64_sys_sendto+0x125/0x1c0 net/socket.c:2199 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x63/0x6b
Uninit was created at: slab_post_alloc_hook mm/slub.c:3819 [inline] slab_alloc_node mm/slub.c:3860 [inline] __do_kmalloc_node mm/slub.c:3980 [inline] __kmalloc_node_track_caller+0x705/0x1000 mm/slub.c:4001 kmalloc_reserve+0x249/0x4a0 net/core/skbuff.c:582 __ ---truncated---
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-develUpgrade kernel-tools-libs-develUpgrade kernel-debug-develUpgrade perfUpgrade kernel-rt-debug-develUpgrade kernel-rt-coreUpgrade kernel-rt-debug-modules-extraUpgrade python3-perfUpgrade kernel-rt-debug-kvmUpgrade kernel-docUpgrade kernel-debug-modulesUpgrade kernel-rt-kvmUpgrade kernel-tools-libsUpgrade kernel-coreUpgrade kernelUpgrade kernel-debug-coreUpgrade kernel-rt-debug-coreUpgrade kernel-cross-headersUpgrade kernel-zfcpdump-modulesUpgrade kernel-toolsUpgrade kernel-modules-extraUpgrade kernel-headersUpgrade kernel-rt-develUpgrade kernel-rt-modulesUpgrade kernel-debug-modules-extraUpgrade kernel-modulesUpgrade kernel-rt-debug-modulesUpgrade kernel-zfcpdump-coreUpgrade kernel-debugUpgrade kernel-zfcpdump-modules-extraUpgrade bpftoolUpgrade kernel-rtUpgrade kernel-zfcpdumpUpgrade kernel-rt-modules-extraUpgrade kernel-zfcpdump-develUpgrade kernel-abi-stablelistsUpgrade kernel-rt-debug | Aug 12, 2024 | May 30, 2024 |
| Amazon Linux Ami 2 | — | Upgrade kernelUpgrade python-perf-debuginfoUpgrade kernel-toolsUpgrade python-perfUpgrade bpftool-debuginfoUpgrade kernel-livepatch-5.10.217-205.860Upgrade kernel-debuginfo-common-x86_64Upgrade kernel-livepatch-5.15.160-104.158Upgrade kernel-headersUpgrade kernel-debuginfo-common-aarch64Upgrade bpftoolUpgrade perf-debuginfoUpgrade kernel-tools-develUpgrade kernel-debuginfoUpgrade perfUpgrade kernel-develUpgrade kernel-tools-debuginfo | Jun 12, 2024 | May 30, 2024 |
| Amazon_linux_2023 | — | Upgrade kernelUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-toolsUpgrade kernel-modules-extra-commonUpgrade kernel-headersUpgrade bpftool-debuginfoUpgrade kernel-libbpf-staticUpgrade kernel-libbpf-develUpgrade kernel-develUpgrade bpftoolUpgrade python3-perf-debuginfoUpgrade kernel-livepatch-6.1.91-99.172Upgrade kernel-debuginfoUpgrade kernel-tools-debuginfoUpgrade perf-debuginfoUpgrade kernel-tools-develUpgrade kernel-debuginfo-common-aarch64Upgrade perfUpgrade kernel-modules-extraUpgrade python3-perfUpgrade kernel-libbpf | Feb 17, 2025 | May 30, 2024 |
| Debian | — | Upgrade linux | Jun 4, 2024 | May 30, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade python3-perfUpgrade kernel-tools-libsUpgrade kernelUpgrade kernel-toolsUpgrade kernel-abi-stablelists | Oct 8, 2024 | May 30, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-toolsUpgrade kernel-abi-stablelistsUpgrade python3-perfUpgrade kernelUpgrade bpftoolUpgrade kernel-tools-libs | Oct 8, 2024 | May 30, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade python3-perfUpgrade kernel-tools-libsUpgrade kernelUpgrade kernel-toolsUpgrade bpftoolUpgrade kernel-abi-stablelists | Oct 9, 2024 | May 30, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade kernel-tools-libsUpgrade kernel-toolsUpgrade kernelUpgrade python3-perf | Oct 8, 2024 | May 30, 2024 |
| Oracle_linux | — | Upgrade kernel | Aug 16, 2024 | May 30, 2024 |
| Redhat_linux | — | No solution existsUpgrade kernelUpgrade kernel-rt | Aug 12, 2024 | May 30, 2024 |
| Rocky_linux | — | Upgrade kernel-rt-debug-develUpgrade kernel-debug-modules-extraUpgrade kernel-rt-debug-modulesUpgrade kernel-rt-coreUpgrade kernel-debuginfoUpgrade kernel-debug-develUpgrade kernel-rt-debug-modules-extraUpgrade perf-debuginfoUpgrade kernel-debugUpgrade kernel-debug-debuginfoUpgrade kernel-headersUpgrade kernel-modules-extraUpgrade kernel-modulesUpgrade kernel-rt-debug-kvmUpgrade kernel-rt-modulesUpgrade kernel-coreUpgrade kernel-debug-coreUpgrade kernel-tools-debuginfoUpgrade perfUpgrade python3-perfUpgrade bpftool-debuginfoUpgrade kernel-rtUpgrade kernel-rt-debuginfo-common-x86_64Upgrade kernel-rt-debuginfoUpgrade kernel-tools-libsUpgrade kernel-rt-develUpgrade kernel-toolsUpgrade kernel-rt-kvmUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-develUpgrade kernel-rt-debug-coreUpgrade bpftoolUpgrade kernel-rt-modules-extraUpgrade kernel-debug-modulesUpgrade kernelUpgrade python3-perf-debuginfoUpgrade kernel-rt-debug-debuginfoUpgrade kernel-cross-headersUpgrade kernel-rt-debugUpgrade kernel-tools-libs-devel | Aug 22, 2024 | May 30, 2024 |
| Suse | — | Upgrade gfs2-kmp-azureUpgrade kernel-azure-optionalUpgrade dtb-renesasUpgrade dtb-socionextUpgrade ocfs2-kmp-azureUpgrade ocfs2-kmp-defaultUpgrade dtb-armUpgrade dtb-marvellUpgrade kernel-default-optionalUpgrade kernel-default-livepatchUpgrade kernel-develUpgrade dlm-kmp-defaultUpgrade kernel-64kb-livepatch-develUpgrade kernel-symsUpgrade kernel-rt-livepatchUpgrade dtb-mediatekUpgrade kernel-64kb-develUpgrade kernel-rt-develUpgrade dlm-kmp-rtUpgrade kernel-azure-extraUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-azureUpgrade dtb-hisiliconUpgrade reiserfs-kmp-defaultUpgrade dtb-nvidiaUpgrade cluster-md-kmp-64kbUpgrade dtb-sprdUpgrade dtb-appleUpgrade gfs2-kmp-defaultUpgrade kernel-docsUpgrade kernel-rt_debug-develUpgrade kernel-rt_debugUpgrade kernel-rt_debug-livepatch-develUpgrade dtb-allwinnerUpgrade dtb-caviumUpgrade cluster-md-kmp-rtUpgrade kernel-64kb-optionalUpgrade kernel-devel-rtUpgrade kernel-64kb-extraUpgrade kernel-debugUpgrade kselftests-kmp-rtUpgrade kernel-default-baseUpgrade dtb-amazonUpgrade kernel-debug-vdsoUpgrade dtb-alteraUpgrade dtb-amdUpgrade kernel-source-vanillaUpgrade kernel-defaultUpgrade reiserfs-kmp-rtUpgrade kernel-default-develUpgrade kernel-default-livepatch-develUpgrade dtb-freescaleUpgrade dtb-xilinxUpgrade kernel-debug-develUpgrade dtb-exynosUpgrade gfs2-kmp-64kbUpgrade kernel-azure-livepatch-develUpgrade kernel-kvmsmallUpgrade kernel-docs-htmlUpgrade kernel-64kbUpgrade ocfs2-kmp-rtUpgrade ocfs2-kmp-64kbUpgrade kselftests-kmp-64kbUpgrade kernel-devel-azureUpgrade kernel-azure-vdsoUpgrade kernel-source-rtUpgrade gfs2-kmp-rtUpgrade kernel-default-extraUpgrade reiserfs-kmp-azureUpgrade kernel-azure-develUpgrade cluster-md-kmp-defaultUpgrade kernel-default-base-rebuildUpgrade cluster-md-kmp-azureUpgrade dtb-qcomUpgrade dtb-apmUpgrade kernel-sourceUpgrade kernel-kvmsmall-develUpgrade dtb-amlogicUpgrade kernel-kvmsmall-vdsoUpgrade kernel-zfcpdumpUpgrade dtb-rockchipUpgrade kernel-default-vdsoUpgrade kernel-debug-livepatch-develUpgrade dtb-broadcomUpgrade reiserfs-kmp-64kbUpgrade kernel-syms-rtUpgrade kernel-rt-optionalUpgrade dtb-lgUpgrade kselftests-kmp-defaultUpgrade kernel-syms-azureUpgrade kernel-rtUpgrade dlm-kmp-64kbUpgrade kernel-macrosUpgrade dlm-kmp-azureUpgrade kernel-rt-vdsoUpgrade kernel-obs-buildUpgrade kselftests-kmp-azureUpgrade kernel-rt-extraUpgrade kernel-obs-qaUpgrade kernel-source-azureUpgrade kernel-rt_debug-vdsoUpgrade kernel-rt-livepatch-devel | Dec 5, 2025 | Sep 10, 2024 |
| Ubuntu | — | Upgrade linux-image-5.15.0-1060-ibmUpgrade linux-image-5.15.0-1070-azure-fdeUpgrade linux-image-gkeop-5.15Upgrade linux-image-oem-24.04Upgrade linux-image-5.15.0-1067-awsUpgrade linux-image-oem-24.04aUpgrade linux-image-5.15.0-1062-nvidiaUpgrade linux-image-gkeUpgrade linux-image-virtual-hwe-18.04Upgrade linux-image-6.8.0-1010-oracleUpgrade linux-image-5.4.0-1097-gkeopUpgrade linux-image-oracle-lts-20.04Upgrade linux-image-5.15.0-1062-intel-iotgUpgrade linux-image-5.4.0-192-genericUpgrade linux-image-6.8.0-1010-oracle-64kUpgrade linux-image-genericUpgrade linux-image-intel-iotgUpgrade linux-image-bluefieldUpgrade linux-image-6.8.0-1011-nvidia-lowlatencyUpgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-raspi-hwe-18.04Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-6.8.0-40-lowlatencyUpgrade linux-image-nvidia-6.8Upgrade linux-image-5.15.0-1064-kvmUpgrade linux-image-5.15.0-1062-nvidia-lowlatencyUpgrade linux-image-oem-osp1Upgrade linux-image-oracleUpgrade linux-image-6.8.0-40-genericUpgrade linux-image-5.15.0-1050-gkeopUpgrade linux-image-5.15.0-1035-xilinx-zynqmpUpgrade linux-image-oemUpgrade linux-image-virtualUpgrade linux-image-6.8.0-1008-gkeUpgrade linux-image-nvidia-64kUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-6.8.0-1009-raspiUpgrade linux-image-5.15.0-1060-raspiUpgrade linux-image-gcp-lts-20.04Upgrade linux-image-azure-cvmUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.4.0-1090-bluefieldUpgrade linux-image-gcpUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-5.15.0-118-generic-64kUpgrade linux-image-intelUpgrade linux-image-lowlatency-hwe-18.04Upgrade linux-image-5.15.0-118-lowlatencyUpgrade linux-image-oem-20.04Upgrade linux-image-5.4.0-1129-oracleUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-5.4.0-1130-awsUpgrade linux-image-gkeopUpgrade linux-image-5.4.0-192-generic-lpaeUpgrade linux-image-6.8.0-1011-nvidia-lowlatency-64kUpgrade linux-image-5.4.0-192-lowlatencyUpgrade linux-image-5.4.0-1118-kvmUpgrade linux-image-5.4.0-1049-xilinx-zynqmpUpgrade linux-image-oracle-64kUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-lowlatencyUpgrade linux-image-lowlatency-64kUpgrade linux-image-nvidiaUpgrade linux-image-aws-lts-20.04Upgrade linux-image-5.15.0-1064-gkeUpgrade linux-image-5.15.0-118-generic-lpaeUpgrade linux-image-azure-lts-20.04Upgrade linux-image-generic-64kUpgrade linux-image-5.15.0-1065-oracleUpgrade linux-image-oem-20.04bUpgrade linux-image-gke-5.15Upgrade linux-image-6.8.0-1012-gcpUpgrade linux-image-5.4.0-1134-gcpUpgrade linux-image-azureUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-gkeop-5.4Upgrade linux-image-6.8.0-1010-oemUpgrade linux-image-6.8.0-40-generic-64kUpgrade linux-image-6.8.0-1010-ibmUpgrade linux-image-6.8.0-1012-azureUpgrade linux-image-6.8.0-1012-azure-fdeUpgrade linux-image-ibmUpgrade linux-image-6.8.0-1013-awsUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-5.15.0-118-lowlatency-64kUpgrade linux-image-generic-hwe-18.04Upgrade linux-image-generic-lpaeUpgrade linux-image-raspi-nolpaeUpgrade linux-image-kvmUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-5.4.0-1135-azureUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.8.0-1011-nvidia-64kUpgrade linux-image-5.15.0-1066-gcpUpgrade linux-image-6.8.0-40-lowlatency-64kUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-5.15.0-118-genericUpgrade linux-image-5.15.0-1070-azureUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-azure-fdeUpgrade linux-image-oem-20.04cUpgrade linux-image-azure-lts-22.04Upgrade linux-image-awsUpgrade linux-image-aws-lts-22.04Upgrade linux-image-5.4.0-1114-raspiUpgrade linux-image-raspiUpgrade linux-image-ibm-classicUpgrade linux-image-5.4.0-1077-ibmUpgrade linux-image-raspi2Upgrade linux-image-6.8.0-1011-nvidiaUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-5.4.0-1042-iotUpgrade linux-image-oem-20.04dUpgrade linux-image-ibm-lts-20.04 | Aug 9, 2024 | May 30, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | May 30, 2024 |
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