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.
The product does not properly acquire or release a lock on a resource, leading to unexpected resource state changes and behaviors.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Libvirt | Redhat | - (including) | - (including) |
Enterprise_linux | Redhat | 9.0 (including) | 9.0 (including) |
Red Hat Enterprise Linux 9 | RedHat | libvirt-0:9.5.0-7.el9_3 | * |
Libvirt | Ubuntu | bionic | * |
Libvirt | Ubuntu | devel | * |
Libvirt | Ubuntu | kinetic | * |
Libvirt | Ubuntu | lunar | * |
Libvirt | Ubuntu | trusty | * |
Libvirt | Ubuntu | xenial | * |
Locking is a type of synchronization behavior that ensures that multiple independently-operating processes or threads do not interfere with each other when accessing the same resource. All processes/threads are expected to follow the same steps for locking. If these steps are not followed precisely - or if no locking is done at all - then another process/thread could modify the shared resource in a way that is not visible or predictable to the original process. This can lead to data or memory corruption, denial of service, etc.