Google Project Zero выпустил еще один отчет об уязвимости, демонстрирующий экспериментальный эксплойт против гипервизора KVM с открытым исходным кодом, который позволяет злоумышленнику сбежать с виртуальной машины на серверах на базе AMD, получив контроль над базовой хост-системой.
«Насколько мне известно, – заявил о своем открытии исследователь Project Zero Феликс Вильгельм, – это первая публичная статья о KVM-переходе между гостями и хостами, которая не связана с ошибками в компонентах пользовательского пространства, таких как QEMU. . “
Уязвимость, которая была продемонстрирована с помощью проверочной атаки для запуска оболочки на хост-системе, работающей на процессоре AMD Epyc 7351P, основана на функциональности, эксклюзивной для чипов AMD, то есть Intel, давнего конкурента компании и нынешнего большинства. владелец серверного рынка, не пострадает.
«Недавнее увеличение доли рынка AMD в серверном сегменте означает, что реализация KVM AMD внезапно становится более интересной целью, чем это было в последние годы», – отметил Вильгельм.
«Расширение виртуализации AMD называется SVM (Secure Virtual Machine), и для поддержки вложенной виртуализации гипервизор хоста должен перехватывать все инструкции SVM, которые выполняются его гостями, имитировать их поведение и поддерживать синхронизацию своего состояния с базовым оборудованием. .
«Как вы можете себе представить, правильно реализовать это довольно сложно с большим потенциалом сложных логических ошибок, что делает его идеальной целью для ручной проверки кода».
Вильгельму удалось достаточно быстро найти ошибку, обнаружив способ, с помощью которого гости-злоумышленники могут получить доступ к регистрам, зависящим от модели (MSR) на хосте. «Когда я впервые обнаружил и сообщил об этой уязвимости, я был вполне уверен, что этот тип доступа MSR должен быть более или менее эквивалентен выполнению полного кода на хосте», – пояснил он.
«Хотя мое мнение оказалось правильным, мне потребовалось несколько недель разработки эксплойта».
Завершенная атака, доступная только в модуле KVM, включенном в ядра Linux 5.10 и 5.11 и на оборудовании AMD, позволяет гостю-злоумышленнику получить полный контроль над хост-машиной: запускается ошибка, осуществляется доступ к MSR определенного хоста и удаленный запуск оболочки – процесс, который занимает максимум пять минут.
Однако в отчете Вильгельма есть хорошие новости. Функция, использованная уязвимостью, присутствовала только в этих двух версиях ядра, и нет никаких свидетельств того, что она когда-либо использовалась в дикой природе, но, как он предупредил, «эти возможности явно достижимы для хорошо финансируемого противника» и потенциальная отдача от инвестиции означают, что «кажется безопасным предположить, что сейчас над аналогичными проблемами работает больше людей».
Как избежать подобных проблем в будущем? «Инженеры по безопасности, работающие над безопасностью виртуализации, должны стремиться к как можно большему сокращению поверхности атаки, – посоветовал Вильгельм. «Перенос сложных функций в компоненты пользовательского пространства, безопасные для памяти, – это большая победа, даже если это не помогает от ошибок, подобных описанной выше.
«Отключение ненужных или непроверенных функций и выполнение регулярных углубленных проверок кода на предмет новых изменений может еще больше снизить риск проскальзывания ошибок.
«Хостеры, облачные провайдеры и другие предприятия, которые полагаются на виртуализацию для изоляции мультитенантности, должны спроектировать свою архитектуру таким образом, чтобы ограничить воздействие злоумышленника с помощью эксплойта выхода виртуальной машины», – продолжил Вильгельм, предложив, чтобы машины действовали как хосты виртуальные машины должны рассматриваться как «хотя бы частично ненадежные», и компаниям необходимо больше инвестировать в средства обнаружения вторжений.
Это раскрытие произошло в том же месяце, что и обнаружение активно распространяемой вредоносной программы Siloscape, которая использовала контейнеры Windows для проникновения в базовый кластер Kubernetes.
Ранее сегодня мы освещали отчет исследователя в области безопасности Имре Рэда, который выявил уязвимость, которая позволяет пользователям захватывать виртуальные машины Google Compute Engine (GCE), не подвергая риску хост-систему.
«Даже с хорошо проверенной кодовой базой, эта ошибка и ее эксплойт напрямую проливают свет на тот факт, что в средах виртуализации могут существовать уязвимые места, которые можно эксплуатировать», – считает эксперт ESET UK по кибербезопасности Джейк Мур в комментарии к Реестр о раскрытии Project Zero.
«В попытке бороться с такими системами и защитить их, хотя это и не является пуленепробиваемым, было бы полезно отключить все несущественные функции, изолировать хосты виртуальных машин и внедрить надежное программное обеспечение для обнаружения».
Уязвимость была раскрыта в частном порядке команде KVM в конце марта этого года и исправлена в Linux 5.12 и более поздних версиях, в то время как 5.9 и ниже никогда не были уязвимыми.
Дополнительная информация доступна в блоге Project Zero, в проверочном коде в системе отслеживания проблем Project Zero и в примечаниях к исправлению в репозитории Linux git. Реестр обратился к AMD за комментарием. ®