Vulnerability · Published Dec 27, 2024 · Assigned by Linux

CVE-2024-56664bpf, sockmap: Fix race between element replace and close()

High 7.8

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.2% (higher than 8% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.

Severity (CVSS 3.1)7.8High
Exploit odds (30 days)0.2%top 92.5% 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: bpf, sockmap: Fix race between element replace and close() Element replace (with a socket different from the one stored) may race with socket's close() link popping & unlinking. __sock_map_delete() unconditionally unrefs the (wrong) element: // set map[0] = s0 map_update_elem(map, 0, s0) // drop fd of s0 close(s0) sock_map_close() lock_sock(sk) (s0!) sock_map_remove_links(sk) link = sk_psock_link_pop() sock_map_unlink(sk, link) sock_map_delete_from_link // replace map[0] with s1 map_update_elem(map, 0, s1) sock_map_update_elem (s1!) lock_sock(sk) sock_map_update_common psock = sk_psock(sk) spin_lock(&stab->lock) osk = stab->sks[idx] sock_map_add_link(..., &stab->sks[idx]) sock_map_unref(osk, &stab->sks[idx]) psock = sk_psock(osk) sk_psock_put(sk, psock) if (refcount_dec_and_test(&psock)) sk_psock_drop(sk, psock) spin_unlock(&stab->lock) unlock_sock(sk) __sock_map_delete spin_lock(&stab->lock) sk = *psk // s1 replaced s0; sk == s1 if (!sk_test || sk_test == sk) // sk_test (s0) != sk (s1); no branch sk = xchg(psk, NULL) if (sk) sock_map_unref(sk, psk) // unref s1; sks[idx] will dangle psock = sk_psock(sk) sk_psock_put(sk, psock) if (refcount_dec_and_test()) sk_psock_drop(sk, psock) spin_unlock(&stab->lock) release_sock(sk) Then close(map) enqueues bpf_map_free_deferred, which finally calls sock_map_free(). This results in some refcount_t warnings along with a KASAN splat [1]. Fix __sock_map_delete(), do not allow sock_map_unref() on elements that may have been replaced. [1]: BUG: KASAN: slab-use-after-free in sock_map_free+0x10e/0x330 Write of size 4 at addr ffff88811f5b9100 by task kworker/u64:12/1063 CPU: 14 UID: 0 PID: 1063 Comm: kworker/u64:12 Not tainted 6.12.0+ #125 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Arch Linux 1.16.3-1-1 04/01/2014 Workqueue: events_unbound bpf_map_free_deferred Call Trace: <TASK> dump_stack_lvl+0x68/0x90 print_report+0x174/0x4f6 kasan_report+0xb9/0x190 kasan_check_range+0x10f/0x1e0 sock_map_free+0x10e/0x330 bpf_map_free_deferred+0x173/0x320 process_one_work+0x846/0x1420 worker_thread+0x5b3/0xf80 kthread+0x29e/0x360 ret_from_fork+0x2d/0x70 ret_from_fork_asm+0x1a/0x30 </TASK> Allocated by task 1202: kasan_save_stack+0x1e/0x40 kasan_save_track+0x10/0x30 __kasan_slab_alloc+0x85/0x90 kmem_cache_alloc_noprof+0x131/0x450 sk_prot_alloc+0x5b/0x220 sk_alloc+0x2c/0x870 unix_create1+0x88/0x8a0 unix_create+0xc5/0x180 __sock_create+0x241/0x650 __sys_socketpair+0x1ce/0x420 __x64_sys_socketpair+0x92/0x100 do_syscall_64+0x93/0x180 entry_SYSCALL_64_after_hwframe+0x76/0x7e Freed by task 46: kasan_save_stack+0x1e/0x40 kasan_save_track+0x10/0x30 kasan_save_free_info+0x37/0x60 __kasan_slab_free+0x4b/0x70 kmem_cache_free+0x1a1/0x590 __sk_destruct+0x388/0x5a0 sk_psock_destroy+0x73e/0xa50 process_one_work+0x846/0x1420 worker_thread+0x5b3/0xf80 kthread+0x29e/0x360 ret_from_fork+0x2d/0x70 ret_from_fork_asm+0x1a/0x30 The bu ---truncated---

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
Debian:12linux6.1.128-1DSA-5860-1
Debian:12linux6.1.128-1DEBIAN-CVE-2024-56664
Debian:13linux6.12.6-1DEBIAN-CVE-2024-56664
Debian:14linux6.12.6-1DEBIAN-CVE-2024-56664
Ubuntu:22.04:LTSlinux5.15.0-142.152USN-7591-1
Ubuntu:22.04:LTSlinux5.15.0-142.152UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux6.8.0-60.63UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux6.8.0-60.63USN-7513-1
Ubuntu:22.04:LTSlinux-allwinner-5.19no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-aws5.15.0-1086.93USN-7591-4
Ubuntu:22.04:LTSlinux-aws5.15.0-1086.93UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-aws6.8.0-1029.31USN-7513-1
Ubuntu:24.04:LTSlinux-aws6.8.0-1029.31UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-aws-5.19no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-aws-6.2no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-aws-6.5no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-aws-6.86.8.0-1029.31~22.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-aws-6.86.8.0-1029.31~22.04.1USN-7513-1
Ubuntu:22.04:LTSlinux-azure5.15.0-1091.100USN-7597-1
Ubuntu:22.04:LTSlinux-azure5.15.0-1091.100UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-azure6.8.0-1029.34UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-azure6.8.0-1029.34USN-7513-3
Ubuntu:22.04:LTSlinux-azure-5.19no fix listedUBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-azure-6.116.11.0-1012.12~24.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-azure-6.2no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-azure-6.5no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-azure-6.86.8.0-1029.34~22.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-azure-6.86.8.0-1029.34~22.04.1USN-7513-3
Ubuntu:22.04:LTSlinux-azure-fde5.15.0-1091.100.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-azure-fde-5.19no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-azure-fde-6.2no fix listedUBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-azure-nvidia6.8.0-1016.17USN-7522-1
Ubuntu:24.04:LTSlinux-azure-nvidia6.8.0-1016.17UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-gcp5.15.0-1085.94UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-gcp5.15.0-1085.94USN-7591-1
Ubuntu:24.04:LTSlinux-gcp6.8.0-1030.32USN-7515-2
Ubuntu:24.04:LTSlinux-gcp6.8.0-1030.32UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-gcp-5.19no fix listedUBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-gcp-6.116.11.0-1011.11~24.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-gcp-6.2no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-gcp-6.5no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-gcp-6.86.8.0-1030.32~22.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-gcp-6.86.8.0-1030.32~22.04.1USN-7515-2
Ubuntu:22.04:LTSlinux-gke5.15.0-1083.89USN-7591-1
Ubuntu:22.04:LTSlinux-gke5.15.0-1083.89UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-gke6.8.0-1025.29UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-gke6.8.0-1025.29USN-7515-1
Ubuntu:22.04:LTSlinux-gkeop5.15.0-1068.76UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-gkeop5.15.0-1068.76USN-7591-1
Ubuntu:24.04:LTSlinux-gkeop6.8.0-1012.14USN-7515-2
Ubuntu:24.04:LTSlinux-gkeop6.8.0-1012.14UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-hwe-5.19no fix listedUBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-hwe-6.116.11.0-21.21~24.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-hwe-6.2no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-hwe-6.5no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-hwe-6.86.8.0-60.63~22.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-hwe-6.86.8.0-60.63~22.04.1USN-7513-4
Ubuntu:22.04:LTSlinux-ibm5.15.0-1078.81UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-ibm5.15.0-1078.81USN-7591-1
Ubuntu:24.04:LTSlinux-ibm6.8.0-1026.26UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-ibm6.8.0-1026.26USN-7513-1
Ubuntu:22.04:LTSlinux-ibm-6.86.8.0-1026.26~22.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-intel-iot-realtimeno fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-intel-iotg5.15.0-1081.87UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-intel-iotg5.15.0-1081.87USN-7591-5
Ubuntu:22.04:LTSlinux-kvm5.15.0-1082.87UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-kvm5.15.0-1082.87USN-7591-1
Ubuntu:22.04:LTSlinux-lowlatency5.15.0-142.152USN-7591-1
Ubuntu:22.04:LTSlinux-lowlatency5.15.0-142.152UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-lowlatency6.8.0-60.63.1UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-lowlatency6.8.0-60.63.1USN-7513-1
Ubuntu:22.04:LTSlinux-lowlatency-hwe-5.19no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.2no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.5no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.86.8.0-60.63.1~22.04.1USN-7513-1
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.86.8.0-60.63.1~22.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-nvidia5.15.0-1080.81UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-nvidia5.15.0-1080.81USN-7591-1
Ubuntu:24.04:LTSlinux-nvidia6.8.0-1028.31UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-nvidia6.8.0-1028.31USN-7514-1
Ubuntu:24.04:LTSlinux-nvidia-6.116.11.0-1007.7UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-nvidia-6.2no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-nvidia-6.5no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-nvidia-6.86.8.0-1028.31~22.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-nvidia-6.86.8.0-1028.31~22.04.1USN-7514-1
Ubuntu:24.04:LTSlinux-nvidia-lowlatency6.8.0-1028.31.1UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-nvidia-lowlatency6.8.0-1028.31.1USN-7514-1
Ubuntu:22.04:LTSlinux-nvidia-tegra5.15.0-1039.39UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-nvidia-tegra5.15.0-1039.39USN-7591-1
Ubuntu:24.04:LTSlinux-nvidia-tegra6.8.0-1008.8UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-nvidia-tegra-igx5.15.0-1028.28USN-7591-1
Ubuntu:22.04:LTSlinux-nvidia-tegra-igx5.15.0-1028.28UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-oem-5.17no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-oem-6.0no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-oem-6.1no fix listedUBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-oem-6.116.11.0-1017.17UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-oem-6.5no fix listedUBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-oem-6.86.8.0-1028.28USN-7513-3
Ubuntu:24.04:LTSlinux-oem-6.86.8.0-1028.28UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-oracle5.15.0-1083.89UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-oracle5.15.0-1083.89USN-7591-1
Ubuntu:24.04:LTSlinux-oracle6.8.0-1026.27UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-oracle6.8.0-1026.27USN-7513-1
Ubuntu:22.04:LTSlinux-oracle-6.5no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-oracle-6.86.8.0-1026.27~22.04.1USN-7513-5
Ubuntu:22.04:LTSlinux-oracle-6.86.8.0-1026.27~22.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-raspi5.15.0-1080.83USN-7591-6
Ubuntu:22.04:LTSlinux-raspi5.15.0-1080.83UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-raspi6.8.0-1028.32UBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-raspi-realtimeno fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-riscv6.8.0-60.63.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-riscv-5.19no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-riscv-6.5no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-riscv-6.86.8.0-62.65~22.04.1UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-starfive-5.19no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-starfive-6.2no fix listedUBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-starfive-6.5no fix listedUBUNTU-CVE-2024-56664
Ubuntu:24.04:LTSlinux-xilinx6.8.0-1017.18UBUNTU-CVE-2024-56664
Ubuntu:22.04:LTSlinux-xilinx-zynqmp5.15.0-1050.54USN-7602-1
Ubuntu:22.04:LTSlinux-xilinx-zynqmp5.15.0-1050.54UBUNTU-CVE-2024-56664

Affected products (as reported)

VendorProductVersions
Linux Linux 604326b41a6fb9b4a78b6179335decee0365cd8c – before 6deb9e85dc9a2ba4414b91c1b5b00b8415910890604326b41a6fb9b4a78b6179335decee0365cd8c – before fdb2cd8957ac51f84c9e742ba866087944bb834b604326b41a6fb9b4a78b6179335decee0365cd8c – before b79a0d1e9a374d1b376933a354c4fcd01fce0365604326b41a6fb9b4a78b6179335decee0365cd8c – before b015f19fedd2e12283a8450dd0aefce49ec57015604326b41a6fb9b4a78b6179335decee0365cd8c – before bf2318e288f636a882eea39f7e1015623629f168604326b41a6fb9b4a78b6179335decee0365cd8c – before ed1fc5d76b81a4d681211333c026202cad4d5649
Linux Linux 4.20

References