Для гипервизора KVM реализована возможность запуска гостевых систем Xen
Жуан Мартинс (Joao Martins) из компании Oracle предложил для обсуждения разработчиками ядра Linux набор патчей, добавляющий в гипервизор KVM возможности запуска не модифицированных гостевых систем Xen в режиме HVM c использованием всех уже имеющиеся бэкендов (драйверы на стороне хост-окружения (Dom0), применяемые для обеспечения работы гостевой ОС) и фронтэндов (драйверы на стороне гостевой ОС (DomU) для взаимодействия с бэкенд-драйверами хост-окружения, например драйверы сетевой, графической и дисковых подсистем).
В KVM поддержка гостевых систем Xen может оказаться полезной для переноса существующих образов гостевых систем из инфраструктур на базе Xen или для создания полигонов для тестирования и разработки гостевых систем для Xen, а также для использования имеющихся паравиртуальных драйверов (PV) Xen. На стороне гипервизора реализация напоминает подход, применённый в KVM для запуска вложенных виртуальных машин HyperV. На стороне бэкенда предлагается использовать штатные драйверы Xen.
В отличие от развивавшегося около 10 лет назад модуля xenner, обеспечивающего эмуляцию Xen Dom0 через KVM, в предложенном наборе патчей обеспечена возможность применения существующих паравиртуальных драйверов Xen (вместо полной эмуляции оборудования, для ввода/вывода, обработки прерываний и взаимодействия с оборудованием на стороне гостевой системы применяются специальные драйверы, работающие через бэкенд-драйверы хост-системы). Более того, кроме бэкнд и фронтэнд драйверов Xen для управления можно использовать штатный инструментарий Xen, так как в предложенных для KVM патчах воплощён необходимый для их работы UABI. Например, можно запускать не модифицированные версии xenstored, xenstore-list и xenstore-read.
Патчи разбиты на две основные части:
Код для поддержки Xen HVM ABI, позволяющий загружать гостевые системы в режиме HVM без применения на стороне гостевой системы паравиртуализированных драйверов.
Код для поддержки паравиртуальных (PV) драйверов, обеспечивающий перенаправление гипервызовов, эмулируя поведение PV бэкендов Xen, и реализующий специфичные для Xen механизмы для работы с разделяемой памятью и каналами для уведомления о наступлении различных событий.
Дополнительно можно отметить выявление трёх уязвимостей в KVM, которые были исправлены в обновлениях ядра Linux 4.20.8, 4.19.21, 4.14.99 и 4.9.156:
CVE-2019–7222 — утечка памяти, позволяющая в гостевой системе, запущенной с использованием вложенной виртуализации, получить доступ к отрывкам памяти ядра хост-системы. Проблема вызвана отсутствием очистки памяти перед использованием в структуре kvm_inject_page_fault;
CVE-2019–7221 — возможность обращения к уже освобождённой области памяти (use-after-free) в коде эмуляции таймера vmx. Уязвимость может быть эксплуатирована из гостевой системы, запущенной с использованием вложенной виртуализации, и потенциально может привести к выполнению своего кода на стороне хост-системы;
CVE-2019–6974 — установка файлового дескриптора устройства до создания ссылки на него может применяться для создания условий use-after-free и повышения своих привилегий в системе. Проблему можно эксплуатировать на стороне хоста, при наличии у пользователя доступа к /dev/kvm.
В KVM поддержка гостевых систем Xen может оказаться полезной для переноса существующих образов гостевых систем из инфраструктур на базе Xen или для создания полигонов для тестирования и разработки гостевых систем для Xen, а также для использования имеющихся паравиртуальных драйверов (PV) Xen. На стороне гипервизора реализация напоминает подход, применённый в KVM для запуска вложенных виртуальных машин HyperV. На стороне бэкенда предлагается использовать штатные драйверы Xen.
В отличие от развивавшегося около 10 лет назад модуля xenner, обеспечивающего эмуляцию Xen Dom0 через KVM, в предложенном наборе патчей обеспечена возможность применения существующих паравиртуальных драйверов Xen (вместо полной эмуляции оборудования, для ввода/вывода, обработки прерываний и взаимодействия с оборудованием на стороне гостевой системы применяются специальные драйверы, работающие через бэкенд-драйверы хост-системы). Более того, кроме бэкнд и фронтэнд драйверов Xen для управления можно использовать штатный инструментарий Xen, так как в предложенных для KVM патчах воплощён необходимый для их работы UABI. Например, можно запускать не модифицированные версии xenstored, xenstore-list и xenstore-read.
Патчи разбиты на две основные части:
Код для поддержки Xen HVM ABI, позволяющий загружать гостевые системы в режиме HVM без применения на стороне гостевой системы паравиртуализированных драйверов.
Код для поддержки паравиртуальных (PV) драйверов, обеспечивающий перенаправление гипервызовов, эмулируя поведение PV бэкендов Xen, и реализующий специфичные для Xen механизмы для работы с разделяемой памятью и каналами для уведомления о наступлении различных событий.
Дополнительно можно отметить выявление трёх уязвимостей в KVM, которые были исправлены в обновлениях ядра Linux 4.20.8, 4.19.21, 4.14.99 и 4.9.156:
CVE-2019–7222 — утечка памяти, позволяющая в гостевой системе, запущенной с использованием вложенной виртуализации, получить доступ к отрывкам памяти ядра хост-системы. Проблема вызвана отсутствием очистки памяти перед использованием в структуре kvm_inject_page_fault;
CVE-2019–7221 — возможность обращения к уже освобождённой области памяти (use-after-free) в коде эмуляции таймера vmx. Уязвимость может быть эксплуатирована из гостевой системы, запущенной с использованием вложенной виртуализации, и потенциально может привести к выполнению своего кода на стороне хост-системы;
CVE-2019–6974 — установка файлового дескриптора устройства до создания ссылки на него может применяться для создания условий use-after-free и повышения своих привилегий в системе. Проблему можно эксплуатировать на стороне хоста, при наличии у пользователя доступа к /dev/kvm.
Ещё новости по теме:
18:20