CVE-2023-53188 json
net: openvswitch: fix race on port output
published 2025-09-15 13 mo ago modified 2026-11-05 3 d ago also EUVD-2023-59788
- cvss
- 4.7
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.1%
- EPSS 0.1% chance of exploitation in 30 days, percentile 1%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
net: openvswitch: fix race on port output
assume the following setup on a single machine: 1. An openvswitch instance with one bridge and default flows 2. two network namespaces "server" and "client" 3. two ovs interfaces "server" and "client" on the bridge 4. for each ovs interface a veth pair with a matching name and 32 rx and tx queues 5. move the ends of the veth pairs to the respective network namespaces 6. assign ip addresses to each of the veth ends in the namespaces (needs to be the same subnet) 7. start some http server on the server network namespace 8. test if a client in the client namespace can reach the http server
when following the actions below the host has a chance of getting a cpu stuck in a infinite loop: 1. send a large amount of parallel requests to the http server (around 3000 curls should work) 2. in parallel delete the network namespace (do not delete interfaces or stop the server, just kill the namespace)
there is a low chance that this will cause the below kernel cpu stuck message. If this does not happen just retry. Below there is also the output of bpftrace for the functions mentioned in the output.
The series of events happening here is: 1. the network namespace is deleted calling `unregister_netdevice_many_notify` somewhere in the process 2. this sets first `NETREG_UNREGISTERING` on both ends of the veth and then runs `synchronize_net` 3. it then calls `call_netdevice_notifiers` with `NETDEV_UNREGISTER` 4. this is then handled by `dp_device_event` which calls `ovs_netdev_detach_dev` (if a vport is found, which is the case for the veth interface attached to ovs) 5. this removes the rx_handlers of the device but does not prevent packages to be sent to the device 6. `dp_device_event` then queues the vport deletion to work in background as a ovs_lock is needed that we do not hold in the unregistration path 7. `unregister_netdevice_many_notify` continues to call `netdev_unregister_kobject` which sets `real_num_tx_queues` to 0 8. port deletion continues (but details are not relevant for this issue) 9. at some future point the background task deletes the vport
If after 7. but before 9. a packet is send to the ovs vport (which is not deleted at this point in time) which forwards it to the `dev_queue_xmit` flow even though the device is unregistering. In `skb_tx_hash` (which is called in the `dev_queue_xmit`) path there is a while loop (if the packet has a rx_queue recorded) that is infinite if `dev->real_num_tx_queues` is zero.
To prevent this from happening we update `do_output` to handle devices without carrier the same as if the device is not found (which would be the code path after 9. is done).
Additionally we now produce a warning in `skb_tx_hash` if we will hit the infinite loop.
bpftrace (first word is function name):
__dev_queue_xmit server: real_num_tx_queues: 1, cpu: 2, pid: 28024, tid: 28024, skb_addr: 0xffff9edb6f207000, reg_state: 1 netdev_core_pick_tx server: addr: 0xffff9f0a46d4a000 real_num_tx_queues: 1, cpu: 2, pid: 28024, tid: 28024, skb_addr: 0xffff9edb6f207000, reg_state: 1 dp_device_event server: real_num_tx_queues: 1 cpu 9, pid: 21024, tid: 21024, event 2, reg_state: 1 synchronize_rcu_expedited: cpu 9, pid: 21024, tid: 21024 synchronize_rcu_expedited: cpu 9, pid: 21024, tid: 21024 synchronize_rcu_expedited: cpu 9, pid: 21024, tid: 21024 synchronize_rcu_expedited: cpu 9, pid: 21024, tid: 21024 dp_device_event server: real_num_tx_queues: 1 cpu 9, pid: 21024, tid: 21024, event 6, reg_state: 2 ovs_netdev_detach_dev server: real_num_tx_queues: 1 cpu 9, pid: 21024, tid: 21024, reg_state: 2 netdev_rx_handler_unregister server: real_num_tx_queues: 1, cpu: 9, pid: 21024, tid: 21024, reg_state: 2 synchronize_rcu_expedited: cpu 9, pid: 21024, tid: 21024 netdev_rx_handler_unregister ret server: real_num_tx_queues: 1, cpu: 9, pid: 21024, tid: 21024, reg_state: 2 dp_ ---truncated---
Patch / fix
- Linux Linux 5.4.293, 5.10.237, 5.15.181, 6.1.25, 6.2.12, 6.3
- linux Debian 14, Debian 13, Debian 12 6.1.25-1
debian advisories DEBIAN-CVE-2023-53188
- linux Ubuntu 22.04 LTS 5.15.0-144.157
- linux-aws Ubuntu 22.04 LTS 5.15.0-1088.95
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1087.96
- linux-gke Ubuntu 22.04 LTS 5.15.0-1085.91
- linux-ibm Ubuntu 22.04 LTS 5.15.0-1080.83
- linux-kvm Ubuntu 22.04 LTS 5.15.0-1084.89
- linux-azure Ubuntu 22.04 LTS 5.15.0-1094.103
- linux-gkeop Ubuntu 22.04 LTS 5.15.0-1070.78
ubuntu advisories UBUNTU-CVE-2023-53188
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel RHEL 8 4.18.0-513.5.1.el8_9
- perf RHEL 8 4.18.0-513.5.1.el8_9
- bpftool RHEL 8 4.18.0-513.5.1.el8_9
- kernel-core RHEL 8 4.18.0-513.5.1.el8_9
- kernel-tools RHEL 8 4.18.0-513.5.1.el8_9
- python3-perf RHEL 8 4.18.0-513.5.1.el8_9
- kernel-modules RHEL 8 4.18.0-513.5.1.el8_9
- kernel-zfcpdump RHEL 8 4.18.0-513.5.1.el8_9
red hat advisories RHSA-2023:7077RHSA-2023:6583
- kernel-syms SLES LTSS Extended Security 12 SP5, SLES 12 SP5-LTSS 4.12.14-122.280.1
- kernel-source SLES LTSS Extended Security 12 SP5, SLES 12 SP5-LTSS 4.12.14-122.280.1
- kernel-default SLES LTSS Extended Security 12 SP5, SLES 12 SP5-LTSS, SLE Live Patching 12 SP5 4.12.14-122.280.1
- kgraft-patch-SLE12-SP5_Update_74 SLE Live Patching 12 SP5 1-8.5.1
suse advisories SUSE-SU-2025:4189-1
- git.kernel.org/stable/c/9b0dd09c1ceb35950d2884848099fccc9ec9a123 commit
- git.kernel.org/stable/c/284be5db6c8d06d247ed056cfc448c4f79bbb16c commit
- git.kernel.org/stable/c/5efcb301523baacd98a47553d4996e924923114d commit
- git.kernel.org/stable/c/644b3051b06ba465bc7401bfae9b14963cbc8c1c commit
- git.kernel.org/stable/c/56252da41426f3d01957456f13caf46ce670ea29 commit
- git.kernel.org/stable/c/066b86787fa3d97b7aefb5ac0a99a22dad2d15f8 commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2023-53188 updated cvss 4.4
kernel: net: openvswitch: fix race on port output
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 moreaffected: no fix planned “Out of support scope”
-
Red Hat Enterprise Linux 7 perf, kernel, bpftool, python-perf, kernel-kdump, kernel-tools, +3 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +82 moreaffected: no fix available “Fix deferred”
-
Red Hat CodeReady Linux Builder (v. 8) kernel-debuginfo-common-x86_64 4.18.0-513.5.1.el8_9, kernel-debuginfo-common-aarch64 4.18.0-513.5.1.el8_9, kernel-debuginfo-common-ppc64le 4.18.0-513.5.1.el8_9 Red Hat Enterprise Linux BaseOS (v. 8) perf 4.18.0-513.5.1.el8_9, kernel 4.18.0-513.5.1.el8_9, bpftool 4.18.0-513.5.1.el8_9, kernel-core 4.18.0-513.5.1.el8_9, kernel-tools 4.18.0-513.5.1.el8_9, python3-perf 4.18.0-513.5.1.el8_9, +15 morefixed: vendor fix RHSA-2023:7077
-
Red Hat Enterprise Linux 10 kernelnot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 3 d ago
Exploit prediction
0.11% chance of exploitation in the next 30 days, higher than 1% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| NVD | 3.1 | 4.7 | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected products
- Linux Linux
Classification
- Weakness
-
- CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization
- Technology feeds
References
-
git.kernel.org
/stable/c/9b0dd09c1ceb35950d2884848099fccc9ec9a123
patch
-
git.kernel.org
/stable/c/284be5db6c8d06d247ed056cfc448c4f79bbb16c
patch
-
git.kernel.org
/stable/c/5efcb301523baacd98a47553d4996e924923114d
patch
-
git.kernel.org
/stable/c/644b3051b06ba465bc7401bfae9b14963cbc8c1c
patch
-
git.kernel.org
/stable/c/56252da41426f3d01957456f13caf46ce670ea29
patch
-
git.kernel.org
/stable/c/066b86787fa3d97b7aefb5ac0a99a22dad2d15f8
patch
Sources
- CVE List CVE-2023-53188
- NVD CVE-2023-53188
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.