虚拟化概述
概念:
-
在虚拟环境里,虚拟机监控器(VMM)抢占了操作系统的位置,编程的物理机的管理者,同时向上层的软件呈现出虚拟的硬件平台,欺骗着上层的操作系统
-
虚拟机可以看做是物理机的一种高效隔离的复制。
-
敏感指令: 操作特权资源的指令,特权指令往往是敏感指令,但特权指令并不仅仅包含特权指令
-
虚拟化漏洞: 如果一个体系存在敏感指令不是特权指令,那么就称其存在虚拟化漏洞
虚拟化漏洞是可以采用一些手段来弥补或避免的如:
- 虚拟机所有指令都采用模拟方式实现
- 修改guest 的操作系统,避免非特权的敏感指令
- 二进制扫描修补替换掉非特权的敏感指令
处理器虚拟化
guest对虚拟处理器的期望:
- 指令集合与执行效果
- 可用的寄存器集合
- 运行模式
- 地址翻译
- 保护机制
- 中断、异常机制
指令的模拟
VMM运行在最高特权级,而guest运行在非最高特权级(但guest OS认为自己运行在最高特权级),当guest访问特权资源时,会触发异常,跳转到VMM设置好的处理函数中去(陷入VMM),通过软件方式模拟这条敏感指令。
-
VMM 会通过各种手段来保证敏感指令能触发异常(不被物理CPU所直接执行),从而陷入到VMM中进行模拟
-
例如:
- guest访问CRO寄存器
- 处理器发现特权级别不符,抛出异常
- VMM截获这个异常,模拟这条指令
几种陷入方式:
- 基于处理器保护机制触发异常
- 虚拟机主动触发异常
- 异步中断