The virConnectGetDomainCapabilities() libvirt API, versions 4.x.x before 4.10.1 and 5.x.x before 5.4.1, accepts an "emulatorbin" argument to specify the program providing emulation for a domain. Since v1.2.19, libvirt will execute that program to probe the domain's capabilities. Read-only clients could specify an arbitrary path for this argument, causing libvirtd to execute a crafted executable with its own privileges.
{
"binaries": [
{
"binary_version": "1.3.1-1ubuntu10.27",
"binary_name": "libvirt-bin"
},
{
"binary_version": "1.3.1-1ubuntu10.27",
"binary_name": "libvirt-dev"
},
{
"binary_version": "1.3.1-1ubuntu10.27",
"binary_name": "libvirt0"
}
],
"availability": "No subscription required"
}
{
"binaries": [
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libnss-libvirt"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-bin"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-clients"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-daemon"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-daemon-driver-storage-gluster"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-daemon-driver-storage-rbd"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-daemon-driver-storage-sheepdog"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-daemon-driver-storage-zfs"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-daemon-system"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-dev"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-sanlock"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt-wireshark"
},
{
"binary_version": "4.0.0-1ubuntu8.12",
"binary_name": "libvirt0"
}
],
"availability": "No subscription required"
}