虛擬化概述
概念:
-
在虛擬環境裏,虛擬機監控器(VMM)搶佔了操作系統的位置,編程的物理機的管理者,同時向上層的軟件呈現出虛擬的硬件平臺,欺騙着上層的操作系統
-
虛擬機可以看做是物理機的一種高效隔離的複製。
-
敏感指令: 操作特權資源的指令,特權指令往往是敏感指令,但特權指令並不僅僅包含特權指令
-
虛擬化漏洞: 如果一個體系存在敏感指令不是特權指令,那麼就稱其存在虛擬化漏洞
虛擬化漏洞是可以採用一些手段來彌補或避免的如:
- 虛擬機所有指令都採用模擬方式實現
- 修改guest 的操作系統,避免非特權的敏感指令
- 二進制掃描修補替換掉非特權的敏感指令
處理器虛擬化
guest對虛擬處理器的期望:
- 指令集合與執行效果
- 可用的寄存器集合
- 運行模式
- 地址翻譯
- 保護機制
- 中斷、異常機制
指令的模擬
VMM運行在最高特權級,而guest運行在非最高特權級(但guest OS認爲自己運行在最高特權級),當guest訪問特權資源時,會觸發異常,跳轉到VMM設置好的處理函數中去(陷入VMM),通過軟件方式模擬這條敏感指令。
-
VMM 會通過各種手段來保證敏感指令能觸發異常(不被物理CPU所直接執行),從而陷入到VMM中進行模擬
-
例如:
- guest訪問CRO寄存器
- 處理器發現特權級別不符,拋出異常
- VMM截獲這個異常,模擬這條指令
幾種陷入方式:
- 基於處理器保護機制觸發異常
- 虛擬機主動觸發異常
- 異步中斷