CVE-2023-3750
Medium · 5.3CVSS
5.3
EPSS
0.8%
Published
Jul 24, 2023
CISA due date
—
Cloudanix analysis
A bug in the software that manages virtual machines can let users with limited access crash the service, briefly stopping virtual servers from running.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- High
- Impact
- Denial Of Service
- Component
- Library
- Class
- Race Condition
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Race condition in virStoragePoolObjListSearch fails to return a locked pool object, allowing concurrent threads to access the same storage pool without synchronization and triggering a denial of service crash of the libvirt daemon when accessed via the read-only socket.
Why it matters to the business
Unexpected crashes of the virtualization management service can interrupt virtual machine lifecycle operations, increase administrative overhead for restarts, and reduce availability of hosted workloads on affected Red Hat Enterprise Linux systems.
How an attack unfolds
An attacker with access to the libvirt read-only UNIX socket issues multiple concurrent storage pool queries that hit the flawed list-search path, causing two threads to race for the same unlocked object and forcing the daemon to terminate.
How to fix it
Upgrade libvirt packages to a version containing the fix for the race condition; until patches are available, restrict read-only socket permissions to trusted clients only and consider disabling unused storage pool functionality.
How to confirm the fix worked
Verify the installed libvirt version against vendor advisories, review source for proper locking around virStoragePoolObjListSearch, and perform concurrent client testing against the read-only socket to confirm absence of crashes.
Typical attack path
- Obtain access to the libvirt read-only socket
- Issue repeated concurrent storage-pool enumeration requests
- Trigger simultaneous locking attempts on the same pool object
- Cause daemon crash and denial of service
How to detect it
Review libvirt daemon logs and system crash reports for abrupt terminations following storage-pool operations; correlate timestamps of read-only socket connections with any observed restarts or segmentation faults.
What your security team should do
- Apply available libvirt updates as soon as released by Red Hat
- Tighten UNIX socket permissions for the read-only listener
- Monitor libvirt daemon stability and restart procedures
- Audit which systems expose the read-only socket to untrusted networks
The record
A flaw was found in libvirt. The virStoragePoolObjListSearch function does not return a locked pool as expected, resulting in a race condition and denial of service when attempting to lock the same object from another thread. This issue could allow clients connecting to the read-only socket to crash the libvirt daemon.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:9 | libvirt | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-client | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-client-qemu | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-common | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-config-network | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-config-nwfilter | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-interface | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-network | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-nodedev | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-nwfilter | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-qemu | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-secret | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-storage | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-storage-core | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-storage-disk | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-storage-iscsi | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-storage-logical | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-storage-mpath | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-storage-rbd | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-driver-storage-scsi | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-kvm | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-lock | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-log | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-plugin-lockd | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-plugin-sanlock | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-daemon-proxy | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-devel | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-docs | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-libs | 0 | 9.5.0-7.el9_3.alma.1 |
| AlmaLinux:9 | libvirt-nss | 0 | 9.5.0-7.el9_3.alma.1 |
| Debian:12 | libvirt | 0 | 9.0.0-4+deb12u1 |
| Debian:13 | libvirt | 0 | 9.6.0-1 |
| Red Hat:enterprise_linux:9::appstream | libvirt | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-client | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-client-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-client-qemu | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-common | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-common-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-config-network | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-config-nwfilter | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-interface | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-interface-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-network | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-network-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-nodedev | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-nodedev-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-nwfilter | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-nwfilter-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-qemu | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-qemu-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-secret | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-secret-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-core | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-core-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-disk | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-disk-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-iscsi | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-iscsi-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-logical | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-logical-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-mpath | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-mpath-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-rbd | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-rbd-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-scsi | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-driver-storage-scsi-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-kvm | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-lock | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-lock-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-log | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-log-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-plugin-lockd | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-plugin-lockd-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-plugin-sanlock | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-plugin-sanlock-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-proxy | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-daemon-proxy-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-debugsource | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-devel | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-docs | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-libs | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-libs-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-nss | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-nss-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::appstream | libvirt-wireshark-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-client | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-client-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-client-qemu | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-common | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-common-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-config-network | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-config-nwfilter | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-interface | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-interface-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-network | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-network-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-nodedev | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-nodedev-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-nwfilter | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-nwfilter-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-qemu | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-qemu-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-secret | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-secret-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-core | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-core-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-disk | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-disk-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-iscsi | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-iscsi-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-logical | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-logical-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-mpath | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-mpath-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-rbd | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-rbd-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-scsi | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-driver-storage-scsi-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-kvm | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-lock | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-lock-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-log | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-log-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-plugin-lockd | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-plugin-lockd-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-plugin-sanlock | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-plugin-sanlock-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-proxy | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-daemon-proxy-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-debugsource | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-devel | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-docs | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-libs | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-libs-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-nss | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-nss-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| Red Hat:enterprise_linux:9::crb | libvirt-wireshark-debuginfo | 0 | 0:9.5.0-7.el9_3 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | libvirt | 0 | 9.0.0-150500.6.11.1 |
| SUSE:Linux Enterprise Module for Server Applications 15 SP5 | libvirt | 0 | 9.0.0-150500.6.11.1 |
| Ubuntu:20.04:LTS | libvirt | 0 | 6.0.0-0ubuntu8.16 |
| Ubuntu:22.04:LTS | libvirt | 0 | 8.0.0-1ubuntu7.6 |
| openSUSE:Leap 15.5 | libvirt | 0 | 9.0.0-150500.6.11.1 |
| openSUSE:Tumbleweed | libvirt | 0 | 9.5.0-2.1 |
Related vulnerabilities
- CVE-2024-8235 A flaw was found in libvirt. Also affects libvirt
- CVE-2024-4418 A race condition leading to a stack use-after-free flaw was found in libvirt. Also affects libvirt
- CVE-2024-2494 A flaw was found in the RPC library APIs of libvirt. Also affects libvirt
- CVE-2024-2496 A NULL pointer dereference flaw was found in the udevConnectListAllInterfaces() function… Also affects libvirt
- CVE-2024-1441 An off-by-one error flaw was found in the udevListInterfacesByStatus() function in… Also affects libvirt
- CVE-2021-4147 A flaw was found in the libvirt libxl driver. Also affects libvirt
- CVE-2016-5008 libvirt before 2.0.0 improperly disables password checking when the password on a VNC… Also affects libvirt
- CVE-2011-4600 The networkReloadIptablesRules function in network/bridge_driver.c in libvirt before… Also affects libvirt