虚拟机中的病毒是如何逃逸的?
时间:2024-01-01 11:48:01 | 来源:网站运营
时间:2024-01-01 11:48:01 来源:网站运营
虚拟机中的病毒是如何逃逸的?:先说结论:能依靠漏洞来逃逸
看到有朋友说容器逃逸的,严格来说,容器并不算是虚拟机的一种。
==================================
虚拟化方案有:
软件虚拟化、
半虚拟化、
硬件虚拟化软件虚拟化是指将虚拟机的指令流交给虚拟机核心层进行分析,将非特权指令直接交给CPU运行,特权指令交给虚拟机核心层执行。
半虚拟化是改造GuestOS(虚拟机内的系统),使让GuestOS知道他在虚拟机环境中,使其只使用非特权指令(准确说是避免使用具有虚拟化缺陷的特权指令),需要用到特权操作时使用hypercall的方式请求虚拟机核心层代为完成。
硬件虚拟化是芯片级别的虚拟化支持,克服x86虚拟化缺陷问题,无需改造GuestOS:将虚拟机运行在Ring1模式下,所有指令交给硬件执行。对于特权指令CPU不会直接执行,将其捕获交给虚拟机核心层进行处理。
以上三种方案的典型代表:
软件虚拟化:早期的vmware,qemu
半虚拟化:Xen
硬件虚拟化:vmware,kvm+qemu
逃逸方式1:局域网攻击此种方式不多说,因为本不属于逃逸范畴,但实际上却可以达到同等的目的。原理是利用局域网漏洞进行感染提权。著名代表就是永恒之蓝。
逃逸方式2:软件漏洞逃逸Xen是重灾区域。半虚拟化系统无需硬件级别支持,效率极高的,但代价是改造GuestOS,虚拟机核心层需要大量代码来帮助GuestOS进行特权操作。是所有虚拟化方案中复杂度最高的一种。系统越复杂,安全性越低,所以Xen的半虚拟化经常被作为攻击的对象。曾听业内朋友说过思捷和威睿在竞标虚拟化时,威睿的团队的人经常给客户演示如何在Xen平台下做逃逸,导致思捷经常因为这个问题竞标失败。
逃逸方式3:硬件漏洞逃逸上面说了虚拟化的原理,再此做一次简单的总结:
虚拟机运行在低权限的CPU状态,非指令交给CPU执行,特权指令交给虚拟机核心层执行。若CPU有某种漏洞或后门:能使软件在低权限状态通过运行特定指令代码序列进入到高权限状态,那么虚拟机核心层则不再能对GuestOS运行的特权代码进行捕获处理。这时虚拟机内部的系统直接拥有了CPU的最高权限,可以随意践踏宿主系统的一切资源。此种攻击方式的代表:我不知道,但不代表没有,也许国家级别的安全实验室拥有此种技术。
那么退一步,不取得最高权限,访问宿主机上的敏感数据是否可行?
这个是可行的,17年底,18年初时,Intel/AMD公司的处理器纷纷爆出因指令预测机制未充分考虑旁路嗅探攻击。导致软件可以在Ring3的状态下,通过一些巧妙的手段嗅探出受CPU保护的敏感数据。这个漏洞实际上对普通用户的影响甚小,但影响最大的则是各大云平台,因为云上任意一台虚拟机内,可以通过这个漏洞嗅探宿主机的数据,甚至是运行在同一个宿主机上其他虚拟机的数据。所以Intel/AMD出漏洞以后第一时间向各大云服务商披露硬件漏洞以及提供缓解方法。
利益相关:杭州某小公司的桌面云系统实施和运维