QEMU/KVM и Xen подвержены уязвимости в коде эмуляции VGA
В развиваемом проектом QEMU модуле VGA, эмулирующем работу простого графического адаптера, выявлена уязвимость (CVE-2016-3710), потенциально позволяющая провести из гостевой системы атаку, которая приведет к выполнению кода на стороне хост-системы с правами процесса-обработчика QEMU (обычно root, а при запуске в режиме stubdomain (qemu-dm) под отдельным непривилегированным пользователем). Уязвимость проявляется в Xen (в режиме HVM c указанной в настройках видеокартой "stdvga"), KVM (qemu-kvm) и других системах виртуализации, использующих компоненты QEMU.
Уязвимости присвоено кодовое имя "Dark Portal". Проблема обусловлена выходом за границы буфера из-за ошибки в реализации кода работы с портами ввода/вывода в режиме эмуляции VGA c поддержкой VESA BIOS Extensions (VBE). В частности, через обращение к регистру VBE_DISPI_INDEX_BANK, хранящему смещение адреса текущего банка видеопамяти, возможно обращение к областям памяти, выходящим за границы буфера, так как предлагаемые 16 MB видеопамяти адресуются с использованием типа "byte(uint8_t *)", а обрабатываются как тип "word(uint32_t *)".
Исправление доступно в виде патча. Обновления пакетов с устранением уязвимости выпущены для RHEL 7, CentOS 7, Fedora и Debian (обновление выпущено только для jessie, для wheezy исправления не будет). Оценить появление обновлений в других дистрибутивах можно на следующих страницах: Ubuntu, openSUSE, SLES, Slackware, Gentoo, FreeBSD, NetBSD. В качестве обходного пути защиты в RHEL/CentOS предлагается использовать sVirt и seccomp для ограничения привилегий процесса QEMU и ограничение доступа к ресурсам. В качестве обходного пути защиты для пользователей Xen рекомендуется использовать виртуальную видеокарту "cirrus" (в настройках stdvga=0, vga="cirrus").