Vulnerability · Published May 1, 2024 · Assigned by Linux

CVE-2024-27010net/sched: Fix mirred deadlock on device recursion

Medium 5.5

In plain English

A medium-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 7% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.

Severity (CVSS NVD)5.5Medium
Exploit odds (30 days)0.2%top 92.8% 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: net/sched: Fix mirred deadlock on device recursion When the mirred action is used on a classful egress qdisc and a packet is mirrored or redirected to self we hit a qdisc lock deadlock. See trace below. [..... other info removed for brevity....] [ 82.890906] [ 82.890906] ============================================ [ 82.890906] WARNING: possible recursive locking detected [ 82.890906] 6.8.0-05205-g77fadd89fe2d-dirty #213 Tainted: G W [ 82.890906] -------------------------------------------- [ 82.890906] ping/418 is trying to acquire lock: [ 82.890906] ffff888006994110 (&sch->q.lock){+.-.}-{3:3}, at: __dev_queue_xmit+0x1778/0x3550 [ 82.890906] [ 82.890906] but task is already holding lock: [ 82.890906] ffff888006994110 (&sch->q.lock){+.-.}-{3:3}, at: __dev_queue_xmit+0x1778/0x3550 [ 82.890906] [ 82.890906] other info that might help us debug this: [ 82.890906] Possible unsafe locking scenario: [ 82.890906] [ 82.890906] CPU0 [ 82.890906] ---- [ 82.890906] lock(&sch->q.lock); [ 82.890906] lock(&sch->q.lock); [ 82.890906] [ 82.890906] *** DEADLOCK *** [ 82.890906] [..... other info removed for brevity....] Example setup (eth0->eth0) to recreate tc qdisc add dev eth0 root handle 1: htb default 30 tc filter add dev eth0 handle 1: protocol ip prio 2 matchall \ action mirred egress redirect dev eth0 Another example(eth0->eth1->eth0) to recreate tc qdisc add dev eth0 root handle 1: htb default 30 tc filter add dev eth0 handle 1: protocol ip prio 2 matchall \ action mirred egress redirect dev eth1 tc qdisc add dev eth1 root handle 1: htb default 30 tc filter add dev eth1 handle 1: protocol ip prio 2 matchall \ action mirred egress redirect dev eth0 We fix this by adding an owner field (CPU id) to struct Qdisc set after root qdisc is entered. When the softirq enters it a second time, if the qdisc owner is the same CPU, the packet is dropped to break the loop.

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
Debian:12linuxno fix listedDEBIAN-CVE-2024-27010
Debian:13linux6.8.9-1DEBIAN-CVE-2024-27010
Debian:14linux6.8.9-1DEBIAN-CVE-2024-27010
Ubuntu:22.04:LTSlinuxno fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux6.8.0-38.38USN-6893-1
Ubuntu:24.04:LTSlinux6.8.0-38.38UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-allwinner-5.19no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-awsno fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-aws6.8.0-1011.12USN-6893-3
Ubuntu:24.04:LTSlinux-aws6.8.0-1011.12UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-aws-5.19no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-aws-6.2no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-aws-6.5no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-aws-6.86.8.0-1011.12~22.04.1UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-azureno fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-azure6.8.0-1010.10UBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-azure6.8.0-1010.10USN-6893-1
Ubuntu:22.04:LTSlinux-azure-5.19no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-azure-6.2no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-azure-6.5no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-azure-6.86.8.0-1010.10~22.04.1UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-azure-fdeno fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-azure-fde-5.19no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-azure-fde-6.2no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-gcpno fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-gcp6.8.0-1010.11UBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-gcp6.8.0-1010.11USN-6893-1
Ubuntu:22.04:LTSlinux-gcp-5.19no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-gcp-6.2no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-gcp-6.5no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-gkeno fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-gke6.8.0-1006.9USN-6893-2
Ubuntu:24.04:LTSlinux-gke6.8.0-1006.9UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-gkeopno fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-hwe-5.19no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-hwe-6.2no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-hwe-6.5no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-ibmno fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-ibm6.8.0-1008.8USN-6893-1
Ubuntu:24.04:LTSlinux-ibm6.8.0-1008.8UBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-intel6.8.0-1007.14USN-6893-1
Ubuntu:24.04:LTSlinux-intel6.8.0-1007.14UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-intel-iot-realtimeno fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-intel-iotgno fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-kvmno fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-lowlatencyno fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-lowlatency6.8.0-38.38.1USN-6893-1
Ubuntu:24.04:LTSlinux-lowlatency6.8.0-38.38.1UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-lowlatency-hwe-5.19no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.2no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-lowlatency-hwe-6.5no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-nvidiano fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-nvidia6.8.0-1009.9UBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-nvidia6.8.0-1009.9USN-6893-2
Ubuntu:22.04:LTSlinux-nvidia-6.2no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-nvidia-6.5no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-nvidia-6.86.8.0-1009.9~22.04.1UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-nvidia-tegrano fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-nvidia-tegra-igxno fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-oem-5.17no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-oem-6.0no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-oem-6.1no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-oem-6.5no fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-oem-6.86.8.0-1008.8USN-6893-1
Ubuntu:24.04:LTSlinux-oem-6.86.8.0-1008.8UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-oracleno fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-oracle6.8.0-1008.8UBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-oracle6.8.0-1008.8USN-6918-1
Ubuntu:22.04:LTSlinux-oracle-6.5no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-oracle-6.86.8.0-1008.8~22.04.1UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-raspino fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-raspi6.8.0-1007.7USN-6893-1
Ubuntu:24.04:LTSlinux-raspi6.8.0-1007.7UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-realtimeno fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-riscvno fix listedUBUNTU-CVE-2024-27010
Ubuntu:24.04:LTSlinux-riscv6.8.0-38.38.1UBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-riscv-5.19no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-riscv-6.5no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-starfive-5.19no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-starfive-6.2no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-starfive-6.5no fix listedUBUNTU-CVE-2024-27010
Ubuntu:22.04:LTSlinux-xilinx-zynqmpno fix listedUBUNTU-CVE-2024-27010

Affected products (as reported)

VendorProductVersions
Linux Linux e578d9c02587d57bfa7b560767c698a668a468c6 – before 09d2e807aeb8e4f2e5eac4a3064f28dcf19b9c1ee578d9c02587d57bfa7b560767c698a668a468c6 – before 524323f52cbfbac4fe3f8a33a8cc405fafba0d33e578d9c02587d57bfa7b560767c698a668a468c6 – before e6b90468da4dae2281a6e381107f411efb48b0efe578d9c02587d57bfa7b560767c698a668a468c6 – before 0f022d32c3eca477fbf79a205243a6123ed0fe11
Linux Linux 4.2

References