Vulnerability · Published Jul 29, 2024 · Assigned by Linux

CVE-2024-41048skmsg: Skip zero length skb in sk_msg_recvmsg

High 7.5

In plain English

A high-severity security flaw in Linux from Linux. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.8% (higher than 57% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.

Severity (CVSS 3.1)7.5High
Exploit odds (30 days)0.8%top 42.7% of all CVEs
Exploited in the wildNo reportsCISA SSVC: none
Attack toolingNoneno public tooling known

Official description

In the Linux kernel, the following vulnerability has been resolved: skmsg: Skip zero length skb in sk_msg_recvmsg When running BPF selftests (./test_progs -t sockmap_basic) on a Loongarch platform, the following kernel panic occurs: [...] Oops[#1]: CPU: 22 PID: 2824 Comm: test_progs Tainted: G OE 6.10.0-rc2+ #18 Hardware name: LOONGSON Dabieshan/Loongson-TC542F0, BIOS Loongson-UDK2018 ... ... ra: 90000000048bf6c0 sk_msg_recvmsg+0x120/0x560 ERA: 9000000004162774 copy_page_to_iter+0x74/0x1c0 CRMD: 000000b0 (PLV0 -IE -DA +PG DACF=CC DACM=CC -WE) PRMD: 0000000c (PPLV0 +PIE +PWE) EUEN: 00000007 (+FPE +SXE +ASXE -BTE) ECFG: 00071c1d (LIE=0,2-4,10-12 VS=7) ESTAT: 00010000 [PIL] (IS= ECode=1 EsubCode=0) BADV: 0000000000000040 PRID: 0014c011 (Loongson-64bit, Loongson-3C5000) Modules linked in: bpf_testmod(OE) xt_CHECKSUM xt_MASQUERADE xt_conntrack Process test_progs (pid: 2824, threadinfo=0000000000863a31, task=...) Stack : ... Call Trace: [<9000000004162774>] copy_page_to_iter+0x74/0x1c0 [<90000000048bf6c0>] sk_msg_recvmsg+0x120/0x560 [<90000000049f2b90>] tcp_bpf_recvmsg_parser+0x170/0x4e0 [<90000000049aae34>] inet_recvmsg+0x54/0x100 [<900000000481ad5c>] sock_recvmsg+0x7c/0xe0 [<900000000481e1a8>] __sys_recvfrom+0x108/0x1c0 [<900000000481e27c>] sys_recvfrom+0x1c/0x40 [<9000000004c076ec>] do_syscall+0x8c/0xc0 [<9000000003731da4>] handle_syscall+0xc4/0x160 Code: ... ---[ end trace 0000000000000000 ]--- Kernel panic - not syncing: Fatal exception Kernel relocated by 0x3510000 .text @ 0x9000000003710000 .data @ 0x9000000004d70000 .bss @ 0x9000000006469400 ---[ end Kernel panic - not syncing: Fatal exception ]--- [...] This crash happens every time when running sockmap_skb_verdict_shutdown subtest in sockmap_basic. This crash is because a NULL pointer is passed to page_address() in the sk_msg_recvmsg(). Due to the different implementations depending on the architecture, page_address(NULL) will trigger a panic on Loongarch platform but not on x86 platform. So this bug was hidden on x86 platform for a while, but now it is exposed on Loongarch platform. The root cause is that a zero length skb (skb->len == 0) was put on the queue. This zero length skb is a TCP FIN packet, which was sent by shutdown(), invoked in test_sockmap_skb_verdict_shutdown(): shutdown(p1, SHUT_WR); In this case, in sk_psock_skb_ingress_enqueue(), num_sge is zero, and no page is put to this sge (see sg_set_page in sg_set_page), but this empty sge is queued into ingress_msg list. And in sk_msg_recvmsg(), this empty sge is used, and a NULL page is got by sg_page(sge). Pass this NULL page to copy_page_to_iter(), which passes it to kmap_local_page() and to page_address(), then kernel panics. To solve this, we should skip this zero length skb. So in sk_msg_recvmsg(), if copy is zero, that means it's a zero length skb, skip invoking copy_page_to_iter(). We are using the EFAULT return triggered by copy_page_to_iter to check for is_fin in tcp_bpf.c.

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
Debian:12linux6.1.106-1DEBIAN-CVE-2024-41048
Debian:13linux6.9.10-1DEBIAN-CVE-2024-41048
Debian:14linux6.9.10-1DEBIAN-CVE-2024-41048
Ubuntu:22.04:LTSlinux5.15.0-121.131UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux6.8.0-48.48UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux6.8.0-48.48USN-7089-1
Ubuntu:22.04:LTSlinux-allwinner-5.19no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-aws5.15.0-1069.75UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-aws6.8.0-1018.20USN-7089-3
Ubuntu:24.04:LTSlinux-aws6.8.0-1018.20UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-aws-5.19no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-aws-6.2no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-aws-6.5no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-aws-6.86.8.0-1018.19~22.04.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-aws-6.86.8.0-1018.19~22.04.1USN-7089-3
Ubuntu:22.04:LTSlinux-azure5.15.0-1072.81UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-azure6.8.0-1017.20USN-7089-2
Ubuntu:24.04:LTSlinux-azure6.8.0-1017.20UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-azure-5.19no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-azure-6.2no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-azure-6.5no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-azure-6.86.8.0-1017.20~22.04.1USN-7090-1
Ubuntu:22.04:LTSlinux-azure-6.86.8.0-1017.20~22.04.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-azure-fde5.15.0-1072.81.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-azure-fde-5.19no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-azure-fde-6.2no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-gcp5.15.0-1068.76UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-gcp6.8.0-1017.19UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-gcp6.8.0-1017.19USN-7089-2
Ubuntu:22.04:LTSlinux-gcp-5.19no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-gcp-6.2no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-gcp-6.5no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-gcp-6.86.8.0-1017.19~22.04.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-gcp-6.86.8.0-1017.19~22.04.1USN-7089-1
Ubuntu:22.04:LTSlinux-gke5.15.0-1066.72UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-gke6.8.0-1013.17USN-7089-6
Ubuntu:24.04:LTSlinux-gke6.8.0-1013.17UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-gkeop5.15.0-1052.59UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-gkeop6.8.0-1002.4UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-gkeop6.8.0-1002.4USN-7156-1
Ubuntu:22.04:LTSlinux-hwe-5.19no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-hwe-6.2no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-hwe-6.5no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-hwe-6.86.8.0-48.48~22.04.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-hwe-6.86.8.0-48.48~22.04.1USN-7089-1
Ubuntu:22.04:LTSlinux-ibm5.15.0-1062.65UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-ibm6.8.0-1015.15USN-7089-2
Ubuntu:24.04:LTSlinux-ibm6.8.0-1015.15UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-ibm-6.86.8.0-1015.15~22.04.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-intel-iotg5.15.0-1064.70UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-kvm5.15.0-1066.71UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-lowlatency5.15.0-121.131UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-lowlatency6.8.0-48.48.3UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-lowlatency6.8.0-48.48.3USN-7089-7
Ubuntu:22.04:LTSlinux-lowlatency-hwe-5.19no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.2no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.5no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.86.8.0-48.48.3~22.04.1USN-7089-7
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.86.8.0-48.48.3~22.04.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-nvidia5.15.0-1064.65UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-nvidia6.8.0-1017.19USN-7095-1
Ubuntu:24.04:LTSlinux-nvidia6.8.0-1017.19UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-nvidia-6.2no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-nvidia-6.5no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-nvidia-6.86.8.0-1017.19~22.04.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-nvidia-6.86.8.0-1017.19~22.04.1USN-7095-1
Ubuntu:24.04:LTSlinux-nvidia-lowlatency6.8.0-1017.19.1USN-7095-1
Ubuntu:24.04:LTSlinux-nvidia-lowlatency6.8.0-1017.19.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-nvidia-tegra5.15.0-1028.28UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-nvidia-tegra-igx5.15.0-1016.16UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-oem-5.17no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-oem-6.0no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-oem-6.1no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-oem-6.5no fix listedUBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-oem-6.86.8.0-1016.16USN-7089-4
Ubuntu:24.04:LTSlinux-oem-6.86.8.0-1016.16UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-oracle5.15.0-1067.73UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-oracle6.8.0-1015.16USN-7089-3
Ubuntu:24.04:LTSlinux-oracle6.8.0-1015.16UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-oracle-6.5no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-oracle-6.86.8.0-1015.15~22.04.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-oracle-6.86.8.0-1015.15~22.04.1USN-7089-3
Ubuntu:22.04:LTSlinux-raspi5.15.0-1062.65UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-raspi6.8.0-1014.16UBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-raspi6.8.0-1014.16USN-7089-5
Ubuntu:22.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-riscv6.8.0-48.48.1UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-riscv-5.19no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-riscv-6.5no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-riscv-6.86.8.0-48.48.1~22.04.2UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-starfive-5.19no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-starfive-6.2no fix listedUBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-starfive-6.5no fix listedUBUNTU-CVE-2024-41048
Ubuntu:24.04:LTSlinux-xilinx6.8.0-1009.10UBUNTU-CVE-2024-41048
Ubuntu:22.04:LTSlinux-xilinx-zynqmp5.15.0-1035.39UBUNTU-CVE-2024-41048

Affected products (as reported)

VendorProductVersions
Linux Linux 604326b41a6fb9b4a78b6179335decee0365cd8c – before ddf6f5179638ef0716d32e8fc04a72822b135351604326b41a6fb9b4a78b6179335decee0365cd8c – before 195b7bcdfc5adc5b2468f279dd9eb7eebd2e7632604326b41a6fb9b4a78b6179335decee0365cd8c – before fb61d7b9fb6ef0032de469499a54dab4c7260d0d604326b41a6fb9b4a78b6179335decee0365cd8c – before b180739b45a38b4caa88fe16bb5273072e6613dc604326b41a6fb9b4a78b6179335decee0365cd8c – before f8bd689f37f4198a4c61c4684f591ba639595b97604326b41a6fb9b4a78b6179335decee0365cd8c – before f0c18025693707ec344a70b6887f7450bf4c826b
Linux Linux 4.20

References