Summary
In the Linux kernel, the following vulnerability has been resolved: net: openvswitch: fix race...
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:
- An openvswitch instance with one bridge and default flows
- two network namespaces "server" and "client"
- two ovs interfaces "server" and "client" on the bridge
- for each ovs interface a veth pair with a matching name and 32 rx and
tx queues - move the ends of the veth pairs to the respective network namespaces
- assign ip addresses to each of the veth ends in the namespaces (needs
to be the same subnet) - start some http server on the server network namespace
- 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:
- send a large amount of parallel requests to the http server (around
3000 curls should work) - 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:
- the network namespace is deleted calling
unregister_netdevice_many_notifysomewhere in the process - this sets first
NETREG_UNREGISTERINGon both ends of the veth and
then runssynchronize_net - it then calls
call_netdevice_notifierswithNETDEV_UNREGISTER - this is then handled by
dp_device_eventwhich callsovs_netdev_detach_dev(if a vport is found, which is the case for
the veth interface attached to ovs) - this removes the rx_handlers of the device but does not prevent
packages to be sent to the device dp_device_eventthen queues the vport deletion to work in
background as a ovs_lock is needed that we do not hold in the
unregistration pathunregister_netdevice_many_notifycontinues to callnetdev_unregister_kobjectwhich setsreal_num_tx_queuesto 0- port deletion continues (but details are not relevant for this issue)
- 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 thedev_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 ifdev->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---
Impact
Multiple concurrent operations access a shared resource without proper synchronization, producing unpredictable results depending on timing. Typical impact: TOCTOU exploits, data corruption, or privilege escalation.
CVE-2023-53188 has a CVSS score of 4.7 (Medium). The vector is requires local access, low privileges required, and no user interaction. A CVSS score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether this affects your application depends on whether the vulnerable code is present and reachable in your environment. No fixed version is listed yet, so configuration controls and monitoring matter more in the interim.
Affected versions
Security releases
Kodem intelligence
Severity tells you how bad this could be in the worst case. It does not tell you whether you are exposed. Exploitability and impact are functions of runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A vulnerable package can sit in your dependency tree and never run.
Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter. Kodem's runtime-powered SCA identifies whether this CVE is reachable in your applications.
Already deployed Kodem?
See it in your environmentNew to Kodem? Get a demo →Remediation advice
Frequently Asked Questions
- What is CVE-2023-53188? CVE-2023-53188 is a medium-severity race condition vulnerability. No fixed version is listed yet. Multiple concurrent operations access a shared resource without proper synchronization, producing unpredictable results depending on timing.
- How severe is CVE-2023-53188? CVE-2023-53188 has a CVSS score of 4.7 (Medium). This score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether it represents real risk in your environment depends on whether the vulnerable code is present and reachable.
- Is there a fix for CVE-2023-53188? No fixed version is listed for CVE-2023-53188 yet. Monitor the advisory for updates and apply mitigations in the interim.
- Is CVE-2023-53188 exploitable, and should I be worried? Whether CVE-2023-53188 is exploitable in your environment depends on whether the vulnerable code is present and reachable. A CVSS score is a worst-case rating; it does not account for your specific deployment, configuration, or usage patterns. Kodem, an Intelligent Application Security platform, uses runtime intelligence to show which vulnerabilities actually execute in production, so you can focus on the ones that represent real risk. Get a demo
- What actually determines whether CVE-2023-53188 is exploitable, and how bad it is? Exploitability and impact are not fixed properties of a CVE. They depend on runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A high CVSS score on a dependency that never runs is not the same as real risk. Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter.