CVE-2016-5008
Critical · 9.8CVSS
9.8
EPSS
3.7%
Published
Jul 13, 2016
CISA due date
—
Cloudanix analysis
Virtualization software contained a flaw that let outsiders view and control virtual machine screens without any password when none had been set, exposing systems to unauthorized access.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Trivial
- Impact
- Full Compromise
- Component
- Library
- Class
- Authentication Bypass
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw causes libvirt to skip password validation entirely for VNC servers when the configured password is the empty string, allowing any remote client to establish an unauthenticated VNC session to a virtual machine console.
Why it matters to the business
Attackers can obtain direct interactive access to virtual machine consoles in affected virtualization environments, increasing the risk of data exposure, lateral movement, and operational disruption until systems are updated.
How an attack unfolds
An attacker locates publicly reachable VNC ports on hosts running vulnerable libvirt, initiates a standard VNC client connection, and is granted immediate session access because the empty-password code path disables all authentication checks.
How to fix it
Upgrade libvirt to version 2.0.0 or later on all affected systems; after upgrade, audit domain XML configurations and either set non-empty VNC passwords or disable VNC listeners entirely.
How to confirm the fix worked
Confirm installed libvirt version is 2.0.0 or newer; attempt a VNC connection to a test domain configured with an empty password and verify that authentication is now enforced or the listener is disabled.
Typical attack path
- Scan for open VNC ports on hosts using libvirt-managed virtualization
- Connect with a standard VNC client to the discovered port
- Trigger the empty-password code path that bypasses authentication
- Obtain interactive console access to the target virtual machine
How to detect it
Review libvirt logs and domain XML files for empty VNC password settings; inspect network logs for inbound connections to VNC ports from unexpected sources; correlate with process execution of libvirtd versions older than 2.0.0.
- libvirt version before 2.0.0
- <graphics type='vnc' port='-' autoport='yes' passwd=''
- vnc connection accepted without password in libvirtd.log
- unexpected VNC TCP sessions to ports 5900-59xx
What your security team should do
- Prioritize upgrade of libvirt to 2.0.0+ across all virtualization hosts
- Scan domain configurations for empty or missing VNC passwords and remediate
- Restrict network exposure of VNC ports using firewalls or libvirt TLS
- Enable logging of VNC connection attempts for ongoing monitoring
The record
libvirt before 2.0.0 improperly disables password checking when the password on a VNC server is set to an empty string, which allows remote attackers to bypass authentication and establish a VNC session by connecting to the server.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | libvirt | 0 | 2.0.0-1 |
| Debian:12 | libvirt | 0 | 2.0.0-1 |
| Debian:13 | libvirt | 0 | 2.0.0-1 |
| Debian:7 | libvirt | 0 | 0.9.12.3-1+deb7u2 |
| Debian:8 | libvirt | 0 | 1.2.9-9+deb8u3 |
| Mageia:5 | libvirt | 0 | 1.2.9.3-1.4.mga5 |
| Red Hat:enterprise_linux:7::client | libvirt | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-client | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-config-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-config-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-interface | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-nodedev | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-qemu | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-secret | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-driver-storage | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-kvm | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-daemon-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-debuginfo | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-devel | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-docs | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-lock-sanlock | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-login-shell | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::client | libvirt-nss | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-client | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-config-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-config-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-interface | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-nodedev | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-qemu | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-secret | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-driver-storage | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-kvm | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-daemon-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-debuginfo | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-devel | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-docs | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-lock-sanlock | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-login-shell | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::computenode | libvirt-nss | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-client | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-config-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-config-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-driver-interface | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-driver-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-driver-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-driver-nodedev | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-driver-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-driver-qemu | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-driver-secret | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-driver-storage | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-kvm | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-daemon-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-debuginfo | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-devel | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-docs | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-lock-sanlock | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-login-shell | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::hypervisor | libvirt-nss | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-client | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-config-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-config-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-interface | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-nodedev | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-qemu | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-secret | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-driver-storage | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-kvm | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-daemon-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-debuginfo | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-devel | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-docs | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-lock-sanlock | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-login-shell | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::server | libvirt-nss | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-client | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-config-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-config-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-interface | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-nodedev | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-qemu | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-secret | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-driver-storage | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-kvm | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-daemon-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-debuginfo | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-devel | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-docs | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-lock-sanlock | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-login-shell | 0 | 0:2.0.0-10.el7 |
| Red Hat:enterprise_linux:7::workstation | libvirt-nss | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-client | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-config-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-config-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-driver-interface | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-driver-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-driver-network | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-driver-nodedev | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-driver-nwfilter | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-driver-qemu | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-driver-secret | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-driver-storage | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-kvm | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-daemon-lxc | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-debuginfo | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-devel | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-docs | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-lock-sanlock | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-login-shell | 0 | 0:2.0.0-10.el7 |
| Red Hat:storage:3.1:server:el7 | libvirt-nss | 0 | 0:2.0.0-10.el7 |
| SUSE:Linux Enterprise Desktop 12 SP1 | libvirt | 0 | 1.2.18.4-11.7 |
| SUSE:Linux Enterprise Server 11 SP4 | libvirt | 0 | 1.2.5-15.3 |
| SUSE:Linux Enterprise Server 11 SP4 | perl-Sys-Virt | 0 | 1.2.5-4.2 |
| SUSE:Linux Enterprise Server 12 SP1 | libvirt | 0 | 1.2.18.4-11.7 |
| SUSE:Linux Enterprise Server 12-LTSS | libvirt | 0 | 1.2.5-27.13.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | libvirt | 0 | 1.2.5-15.3 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | perl-Sys-Virt | 0 | 1.2.5-4.2 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | libvirt | 0 | 1.2.18.4-11.7 |
| SUSE:Linux Enterprise Software Development Kit 11 SP4 | libvirt | 0 | 1.2.5-15.3 |
| SUSE:Linux Enterprise Software Development Kit 12 SP1 | libvirt | 0 | 1.2.18.4-11.7 |
| SUSE:Linux Enterprise Workstation Extension 12 SP1 | libvirt | 0 | 1.2.18.4-11.7 |
| Ubuntu:14.04:LTS | libvirt | 0 | 1.2.2-0ubuntu13.1.26 |
| Ubuntu:16.04:LTS | libvirt | 0 | 1.3.1-1ubuntu10.19 |
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-2014-3657 The virDomainListPopulate function in conf/domain_conf.c in libvirt before 1.2.9 does not… Also affects libvirt
- CVE-2014-0179 libvirt 0.7.5 through 1.2.x before 1.2.5 allows local users to cause a denial of service… Also affects libvirt
- CVE-2023-3750 A flaw was found in libvirt. Also affects libvirt