Обнаружена уязвимость в устройстве QEMU PCNET

В коде эмуляции Ethernet-адаптера AMD PCnet, поставляемого в составе QEMU, выявлена критическая уязвимость (CVE-2015-3209), позволяющая выйти за пределы гостевого окружения, выполняемого с использованием компонентов эмуляции аппаратных устройств. В случае успешной эксплуатации злоумышленник может выполнить свой код с правами процесса qemu на стороне хост-системы.

Проблема выявлена участниками группы Zero, созданной компанией Google для предотвращения атак, совершаемых с использованием ранее неизвестных уязвимостей.

Уязвимость вызвана некорректной обработкой в драйвере разбитых на несколько частей TMD-пакетов, суммарных размер которых превышает 4096 байт. По отдельности размер пакета не может превышать размер буфера, установленный в 4096 байт, но проблема возникает при использовании возможности дробления пакета. В этом случае отправив первую часть размером 4096 байт, отправка второй части перепишет область памяти за границей буфера, в том числе позволит переписать ячейки памяти, в которых хранится указатель с адресом возврата управления.

Кроме QEMU уязвимость проявляется в Xen, KVM (qemu-kvm) и других системах виртуализации, использующих компоненты QEMU. В частности, уязвимы конфигурации Xen, выполняющие гостевые системы в режиме HVM с применением виртуального сетевого интерфейса на базе драйвера pcnet. Следует отметить, что драйвер pcnet не используется в Xen по умолчанию и требует явной активации ("model=pcnet" в настройках VIF). Гостевые системы, работающие в режиме паравиртуализации Xen (PV) проблеме не подвержены. Проблема также не проявляется при использовании модели изолированного запуска устройств QEMU (qemu-dm stubdomain, например, при указании в настройках "device_model_stubdomain_override=1"). Опасность проблемы в Fedora/RHEL/CentOS существенно снижена благодаря SELinux. В Ubuntu понижение опасности в конфигурации по умолчанию при использовании QEMU с libvirt достигается за счет дополнительной изоляции при помощи AppArmor.

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