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.
{
"availability": "No subscription required",
"binaries": [
{
"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",
"binary_version": "1.3.1-1ubuntu10.27"
}
]
}
{
"availability": "No subscription required",
"binaries": [
{
"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",
"binary_version": "4.0.0-1ubuntu8.12"
}
]
}