CVE-2023-52986
EUVD-2023-5973427.03.2025, 17:15
In the Linux kernel, the following vulnerability has been resolved:
bpf, sockmap: Check for any of tcp_bpf_prots when cloning a listener
A listening socket linked to a sockmap has its sk_prot overridden. It
points to one of the struct proto variants in tcp_bpf_prots. The variant
depends on the socket's family and which sockmap programs are attached.
A child socket cloned from a TCP listener initially inherits their sk_prot.
But before cloning is finished, we restore the child's proto to the
listener's original non-tcp_bpf_prots one. This happens in
tcp_create_openreq_child -> tcp_bpf_clone.
Today, in tcp_bpf_clone we detect if the child's proto should be restored
by checking only for the TCP_BPF_BASE proto variant. This is not
correct. The sk_prot of listening socket linked to a sockmap can point to
to any variant in tcp_bpf_prots.
If the listeners sk_prot happens to be not the TCP_BPF_BASE variant, then
the child socket unintentionally is left if the inherited sk_prot by
tcp_bpf_clone.
This leads to issues like infinite recursion on close [1], because the
child state is otherwise not set up for use with tcp_bpf_prot operations.
Adjust the check in tcp_bpf_clone to detect all of tcp_bpf_prots variants.
Note that it wouldn't be sufficient to check the socket state when
overriding the sk_prot in tcp_bpf_update_proto in order to always use the
TCP_BPF_BASE variant for listening sockets. Since commit
b8b8315e39ff ("bpf, sockmap: Remove unhash handler for BPF sockmap usage")
it is possible for a socket to transition to TCP_LISTEN state while already
linked to a sockmap, e.g. connect() -> insert into map ->
connect(AF_UNSPEC) -> listen().
[1]: https://lore.kernel.org/all/00000000000073b14905ef2e7401@google.com/EnginsightAffected Products (NVD)
| Vendor | Product | Version |
|---|---|---|
| linux | linux_kernel | 5.7 ≤ 𝑥 < 5.10.168 |
| linux | linux_kernel | 5.11 ≤ 𝑥 < 5.15.93 |
| linux | linux_kernel | 5.16 ≤ 𝑥 < 6.1.11 |
| linux | linux_kernel | 6.2:rc1 |
| linux | linux_kernel | 6.2:rc2 |
| linux | linux_kernel | 6.2:rc3 |
| linux | linux_kernel | 6.2:rc4 |
| linux | linux_kernel | 6.2:rc5 |
| linux | linux_kernel | 6.2:rc6 |
𝑥
= Vulnerable software versions
Debian Releases
Ubuntu Releases
Ubuntu Product | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| linux |
| ||||||||||||||
| linux-allwinner-5.19 |
| ||||||||||||||
| linux-aws |
| ||||||||||||||
| linux-aws-5.0 |
| ||||||||||||||
| linux-aws-5.11 |
| ||||||||||||||
| linux-aws-5.13 |
| ||||||||||||||
| linux-aws-5.15 |
| ||||||||||||||
| linux-aws-5.19 |
| ||||||||||||||
| linux-aws-5.3 |
| ||||||||||||||
| linux-aws-5.4 |
| ||||||||||||||
| linux-aws-5.8 |
| ||||||||||||||
| linux-aws-6.2 |
| ||||||||||||||
| linux-aws-6.5 |
| ||||||||||||||
| linux-aws-6.8 |
| ||||||||||||||
| linux-aws-fips |
| ||||||||||||||
| linux-aws-hwe |
| ||||||||||||||
| linux-azure |
| ||||||||||||||
| linux-azure-4.15 |
| ||||||||||||||
| linux-azure-5.11 |
| ||||||||||||||
| linux-azure-5.13 |
| ||||||||||||||
| linux-azure-5.15 |
| ||||||||||||||
| linux-azure-5.19 |
| ||||||||||||||
| linux-azure-5.3 |
| ||||||||||||||
| linux-azure-5.4 |
| ||||||||||||||
| linux-azure-5.8 |
| ||||||||||||||
| linux-azure-6.2 |
| ||||||||||||||
| linux-azure-6.5 |
| ||||||||||||||
| linux-azure-6.8 |
| ||||||||||||||
| linux-azure-edge |
| ||||||||||||||
| linux-azure-fde |
| ||||||||||||||
| linux-azure-fde-5.15 |
| ||||||||||||||
| linux-azure-fde-5.19 |
| ||||||||||||||
| linux-azure-fde-6.2 |
| ||||||||||||||
| linux-azure-fips |
| ||||||||||||||
| linux-bluefield |
| ||||||||||||||
| linux-fips |
| ||||||||||||||
| linux-gcp |
| ||||||||||||||
| linux-gcp-4.15 |
| ||||||||||||||
| linux-gcp-5.11 |
| ||||||||||||||
| linux-gcp-5.13 |
| ||||||||||||||
| linux-gcp-5.15 |
| ||||||||||||||
| linux-gcp-5.19 |
| ||||||||||||||
| linux-gcp-5.3 |
| ||||||||||||||
| linux-gcp-5.4 |
| ||||||||||||||
| linux-gcp-5.8 |
| ||||||||||||||
| linux-gcp-6.2 |
| ||||||||||||||
| linux-gcp-6.5 |
| ||||||||||||||
| linux-gcp-6.8 |
| ||||||||||||||
| linux-gcp-fips |
| ||||||||||||||
| linux-gke |
| ||||||||||||||
| linux-gke-4.15 |
| ||||||||||||||
| linux-gke-5.15 |
| ||||||||||||||
| linux-gke-5.4 |
| ||||||||||||||
| linux-gkeop |
| ||||||||||||||
| linux-gkeop-5.15 |
| ||||||||||||||
| linux-gkeop-5.4 |
| ||||||||||||||
| linux-hwe |
| ||||||||||||||
| linux-hwe-5.11 |
| ||||||||||||||
| linux-hwe-5.13 |
| ||||||||||||||
| linux-hwe-5.15 |
| ||||||||||||||
| linux-hwe-5.19 |
| ||||||||||||||
| linux-hwe-5.4 |
| ||||||||||||||
| linux-hwe-5.8 |
| ||||||||||||||
| linux-hwe-6.11 |
| ||||||||||||||
| linux-hwe-6.2 |
| ||||||||||||||
| linux-hwe-6.5 |
| ||||||||||||||
| linux-hwe-6.8 |
| ||||||||||||||
| linux-hwe-edge |
| ||||||||||||||
| linux-ibm |
| ||||||||||||||
| linux-ibm-5.15 |
| ||||||||||||||
| linux-ibm-5.4 |
| ||||||||||||||
| linux-intel-5.13 |
| ||||||||||||||
| linux-intel-iot-realtime |
| ||||||||||||||
| linux-intel-iotg |
| ||||||||||||||
| linux-intel-iotg-5.15 |
| ||||||||||||||
| linux-iot |
| ||||||||||||||
| linux-kvm |
| ||||||||||||||
| linux-lowlatency |
| ||||||||||||||
| linux-lowlatency-hwe-5.15 |
| ||||||||||||||
| linux-lowlatency-hwe-5.19 |
| ||||||||||||||
| linux-lowlatency-hwe-6.11 |
| ||||||||||||||
| linux-lowlatency-hwe-6.2 |
| ||||||||||||||
| linux-lowlatency-hwe-6.5 |
| ||||||||||||||
| linux-lowlatency-hwe-6.8 |
| ||||||||||||||
| linux-lts-xenial |
| ||||||||||||||
| linux-nvidia |
| ||||||||||||||
| linux-nvidia-6.2 |
| ||||||||||||||
| linux-nvidia-6.5 |
| ||||||||||||||
| linux-nvidia-6.8 |
| ||||||||||||||
| linux-nvidia-lowlatency |
| ||||||||||||||
| linux-nvidia-tegra |
| ||||||||||||||
| linux-nvidia-tegra-igx |
| ||||||||||||||
| linux-oem |
| ||||||||||||||
| linux-oem-5.10 |
| ||||||||||||||
| linux-oem-5.13 |
| ||||||||||||||
| linux-oem-5.14 |
| ||||||||||||||
| linux-oem-5.17 |
| ||||||||||||||
| linux-oem-5.6 |
| ||||||||||||||
| linux-oem-6.0 |
| ||||||||||||||
| linux-oem-6.1 |
| ||||||||||||||
| linux-oem-6.11 |
| ||||||||||||||
| linux-oem-6.5 |
| ||||||||||||||
| linux-oem-6.8 |
| ||||||||||||||
| linux-oracle |
| ||||||||||||||
| linux-oracle-5.0 |
| ||||||||||||||
| linux-oracle-5.11 |
| ||||||||||||||
| linux-oracle-5.13 |
| ||||||||||||||
| linux-oracle-5.15 |
| ||||||||||||||
| linux-oracle-5.3 |
| ||||||||||||||
| linux-oracle-5.4 |
| ||||||||||||||
| linux-oracle-5.8 |
| ||||||||||||||
| linux-oracle-6.5 |
| ||||||||||||||
| linux-oracle-6.8 |
| ||||||||||||||
| linux-raspi |
| ||||||||||||||
| linux-raspi-5.4 |
| ||||||||||||||
| linux-raspi-realtime |
| ||||||||||||||
| linux-raspi2 |
| ||||||||||||||
| linux-realtime |
| ||||||||||||||
| linux-riscv |
| ||||||||||||||
| linux-riscv-5.11 |
| ||||||||||||||
| linux-riscv-5.15 |
| ||||||||||||||
| linux-riscv-5.19 |
| ||||||||||||||
| linux-riscv-5.8 |
| ||||||||||||||
| linux-riscv-6.5 |
| ||||||||||||||
| linux-riscv-6.8 |
| ||||||||||||||
| linux-starfive-5.19 |
| ||||||||||||||
| linux-starfive-6.2 |
| ||||||||||||||
| linux-starfive-6.5 |
| ||||||||||||||
| linux-xilinx-zynqmp |
|
openSUSE / SLES Releases
openSUSE Product | |||
|---|---|---|---|
| cluster-md-kmp-default |
| ||
| dlm-kmp-default |
| ||
| gfs2-kmp-default |
| ||
| kernel-64kb |
| ||
| kernel-default |
| ||
| kernel-default-base |
| ||
| kernel-obs-build |
| ||
| kernel-source |
| ||
| kernel-zfcpdump |
| ||
| ocfs2-kmp-default |
| ||
| reiserfs-kmp-default |
|
Red Hat Enterprise Linux Releases
Red Hat Product | |||
|---|---|---|---|
| bpftool |
| ||
| kernel |
| ||
| kernel-64k |
| ||
| kernel-64k-core |
| ||
| kernel-64k-debug |
| ||
| kernel-64k-debug-core |
| ||
| kernel-64k-debug-devel |
| ||
| kernel-64k-debug-devel-matched |
| ||
| kernel-64k-debug-modules |
| ||
| kernel-64k-debug-modules-core |
| ||
| kernel-64k-debug-modules-extra |
| ||
| kernel-64k-devel |
| ||
| kernel-64k-devel-matched |
| ||
| kernel-64k-modules |
| ||
| kernel-64k-modules-core |
| ||
| kernel-64k-modules-extra |
| ||
| kernel-abi-stablelists |
| ||
| kernel-core |
| ||
| kernel-debug |
| ||
| kernel-debug-core |
| ||
| kernel-debug-devel |
| ||
| kernel-debug-devel-matched |
| ||
| kernel-debug-modules |
| ||
| kernel-debug-modules-core |
| ||
| kernel-debug-modules-extra |
| ||
| kernel-debug-uki-virt |
| ||
| kernel-devel |
| ||
| kernel-devel-matched |
| ||
| kernel-doc |
| ||
| kernel-modules |
| ||
| kernel-modules-core |
| ||
| kernel-modules-extra |
| ||
| kernel-rt |
| ||
| kernel-rt-core |
| ||
| kernel-rt-debug |
| ||
| kernel-rt-debug-core |
| ||
| kernel-rt-debug-devel |
| ||
| kernel-rt-debug-kvm |
| ||
| kernel-rt-debug-modules |
| ||
| kernel-rt-debug-modules-core |
| ||
| kernel-rt-debug-modules-extra |
| ||
| kernel-rt-devel |
| ||
| kernel-rt-kvm |
| ||
| kernel-rt-modules |
| ||
| kernel-rt-modules-core |
| ||
| kernel-rt-modules-extra |
| ||
| kernel-tools |
| ||
| kernel-tools-libs |
| ||
| kernel-tools-libs-devel |
| ||
| kernel-uki-virt |
| ||
| kernel-zfcpdump |
| ||
| kernel-zfcpdump-core |
| ||
| kernel-zfcpdump-devel |
| ||
| kernel-zfcpdump-devel-matched |
| ||
| kernel-zfcpdump-modules |
| ||
| kernel-zfcpdump-modules-core |
| ||
| kernel-zfcpdump-modules-extra |
| ||
| libperf |
| ||
| perf |
| ||
| python3-perf |
| ||
| rtla |
| ||
| rv |
|
Amazon Linux Releases
Amazon Package | |||
|---|---|---|---|
| bpftool |
| ||
| bpftool-debuginfo |
| ||
| kernel |
| ||
| kernel-debuginfo |
| ||
| kernel-debuginfo-common-aarch64 |
| ||
| kernel-debuginfo-common-x86_64 |
| ||
| kernel-devel |
| ||
| kernel-headers |
| ||
| kernel-libbpf |
| ||
| kernel-libbpf-devel |
| ||
| kernel-libbpf-static |
| ||
| kernel-livepatch-6.1.12-17.42 |
| ||
| kernel-tools |
| ||
| kernel-tools-debuginfo |
| ||
| kernel-tools-devel |
| ||
| perf |
| ||
| perf-debuginfo |
| ||
| python3-perf |
| ||
| python3-perf-debuginfo |
|
Common Weakness Enumeration