世界末日
在基于虚拟机管理程序的主机环境下,最糟糕的一幕是什么?那就是虚拟机管理程序被劫持(hyperjacking),即安全漏洞导致了平台受到危及,不法分子从而得以全面访问某台机器上的所有来宾操作系统。恶意软件在破坏虚拟机管理程序的过程中,轻而易举就能掩藏行踪,安装在基于主机操作系统分区上或者虚拟机管理程序上一层的任何软件层上的传统安全工具发现不了。
这种存在漏洞的情形就好比这种威胁:精心掩盖的rookit对独立的服务器操作系统构成了安全威胁。如果你操纵了虚拟机管理程序,也就操纵了经过虚拟机管理程序传送的所有数据,而且完全有条件采样、重定向或者欺骗对你胃口的任何内容。要是没有某种故障防护机制,来宾操作系统根本不知道自己就在岌岌可危的平台上运行。
如果涉及的是那些大规模的虚拟化平台,在一个硬件系统上提供10个、50个乃至上百个虚拟服务器,那这正是可怕之处。控制权旁落他人、经济蒙受收入的潜在风险极大。
解决办法就是,在部署多道故障防护机制时保持虚拟机管理程序的完整性,以便虚拟操作系统能够确保与之通信的虚拟机管理程序没有受到破坏,虚拟机管理程序可以充当通向底层硬件和外部连接的桥梁。如果在核心层(Ring 0)外面运行未经修改的操作系统,虚拟机管理程序就必须拦截“违禁的”Ring 0指令,并在其他地方仿真这些指令――而来宾操作系统不知道发生的情况。硅生产商期望能在这方面助一臂之力;比如说,英特尔和AMD两家公司针对虚拟机市场而推出的新芯片,就能够在Ring 0下面插入一个新的特权层。两家公司新提供的机器代码指令都只能在Ring 1层执行,旨在归虚拟机管理程序管理。这样一来,来宾操作系统不必修改,并且减小了仿真操作给性能带来的影响。
虚拟机管理程序的任务就是让每个来宾操作系统确信:只有它才能访问主机服务器上的物理资源,同时协调好各路访问,确保各程序和数据不会从操作系统外泄出去。最新芯片组上的虚拟化平台上使用了额外的代码特权层,这样万一出现安全泄密或者应用程序异常,厂商们就可以减小行为失常的来宾操作系统造成的不利影响。
为了进一步尽量减小安全受到危及的平台拦截来宾操作系统与底层硬件之间的通信这种风险,就需要部署某种交易确认机制。
可信计算组织得到最广泛采用的标准是可信平台模块(TPM)。TPM是可信虚拟机管理程序的一个关键部分,提供了基于硬件的可信任的根证书、用于进行度量的可信位置,以及用来存储度量标准的几个存储库。TPM硬件加密提供了一种有保障的方法,以便来宾操作系统可以审查与虚拟机管理程序之间的通信。
TPM的目的是提供篡改检测及预防;比如说,英特尔实施的技术在托管平台上提供了可信虚拟机监视程序白名单。TPM在任何软件加载之前启用,让用户对启动顺序做到心里有把握,同时确保在加装过程中每个系统部分真实无误。简而言之,只有虚拟机管理程序加装之后处于已知、可信的状态,TPM才会把平台的控制大权交给它。
是不是觉得这些概念很耳熟?在Vista的高级版本中,微软正是依赖基于芯片组的TPM来提供BitLocker功能,用于对保存在本地硬盘上的数据进行加密。英特尔和AMD的未来硬件平台也计划使用TPM,以便与附加外设之间建立可信路径,并依靠它来生成及保存对数据路径进行硬件级加密所需的独特密钥。这种加密机制,加上确认虚拟化组件的功能,有望为拦截TPM/虚拟机管理程序的切换加大难度,这样IT人员就更能确信操作系统与虚拟机管理程序之间的通信完好无损。