CVE-2014-0179
NoneCVSS
—
EPSS
0.6%
Published
Aug 3, 2014
CISA due date
—
Cloudanix analysis
A bug in virtualization software lets someone with local access freeze parts of the system by feeding it specially formatted data, making management tasks unresponsive until fixed.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw permits local attackers to submit crafted XML containing external entity declarations to the virConnectCompareCPU and virConnectBaselineCPU API methods, triggering an XXE condition that causes the libvirt daemon to block on external resource reads and hang.
Why it matters to the business
Successful exploitation produces denial-of-service against virtualization management operations, potentially interrupting VM provisioning, migration, and host inventory tasks on affected systems until the process is restarted.
How an attack unfolds
A local user on a system running an affected libvirt version crafts an XML document that declares an external entity and references it within a call to virConnectCompareCPU or virConnectBaselineCPU; when the API processes the document it attempts to resolve the entity, blocking the daemon thread and causing a hang.
How to fix it
Upgrade libvirt to version 1.2.5 or later on all affected Red Hat Enterprise Linux, Red Hat Enterprise Virtualization, and openSUSE systems; disable or restrict local access to the CompareCPU and BaselineCPU APIs until patches are applied if immediate upgrade is not feasible.
How to confirm the fix worked
Confirm installed libvirt version is 1.2.5 or newer; test the fixed APIs with a benign XXE payload to verify that external entity expansion is rejected and no hang occurs; review package changelogs for the XXE mitigation commit.
Typical attack path
- Obtain local shell access on a host running vulnerable libvirt
- Construct malicious XML containing an external entity declaration
- Invoke virConnectCompareCPU or virConnectBaselineCPU with the crafted XML via libvirt client or direct API call
- Observe daemon thread blocking on external entity resolution, resulting in service hang
How to detect it
Review libvirt daemon logs for repeated or long-running CompareCPU/BaselineCPU calls containing XML entity references; correlate with system process hangs or high-wait states in the libvirtd process; examine audit logs for local users invoking libvirt client binaries around the time of service degradation.
What your security team should do
- Prioritize upgrade of all libvirt packages to 1.2.5+ across the environment due to the public disclosure age and potential for local privilege escalation chains
- Restrict local user access to libvirt APIs via policy or SELinux/AppArmor profiles until patches are deployed
- Monitor for unusual libvirt daemon CPU or thread activity that could indicate attempted exploitation
The record
libvirt 0.7.5 through 1.2.x before 1.2.5 allows local users to cause a denial of service (read block and hang) via a crafted XML document containing an XML external entity declaration in conjunction with an entity reference to the (1) virConnectCompareCPU or (2) virConnectBaselineCPU API method, related to an XML External Entity (XXE) issue. NOTE: this issue was SPLIT per ADT3 due to different affected versions of some vectors. CVE-2014-5177 is used for other API methods.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:10 | libvirt | 0 | 1.2.4-1 |
| Debian:11 | libvirt | 0 | 1.2.4-1 |
| Debian:12 | libvirt | 0 | 1.2.4-1 |
| Debian:13 | libvirt | 0 | 1.2.4-1 |
| Debian:7 | libvirt | 0 | 0.9.12.3-1+deb7u1 |
| Mageia:3 | libvirt | 0 | 1.0.2-8.5.mga3 |
| Mageia:4 | libvirt | 0 | 1.2.1-1.1.mga4 |
| Red Hat:enterprise_linux:6::client | libvirt | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::client | libvirt-client | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::client | libvirt-debuginfo | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::client | libvirt-devel | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::client | libvirt-lock-sanlock | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::client | libvirt-python | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::computenode | libvirt | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::computenode | libvirt-client | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::computenode | libvirt-debuginfo | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::computenode | libvirt-devel | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::computenode | libvirt-lock-sanlock | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::computenode | libvirt-python | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::server | libvirt | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::server | libvirt-client | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::server | libvirt-debuginfo | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::server | libvirt-devel | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::server | libvirt-lock-sanlock | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::server | libvirt-python | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::workstation | libvirt | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::workstation | libvirt-client | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::workstation | libvirt-debuginfo | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::workstation | libvirt-devel | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::workstation | libvirt-lock-sanlock | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:6::workstation | libvirt-python | 0 | 0:0.10.2-29.el6_5.8 |
| Red Hat:enterprise_linux:7::client | libvirt | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-client | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-config-network | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-config-nwfilter | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-interface | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-lxc | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-network | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-nodedev | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-nwfilter | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-qemu | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-secret | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-storage | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-kvm | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-lxc | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-debuginfo | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-devel | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-docs | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-lock-sanlock | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-login-shell | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::client | libvirt-python | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-client | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-config-network | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-config-nwfilter | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-interface | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-lxc | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-network | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-nodedev | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-nwfilter | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-qemu | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-secret | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-storage | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-kvm | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-lxc | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-debuginfo | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-devel | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-docs | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-lock-sanlock | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-login-shell | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::computenode | libvirt-python | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-client | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-config-network | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-config-nwfilter | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-interface | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-lxc | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-network | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-nodedev | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-nwfilter | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-qemu | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-secret | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-storage | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-kvm | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-lxc | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-debuginfo | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-devel | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-docs | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-lock-sanlock | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-login-shell | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::server | libvirt-python | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-client | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-config-network | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-config-nwfilter | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-interface | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-lxc | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-network | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-nodedev | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-nwfilter | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-qemu | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-secret | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-storage | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-kvm | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-lxc | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-debuginfo | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-devel | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-docs | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-lock-sanlock | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-login-shell | 0 | 0:1.1.1-29.el7_0.1 |
| Red Hat:enterprise_linux:7::workstation | libvirt-python | 0 | 0:1.1.1-29.el7_0.1 |
| Ubuntu:14.04:LTS | libvirt | 0 | 1.2.2-0ubuntu13.1.5 |
| openSUSE:Tumbleweed | libvirt | 0 | 2.5.0-1.1 |
Related vulnerabilities
- 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-2011-4600 The networkReloadIptablesRules function in network/bridge_driver.c in libvirt before… 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-2014-3657 The virDomainListPopulate function in conf/domain_conf.c in libvirt before 1.2.9 does not… Also affects libvirt
- CVE-2023-3750 A flaw was found in libvirt. Also affects libvirt