Выход из виртуальной машины
Выход из виртуальной машины (англ. Virtual machine escape, VM escape) — это процесс, при котором программа выходит за пределы виртуальной машины (ВМ), на которой она запущена, и взаимодействует с хостовой операционной системой[1]. Теоретически, виртуальная машина представляет собой «полностью изолированную установку гостевой операционной системы внутри обычной хостовой операционной системы»[2], однако на практике это не всегда так.
К примеру, в 2008 году уязвимость () в VMware, обнаруженная компанией Core Security Technologies, сделала возможным выход из виртуальной машины на VMware Workstation версий 6.0.2 и 5.5.4[3].[4] Полностью рабочий эксплойт под названием Cloudburst был разработан компанией Immunity Inc. для инструмента Immunity CANVAS (коммерческого средства для проведения тестов на проникновение)[5]. Демонстрация Cloudburst прошла на конференции Black Hat USA 2009[6].
Известные уязвимости
- Xen pygrub: внедрение команд через файл grub.conf.
- Уязвимость обхода каталогов в функции общих папок VMware.
- Уязвимость обхода каталогов в функции общих папок VMware.
- Xen: переполнение буфера в бэкенде паравиртуализированного фрейм-буфера.
- Cloudburst: функция отображения ВМ в VMware.
- QEMU-KVM: эмуляция PIIX4 не проверяет возможность устройства к горячему отключению перед извлечением[7].
- Ошибка в реализации системных вызовов x86-64 ядра Xen 4.1.2 и ранее.
- Oracle VirtualBox: уязвимость повреждения памяти при трёхмерном ускорении.
- VENOM: переполнение буфера в виртуальном дисководе QEMU.
- QEMU-KVM: переполнение кучи в функции pcnet_receive[8].
- Гипервизор Xen: неконтролируемое создание отображений больших страниц гостевыми PV.
- Xen: упрощенные сценарии для обновления pagetable приводили к небезопасным сценариям.
- Xen: отключение рекурсивных L3-таблиц страниц для 32-разрядных PV-гостей.
- CVE-2017-5715, CVE-2017-5753, CVE-2017-5754: аппаратные уязвимости Spectre и Meltdown, атаки бокового канала кэша на уровне процессора (RDCL), позволяют процессу получать доступ ко всей памяти компьютера, включая невыделенную данной ВМ.
- Hyper-V: удалённое выполнение кода.
- Hyper-V: удалённое выполнение кода.
- VMware ESXi, Workstation, Fusion: переполнение буфера в драйвере SVGA может позволить гостю выполнить код на хосте[9].
- VMware Workstation, Fusion: переполнение буфера кучи в устройстве VMNAT может позволить гостю выполнить код на хосте[10].
- VMware Workstation, Horizon View: множественные ошибки выхода за пределы границ при использовании Cortado ThinPrint могут позволить гостю выполнить код или вызвать отказ в обслуживании на Windows-хосте[10].
- Oracle VirtualBox: интерфейс общей памяти VGA позволяет чтение и запись на хосте[11].
- VMware ESXi, Workstation, Fusion: использование неинициализированной памяти стека в виртуальном сетевом адаптере vmxnet3[12].
- MDS-атаки (Microarchitectural Data Sampling): атаки боковых каналов на уровне процессора позволяют читать данные между ВМ и даже с хост-системы. Подтипы: MSBDS, MFBDS (Zombieload), MLPDS, MDSUM.
- , , , , : уязвимости удалённого выполнения кода в Windows Hyper-V.
- Xen Hypervisor и Citrix Hypervisor: позволяют гостевым системам скомпрометировать хост (отказ в обслуживании, повышение привилегий)[13].
- (критическая), : в Windows 10 и VMware Workstation с графическими картами AMD Radeon и драйвером Adrenalin: атакующий внутри гостевой системы может с помощью pixel shader вызвать ошибку памяти на хосте, внедрить вредоносный код и выполнить его[14].
- : ZombieLoad, ZombieLoad v2, Vector Register Sampling (VRS), Microarchitectural Data Sampling (MDS), Transactional Asynchronous Abort (TAA), CacheOut, L1D Eviction Sampling (L1DES): атаки на L1-кэш процессоров позволяют ВМ читать память за пределами своей «песочницы»[15].
- CVE-2020-3962, CVE-2020-3963, CVE-2020-3964, CVE-2020-3965, CVE-2020-3966, CVE-2020-3967, CVE-2020-3968, CVE-2020-3969, CVE-2020-3970, CVE-2020-3971: VMware ESXi, Workstation Pro/Player, Fusion Pro, Cloud Foundation: уязвимости в SVGA, графическом шейдере, драйвере USB, xHCI/EHCI, PVNVRAM и vmxnet3 могут привести к выходу из виртуальной машины[16].


