ArchLinux: 201409-5: libvirt: out-of-bounds read access
Summary
Luyao Huang of Red Hat found that the qemu implementation of virDomainGetBlockIoTune computed an index into the array of disks for the live definition, then used it as the index into the array of disks for the persistent definition, which could result into an out-of-bounds read access in qemuDomainGetBlockIoTune().
Resolution
Upgrade to 1.2.8-2.
# pacman -Syu "libvirt>=1.2.8-2"
The problem has been fixed upstream [0] but no release is available yet.
References
[0] https://gitlab.com/libvirt/libvirt;a=commit;h=3e745e8f775dfe6f64f18b5c2fe4791b35d3546b https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3633 https://security.libvirt.org/2014/0004.html https://bugs.archlinux.org/task/42159
Workaround
The out-of-bounds access is only possible on domains that have had diskshot-plugged or removed from the live image without also updating thepersistent definition to match; keeping the two definitions matched orusing only transient domains will avoid the problem. Denying access tothe readonly libvirt socket will avoid the potential for a denial ofservice attack, but will not prevent the out-of-bounds access fromcausing a crash for a privileged client, although such a crash is nolonger a security problem.