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-rt-modulesUpgrade bpftoolUpgrade kernel-modules-extraUpgrade kernel-cross-headersUpgrade kernel-zfcpdump-develUpgrade kernel-rt-debug-modulesUpgrade kernel-rtUpgrade kernel-headersUpgrade kernel-debug-modulesUpgrade kernel-toolsUpgrade kernel-abi-stablelistsUpgrade kernel-zfcpdump-modulesUpgrade kernel-tools-libsUpgrade kernel-debugUpgrade kernel-coreUpgrade kernel-rt-debugUpgrade kernel-modulesUpgrade kernel-debug-coreUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-rt-kvmUpgrade kernel-zfcpdump-coreUpgrade kernelUpgrade kernel-debug-modules-extraUpgrade kernel-zfcpdumpUpgrade kernel-rt-develUpgrade kernel-rt-modules-extraUpgrade kernel-rt-debug-coreUpgrade kernel-debug-develUpgrade perfUpgrade kernel-rt-debug-develUpgrade kernel-rt-debug-modules-extraUpgrade python3-perfUpgrade kernel-rt-coreUpgrade kernel-develUpgrade kernel-rt-debug-kvmUpgrade kernel-docUpgrade kernel-tools-libs-devel | Aug 12, 2024 | May 30, 2024 |
| Amazon Linux Ami 2 | — | Upgrade python-perf-debuginfoUpgrade kernelUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-headersUpgrade python-perfUpgrade kernel-toolsUpgrade bpftool-debuginfoUpgrade kernel-livepatch-5.15.160-104.158Upgrade kernel-livepatch-5.10.217-205.860Upgrade kernel-develUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-debuginfoUpgrade bpftoolUpgrade perfUpgrade kernel-tools-develUpgrade perf-debuginfoUpgrade kernel-debuginfo | Jun 12, 2024 | May 30, 2024 |
| Amazon_linux_2023 | — | Upgrade kernel-libbpfUpgrade python3-perf-debuginfoUpgrade kernel-debuginfoUpgrade kernel-livepatch-6.1.91-99.172Upgrade kernel-tools-debuginfoUpgrade kernel-modules-extraUpgrade perf-debuginfoUpgrade python3-perfUpgrade bpftoolUpgrade kernel-develUpgrade kernel-tools-develUpgrade kernel-debuginfo-common-aarch64Upgrade perfUpgrade kernel-libbpf-staticUpgrade kernel-toolsUpgrade kernel-debuginfo-common-x86_64Upgrade kernelUpgrade kernel-libbpf-develUpgrade bpftool-debuginfoUpgrade kernel-modules-extra-commonUpgrade kernel-headers | Feb 17, 2025 | May 30, 2024 |
| Debian | — | Upgrade linux | Jun 4, 2024 | May 30, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernel-tools-libsUpgrade python3-perfUpgrade kernelUpgrade kernel-toolsUpgrade kernel-abi-stablelists | Oct 8, 2024 | May 30, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-tools-libsUpgrade kernelUpgrade bpftoolUpgrade python3-perfUpgrade kernel-abi-stablelistsUpgrade kernel-tools | Oct 8, 2024 | May 30, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade bpftoolUpgrade kernel-toolsUpgrade kernel-tools-libsUpgrade kernel-abi-stablelistsUpgrade kernelUpgrade python3-perf | Oct 9, 2024 | May 30, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade kernel-tools-libsUpgrade kernel-toolsUpgrade python3-perfUpgrade kernel | Oct 8, 2024 | May 30, 2024 |
| Oracle_linux | — | Upgrade kernel | Aug 16, 2024 | May 30, 2024 |
| Redhat_linux | — | Upgrade kernel-rtUpgrade kernelNo solution exists | Aug 12, 2024 | May 30, 2024 |
| Rocky_linux | — | Upgrade kernel-rt-debuginfo-common-x86_64Upgrade kernel-tools-libs-develUpgrade kernel-develUpgrade bpftoolUpgrade kernel-rt-modules-extraUpgrade kernel-rt-develUpgrade kernel-rt-kvmUpgrade kernel-toolsUpgrade kernel-rtUpgrade python3-perf-debuginfoUpgrade kernel-tools-libsUpgrade kernel-rt-debuginfoUpgrade kernel-rt-debug-coreUpgrade kernelUpgrade kernel-debug-modulesUpgrade kernel-rt-debug-debuginfoUpgrade kernel-cross-headersUpgrade kernel-rt-debugUpgrade kernel-debuginfo-common-x86_64Upgrade bpftool-debuginfoUpgrade perf-debuginfoUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-debug-modulesUpgrade kernel-debuginfoUpgrade kernel-debugUpgrade kernel-modules-extraUpgrade kernel-rt-debug-develUpgrade python3-perfUpgrade kernel-rt-coreUpgrade kernel-debug-develUpgrade kernel-coreUpgrade kernel-tools-debuginfoUpgrade kernel-debug-modules-extraUpgrade kernel-debug-debuginfoUpgrade kernel-modulesUpgrade kernel-debug-coreUpgrade perfUpgrade kernel-rt-modulesUpgrade kernel-rt-debug-kvmUpgrade kernel-headers | Aug 22, 2024 | May 30, 2024 |
| Suse | — | Upgrade kernel-kvmsmall-livepatch-develUpgrade dtb-hisiliconUpgrade reiserfs-kmp-defaultUpgrade kernel-rt_debug-develUpgrade ocfs2-kmp-defaultUpgrade dtb-sprdUpgrade gfs2-kmp-azureUpgrade kernel-64kb-optionalUpgrade kernel-debugUpgrade dtb-caviumUpgrade dtb-nvidiaUpgrade reiserfs-kmp-rtUpgrade kernel-rt_debug-livepatch-develUpgrade dtb-marvellUpgrade cluster-md-kmp-rtUpgrade dtb-armUpgrade kernel-azure-optionalUpgrade dtb-allwinnerUpgrade kernel-azureUpgrade kernel-azure-extraUpgrade kernel-rt-livepatchUpgrade kernel-default-optionalUpgrade dtb-renesasUpgrade kernel-64kb-livepatch-develUpgrade kernel-source-vanillaUpgrade kernel-rt_debugUpgrade dtb-freescaleUpgrade kernel-debug-develUpgrade kselftests-kmp-rtUpgrade dtb-alteraUpgrade dtb-appleUpgrade dtb-amazonUpgrade dtb-xilinxUpgrade dtb-socionextUpgrade gfs2-kmp-defaultUpgrade kernel-default-livepatch-develUpgrade kernel-symsUpgrade cluster-md-kmp-64kbUpgrade kernel-64kb-develUpgrade dtb-mediatekUpgrade kernel-default-baseUpgrade kernel-default-develUpgrade kernel-devel-rtUpgrade kernel-docsUpgrade ocfs2-kmp-azureUpgrade kernel-64kb-extraUpgrade kernel-debug-vdsoUpgrade kernel-defaultUpgrade kernel-rt-develUpgrade dlm-kmp-defaultUpgrade dtb-amdUpgrade dlm-kmp-rtUpgrade kernel-default-livepatchUpgrade kernel-develUpgrade kernel-rt-vdsoUpgrade cluster-md-kmp-azureUpgrade kernel-default-extraUpgrade dtb-qcomUpgrade kernel-sourceUpgrade kernel-rt-extraUpgrade kernel-azure-livepatch-develUpgrade dtb-rockchipUpgrade dtb-amlogicUpgrade kselftests-kmp-azureUpgrade kernel-source-rtUpgrade kernel-devel-azureUpgrade kernel-azure-vdsoUpgrade gfs2-kmp-rtUpgrade kernel-debug-livepatch-develUpgrade kernel-obs-qaUpgrade kernel-obs-buildUpgrade dtb-apmUpgrade reiserfs-kmp-64kbUpgrade kernel-zfcpdumpUpgrade kernel-syms-rtUpgrade kernel-rt-optionalUpgrade kernel-macrosUpgrade kernel-default-vdsoUpgrade dtb-lgUpgrade dtb-broadcomUpgrade kernel-azure-develUpgrade kselftests-kmp-defaultUpgrade dlm-kmp-azureUpgrade dlm-kmp-64kbUpgrade reiserfs-kmp-azureUpgrade kernel-syms-azureUpgrade kernel-rtUpgrade kernel-kvmsmall-vdsoUpgrade ocfs2-kmp-rtUpgrade kernel-rt_debug-vdsoUpgrade ocfs2-kmp-64kbUpgrade kselftests-kmp-64kbUpgrade kernel-source-azureUpgrade kernel-rt-livepatch-develUpgrade kernel-docs-htmlUpgrade kernel-64kbUpgrade kernel-kvmsmallUpgrade kernel-kvmsmall-develUpgrade cluster-md-kmp-defaultUpgrade kernel-default-base-rebuildUpgrade gfs2-kmp-64kbUpgrade dtb-exynos | Dec 5, 2025 | Sep 10, 2024 |
| Ubuntu | — | Upgrade linux-image-5.15.0-1062-nvidia-lowlatencyUpgrade linux-image-5.15.0-1064-kvmUpgrade linux-image-virtual-hwe-18.04Upgrade linux-image-5.4.0-1097-gkeopUpgrade linux-image-5.4.0-1130-awsUpgrade linux-image-bluefieldUpgrade linux-image-nvidia-6.8Upgrade linux-image-gkeUpgrade linux-image-oem-24.04Upgrade linux-image-intel-iotgUpgrade linux-image-oracle-lts-20.04Upgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-5.15.0-1062-nvidiaUpgrade linux-image-5.4.0-1129-oracleUpgrade linux-image-azure-cvmUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-5.4.0-1118-kvmUpgrade linux-image-6.8.0-1010-oracleUpgrade linux-image-raspi-hwe-18.04Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-oem-24.04aUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-5.15.0-1060-raspiUpgrade linux-image-6.8.0-1009-raspiUpgrade linux-image-snapdragon-hwe-18.04Upgrade linux-image-6.8.0-1008-gkeUpgrade linux-image-oem-osp1Upgrade linux-image-oem-20.04Upgrade linux-image-6.8.0-1011-nvidia-lowlatencyUpgrade linux-image-genericUpgrade linux-image-5.15.0-1062-intel-iotgUpgrade linux-image-5.4.0-1090-bluefieldUpgrade linux-image-5.4.0-1049-xilinx-zynqmpUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-5.15.0-1050-gkeopUpgrade linux-image-gkeopUpgrade linux-image-oracleUpgrade linux-image-oracle-64kUpgrade linux-image-gcp-lts-20.04Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-lowlatency-hwe-18.04Upgrade linux-image-nvidia-64kUpgrade linux-image-5.15.0-1060-ibmUpgrade linux-image-5.4.0-192-genericUpgrade linux-image-5.15.0-1067-awsUpgrade linux-image-5.15.0-1070-azure-fdeUpgrade linux-image-intelUpgrade linux-image-5.15.0-1035-xilinx-zynqmpUpgrade linux-image-6.8.0-40-lowlatencyUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-gcpUpgrade linux-image-5.4.0-192-lowlatencyUpgrade linux-image-6.8.0-40-genericUpgrade linux-image-6.8.0-1011-nvidia-lowlatency-64kUpgrade linux-image-oemUpgrade linux-image-virtualUpgrade linux-image-5.4.0-192-generic-lpaeUpgrade linux-image-5.15.0-118-generic-64kUpgrade linux-image-6.8.0-1010-oracle-64kUpgrade linux-image-5.15.0-118-lowlatencyUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-6.8.0-1011-nvidiaUpgrade linux-image-azure-lts-22.04Upgrade linux-image-generic-lpaeUpgrade linux-image-5.4.0-1114-raspiUpgrade linux-image-oem-20.04cUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-generic-64kUpgrade linux-image-ibm-classicUpgrade linux-image-raspiUpgrade linux-image-oem-20.04dUpgrade linux-image-generic-hwe-18.04Upgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-oem-20.04bUpgrade linux-image-gkeop-5.4Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-5.4.0-1042-iotUpgrade linux-image-6.8.0-40-generic-64kUpgrade linux-image-azure-fdeUpgrade linux-image-ibmUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-5.15.0-1064-gkeUpgrade linux-image-6.8.0-1012-azureUpgrade linux-image-aws-lts-20.04Upgrade linux-image-6.8.0-40-lowlatency-64kUpgrade linux-image-lowlatencyUpgrade linux-image-5.4.0-1077-ibmUpgrade linux-image-6.8.0-1011-nvidia-64kUpgrade linux-image-lowlatency-64kUpgrade linux-image-6.8.0-1012-azure-fdeUpgrade linux-image-6.8.0-1010-ibmUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-1013-awsUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-5.4.0-1135-azureUpgrade linux-image-azure-lts-20.04Upgrade linux-image-5.15.0-118-lowlatency-64kUpgrade linux-image-5.15.0-1065-oracleUpgrade linux-image-awsUpgrade linux-image-raspi2Upgrade linux-image-5.15.0-118-generic-lpaeUpgrade linux-image-raspi-nolpaeUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-ibm-lts-20.04Upgrade linux-image-5.15.0-1066-gcpUpgrade linux-image-aws-lts-22.04Upgrade linux-image-nvidiaUpgrade linux-image-5.4.0-1134-gcpUpgrade linux-image-6.8.0-1010-oemUpgrade linux-image-6.8.0-1012-gcpUpgrade linux-image-azureUpgrade linux-image-gke-5.15Upgrade linux-image-5.15.0-118-genericUpgrade linux-image-5.15.0-1070-azureUpgrade linux-image-kvm | 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