QEMU/KVM и Xen подвержены уязвимости в коде эмуляции VGA

В развиваемом проектом QEMU модуле VGA, эмулирующем работу простого графического адаптера, выявлена уязвимость (CVE-2016-3710), потенциально позволяющая осуществить из гостевой системы атаку, которая приведёт к выполнению кода на стороне хост-системы с правами процесса-обработчика QEMU.

Уязвимость проявляется в Xen (в режиме HVM c указанной в настройках видеокартой «stdvga»), KVM (qemu-kvm) и других системах виртуализации, использующих компоненты QEMU.

Уязвимости присвоено кодовое имя «Dark Portal». Проблема обусловлена выходом за границы буфера из-за ошибки в реализации кода работы с портами ввода/вывода в режиме эмуляции VGA c поддержкой VESA BIOS Extensions (VBE). В частности, через запись в регистр VBE_DISPI_INDEX_BANK, хранящий смещение адреса текущего банка видеопамяти, возможно обращение к областям памяти, выходящим за границы буфера, так как предлагаемые банки видеопамяти адресуются с использованием типа «byte» (uint8_t *), а обрабатываются как тип «word» (uint32_t *).

Исправление доступно в виде патча. Обновления пакетов с устранением уязвимости выпущены для RHEL 7, CentOS 7, Fedora и Debian (обновление выпущено только для jessie, для wheezy исправления не будет).

В качестве обходного пути защиты в RHEL/CentOS предлагается использовать sVirt и seccomp для ограничения привилегий процесса QEMU. В качестве обходного пути защиты для пользователей Xen рекомендуется использовать виртуальную видеокарту «cirrus» (в настройках stdvga=0, vga=»cirrus»).

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.