Xen基础架构安全性分析 云朋 Email: cbns888@163.com
Xen虚拟化介绍 Hardware Hypervisor Domain0 Domain U HVM … Domain U PV Network backend Driver Network Driver Block Backend Driver Xen virtual firmware Qemu-dm Block Driver Xen 是一个基于Hypervisor 和虚拟化的开源虚拟机监视器,由剑桥大学的lan Pratt 教授领导发起 Xen Hypervisor,运行在硬件层之上的“元”操作系统,用于协调硬件资源(CPU、内存)、各虚拟机之间进行环境隔离; Domain 0,一个运行上Hyerpvisro上修改过Linux Kernel的独特虚拟机,控制硬件IO资源,与Domain U交互。 Domain U 运行在Hypervisor上的虚拟机,分为PV和HVM
Xen安全 溢出到Hypervisor,造成DOS 溢出到Domain0,拥有管理员权限,可以攻击本机其他虚拟机或者攻击其他主机 Guest Hardware Hypervisor Domain0 Guest OS Domain U … 嗅探同一主机的其他虚拟机 Host xx
主机内的虚拟机间的攻击 Dom0 Ghost OS GhostOS GhostOS CPU Memory NIC Hypervisor 当Ghost OS被发现时,流量从一个虚拟机到另外一个虚拟机,不经过物理网卡,而是直接在Hypervisor的网桥转发,检测变的非常因验 基于Xen架构的另一种情况: 当虚拟机共享或者重新分配硬件资源时会造成很多的安全风险。信息可能会在虚拟机之间被泄露。 例如,如果虚拟机占用了额外的内存,然而在释放的时候没有重置这些区域,分配在这块内存上的新的虚拟机就可以读取到敏感信息。 Dom0 Ghost OS GhostOS GhostOS Hypervisor 伪物理地址到机器地址映射表 CPU Memory NIC 在Xen 的内存管理架构中,虚拟机监视器为每个虚拟机分配初始地址为0 的连续的伪物理地址。为了可以直接读取页面,Xen 将伪物理地址到机器地址的映射表存储在每台虚拟机的地址空间里。同时,Xen 还维护机器地址到伪物理地址的映射表。所有对这些映射表的写操作都由虚拟机监视器截获或生效以达到存取控制。
对Hypervisor 的攻击 Dom0 Ghost OS GhostOS GhostOS DOS API CPU Memory NIC 对Hypervisor的攻击主要来自于DOS攻击(CVE20122625)。从Ghost OS上直接造成Hypervisor崩溃,使这台主机上的所有虚拟机都停止运行 API接口为攻击者提供了更多的攻击路径以及更大的攻击平面。(典型的API包括了libvirt API,以及由硬件以及带有hypervisor能够处理的参数的处理器指令所产生的中断)(CVE20111898)。 Dom0 Ghost OS GhostOS GhostOS DOS API Hypervisor CPU Memory NIC virConnectPtr virConnectOpenReadOnly (const char * name) 在使用时首先应调用这个函数,获得hypervisor的链接 int virConnectListDomains (virConnectPtr conn, int * ids, int maxids) 获得hypervisor下所有域的ID const char * virDomainGetName (virDomainPtr domain) 得到域的名字 DOS攻击对Xen所承载的业务系统的脆弱性提出了严重挑战
Xen的公开漏洞(1) CVE-2012-2625 漏洞发布时间:2012-05-22 影响系统 :Xen 4.x 危害: 本地攻击者可以利用漏洞可使系统崩溃。 攻击所需条件: 攻击者必须构建恶意内核映像,诱使程序解析。 漏洞信息 当解压缩内核时PyGrub存在一个错误,通过超大的内核映像,诱使应用程序解析,Guest虚拟机中的本地用户可导致Hypervisor层崩溃。 例如:CVE(CAN) ID: CVE-2007-4993 ,Xen对虚拟机镜像的加载使用pygrub命令,因为在命令执行中对启动镜像时的配置文件未做过虑,导制dom0在启动guest OS时,可以执行grub.conf文件中写入的特权指令。
Xen的公开漏洞(2) CVE-2011-1898 Description Xen 4.1 & 4.0, when using PCI passthrough on Intel VT-d chipsets that do not have interrupt remapping, allows guest OS users to gain host OS privileges by "using DMA to generate MSI interrupts by writing to the interrupt injection registers." 有些hypervisor运行在只读存储上,同时重启hypervisor会是一个比较明确的入侵信息,所以运行时修改hypervisor的价值很大。 Xen 4.1和4.0版本,在使用PCI转移到不能中断重映射的Intel VT-d芯片组时存在权限许可和访问控制漏洞。本地用户可通过使用PCI设备驱动,通过使用DMA操作写入中断注入寄存器来生成MSI中断,获得主机操作系统权限。 Intel VT-d技术是一种基于North Bridge北桥芯片的硬件辅助虚拟化技术,通过在北桥中内置提供DMA虚拟化和IRQ虚拟化硬件,实现了新型的I/O虚拟化方式,由于需要在DMA请求内嵌入目标内存地址,因此这个架构须要完全访问所有的内存地址,并不能实现中断隔离。VT-d为此实现了新的中断重映射(interrupt-remapping)架构,通过重新定义MSI的格式来解决这个问题,新的MSI仍然是一个DMA写 请求的形式,不过并不嵌入目标内存地址,取而代之的是一个消息ID,通过维护一个表结构,硬件可以通过不同的消息ID辨认不同的虚拟机区域。 当“中断重新映射”没有在芯片组中启用时,Intel VT-d芯片组会允许带有PCI设备的客户端使用DMA通过写入中断注入寄存器生成MSI中断。(安装一个HDD驱动,使用HDD驱动引起一个PCI设备操作过程,我们可以在HDD驱动中完成中断的执行过程,而内存为所有虚拟机所共用)注入陷阱就可以通过这种方法实现。) Xen未对DMA传输做限制。 因此具备DMA能力的设备可以覆盖和写入到系统的任意内存地址,即便是Xen的内存空间。
Xen的其它公开漏洞(DOS) 公开的CVE漏洞,造成Hypervisor拒绝服务 CVE-2010-4255 XEN 4.0.1和早期的64bit版本,允许guest OS通过构造的特殊内存访问导致DOS CVE-2010-4247 XEN 3.4.0之前版本,通过无限循环和消耗CPU的操作,可能允许guest OS造成DOS CVE-2010-3699 XEN 3.x的后端驱动允许guest OS把自己挂起造成DOS
对Domain0的攻击 通常提供云计算资源的主机需要用防火墙限制从外部来的访问,因此对Domain0的攻击更多的是从内部发起的。 OS OS OS Hypervisor CPU Memory NIC 例如:通过对管理平台的渗透,很容易发起对Xen接口的攻击,如果渗透能成功,很可能会发现与Domain0通讯的接口、身份验证方式、命令执行过程。甚至用户权限
对Hypervisor逃逸攻击 最新版本中上未发现有公开的虚拟机逃逸漏洞,但不意味着将来不会有,无法预测。一旦出现这种漏洞,危害是巨大的,攻击者可以直接进入主机系统,进而入侵内部网络,威胁整个云的安全 Dom0 OS OS OS Hypervisor CPU Memory NIC 精明的攻击者能够突破虚拟机,获得管理程序并控制在主机上运行的其他虚拟机
对虚拟机逃逸的防范 我们无法从技术上杜绝这种攻击,因此我们需要对这种攻击做出防范 攻击监控和报警 物理主机隔离 Guest OS隔离 虚拟机快照,捕捉攻击现场
虚拟机热迁移的安全 虚拟机热迁移时数据在网络间明文传输 虚拟机内存中的信息会被嗅探 内存数据传输时存在中间人攻击的可能,系统或数据会被篡改 XenMotion:是指在一个Pool中的XenServer之间,可以对Running Guest OS进行在两个节点中,不中断Guest OS服务(不停机)的情况下来回迁移。 使用XenMotion协议带来的问题
更玄的方式? 隐蔽通道 同一hypervisor上的虚拟机可以通过CPU的负载传输隐蔽信息,这种通信是无法被监控的,但对于企业威胁性仅存在于理论上。因为与其使用这么复杂的传输方式,还不如使用其他rootkit。 CPU和资源虚拟化可能暴露时间、内存和计算速度等信息,攻击者可利用这些信息建立隐蔽通道。
制造一个封闭的Xen 服务变轻 权限变小 不可逆的虚拟资源发现 更多的使用自动化 针对存储,比如数据卷的挂接,不能被同一权限的人发现,不能通过突破Xen后,找到数据来源。找到管理平台的通道信息,找到与Xen相关的管理信息。在内存中加密
谢谢!