Обнаружена критическая уязвимость в Xen, KVM и QEMU

Обнаружена критическая уязвимость в Xen, KVM и QEMU

В развиваемом проектом QEMU коде эмуляции контроллера флоппи-дисков (FDC) выявлена критическая уязвимость (CVE-2015-3456), получившая кодовое имя VENOM. Кроме QEMU драйвер также используется в системах виртуализации Xen и KVM. Уязвимость позволяет выйти за пределы гостевой системы и получить управления над базовым хост-окружением.

Пользователь гостевой системы, имеющий доступ к портам ввода/вывода (привилегированный пользователь в Linux и любой пользователь в Windows), может отправить эмулятору контроллера FDC специально оформленную команду, которая приведёт к переполнению буфера и выполнению произвольного кода на стороне гостевой системы с правами сопутствующего процесса QEMU. Если данный процесс выполняется с правами root, то пользователь может обойти ограничения виртуализации и из гостевого окружения получить root-доступ к основной системе.

Проблема проявляется во всех гостевых системах на базе архитектуры x86 и x86-64, выполняемых с использованием гипервизора Xen в режиме полной виртуализации (HVM) и в системах на базе QEMU/KVM. Тип эмулируемого оборудования и настройки запуска QEMU не имеют значения, так как в режимах PIIX и ICH9 создаётся мост для шины ISA, в котором в любом случае доступен виртуальный контроллер флоппи-дисков. Также не имеет значение наличие в гостевой системе файла устройства для доступа к флоппи-диску, так как эксплуатация производится через обращение к портам ввода/вывода.

Обновления с устранением уязвимости уже выпущено для RHEL, CentOS, Ubuntu и Debian. Также доступны патчи к QEMU и Xen. Оценить появление обновлений в других дистрибутивах можно на следующих страницах: Fedora, openSUSE, SLES, Slackware, Gentoo, FreeBSD, NetBSD. В качестве обходного пути защиты в RHEL/CentOS предлагается использовать sVirt и seccomp для ограничения привилегий процесса QEMU и ограничение доступа к ресурсам. В Ubuntu в конфигурации по умолчанию при использовании QEMU с libvirt применяется дополнительная изоляция при помощи AppArmor.

Проблема присутствует с 2004 года и вызвана отсутствием проверки переполнения при записи в FIFO-буфер фиксированного размера, используемый в слое эмуляции FDC для хранения команд контроллера и их параметров. Запись в буфер ведётся побайтово, отражая запись данных в порты ввода/вывода, с последующим увеличением индекса, указывающего на текущую позицию в буфере. После выполнения команды индекс сбрасывается в ноль и для следующей команды буфер заполняется заново. Для некоторых команд, таких как FD_CMD_READ_ID и FD_CMD_DRIVE_SPECIFICATION_COMMAND, в определённых ситуациях сброс индекса не производился или производился с задержкой, что даёт возможность полностью заполнить буфер и осуществить запись за его пределы. 

Подпишитесь на новости

Однотонные обои заставляли Windows 7 тормозить при входе

Казалось бы, что может быть проще для компьютера, чем показать рабочий стол, залитый одним цветом? Но ранняя Windows 7 умудрялась превратить даже эту задачу в 30-секундную медитацию на экране «Добро пожаловать». Проблема возникала, если пользователь выбирал вместо картинки однотонные синие, зелёные, чёрные или другие обои.

После ввода пароля Windows могла держать экран приветствия ровно полминуты, хотя система уже была практически готова к работе.

Дело оказалось не в том, что Windows надрывалась, рисуя синий фон. Как объяснил инженер Microsoft Рэймонд Чен, при входе операционная система ждала от компонентов рабочего стола подтверждения готовности. Код, отвечавший за обои, отправлял такой сигнал только после загрузки изображения.

Если пользователь выбирал сплошной цвет, картинка не загружалась — а значит, нужная ветка кода вообще не запускалась. Сигнал WallpaperReady бесследно пропадал, и система ждала его до срабатывания 30-секундного тайм-аута. После этого Windows махала рукой и наконец показывала рабочий стол.

Похожий фокус возникал при одновременном включении групповых политик Normal Wallpaper и Hide all icons on Desktop. Инициализация значков отключалась, но сообщение о её завершении также не отправлялось. Снова ожидание, снова 30 секунд созерцания экрана приветствия.

Microsoft официально подтвердила баг для Windows 7 и Windows Server 2008 R2 и подготовила исправление в ноябре 2009 года. До установки патча пользователям предлагали гениальный по простоте костыль: создать крошечную картинку нужного цвета и поставить её на фон.

Визуально ничего не менялось, зато Windows видела изображение, получала долгожданный сигнал и переставала задумываться при каждом входе.

RSS: Новости на портале Anti-Malware.ru