虛擬化安全性 (VBS)

虛擬化型安全性或 VBS 會使用硬體虛擬化和 Windows Hypervisor 來建立隔離的虛擬環境,以成為操作系統的根信任,該操作系統假設核心可能會遭到入侵。 Windows 會使用此隔離環境來裝載一些安全性解決方案,為它們提供大幅提升的操作系統弱點防護,並防止使用嘗試擊敗保護的惡意探索。 VBS 會強制執行限制來保護重要的系統和操作系統資源,或保護安全性資產,例如已驗證的用戶認證。

其中一個這類安全性解決方案是 記憶體完整性,它會在 VBS的隔離虛擬環境中執行核心模式程式代碼完整性來保護和強化 Windows。 核心模式程式代碼完整性是 Windows 進程,會在啟動之前檢查所有核心模式驅動程式和二進位檔,並防止未簽署或未受信任的驅動程式或系統檔案載入系統記憶體。 記憶體完整性也會限制可用來危害系統的核心記憶體配置,確保核心記憶體頁面只有在安全運行時間環境內傳遞程式代碼完整性檢查之後才會成為可執行檔,而且可執行檔頁面本身絕不可寫入。 如此一來,即使緩衝區溢位之類的弱點允許惡意代碼嘗試修改記憶體,也無法修改可執行文件代碼頁,而且無法將修改的記憶體設為可執行檔。

注意

記憶體完整性有時稱為受 Hypervisor 保護的程式代碼完整性(HVCI)Hypervisor 強制執行的程式代碼完整性,且最初是作為 Device Guard一部分發行。 除了在組策略或 Windows 登錄中尋找記憶體完整性和 VBS 設定之外,不再使用 Device Guard。

VBS 需要存在並正確設定下列元件。

請注意,TPM 不是必要條件,但我們強烈建議實作 TPM。

硬體需求 詳細資料
64 位元 CPU 虛擬化式安全性 (VBS) 需要 Windows Hypervisor,其僅支援 64 位 IA 處理器與虛擬化延伸模組,包括 Intel VT-X 和 AMD-v。
第二層位址轉譯 (SLAT) VBS 也要求處理器的虛擬化支援包含第二層地址轉換 (SLAT),Intel VT-X2 與擴充頁面表 (EPT), 或 AMD-v 與快速虛擬化索引編製 (RVI) 。
IOMMU 或 SMMU (Intel VT-D、AMD-Vi、Arm64 SMMU) 所有能夠 DMA 的 I/O 裝置都必須位於 IOMMU 或 SMMU 後方。 IOMMU 可用來增強系統針對記憶體攻擊的復原能力。
信賴平台模組 (TPM) 2.0 TPM,可以是離散或韌體,都已足夠。 如需詳細資訊,請參閱 信賴平臺模組 (TPM) 2.0
SMM 保護的韌體支援 系統韌體必須遵守強化 Windows SMM 安全性風險降低數據表 (WMST) 規格中所述之 SMM 程式代碼的建議。 WSMT 規格包含 ACPI 數據表的詳細數據,該數據表是針對支援 VBS 功能的 Windows 操作系統所建立。 韌體必須實作 WSMT 規格中所述的保護,並依照規格中所述設定對應的保護旗標,以向操作系統報告這些需求的合規性。
整合可擴展韌體介面 (UEFI) 記憶體報告 UEFI 韌體必須遵守下列記憶體對應報告格式和記憶體配置指導方針,才能讓韌體確保與 VBS的相容性。

  • UEFI v2.6 記憶體屬性數據表 (MAT) - 為了確保與 VBS 的相容性,韌體必須清楚分隔程式代碼和數據EFI運行時間記憶體範圍,並將此報告給操作系統。 適當的 EFI 運行時間記憶體範圍隔離和報告可讓 VBS 將必要的頁面保護套用至 VBS 安全區域內的 EFI 運行時間服務代碼頁。 使用 EFI_MEMORY_ATTRIBUTES_TABLE 來完成將這項資訊傳達給OS。 若要實作 UEFI MAT,請遵循下列指導方針:
    1. 此數據表必須描述整個EFI運行時間。
    2. EfiRuntimeServicesData 和 EfiRuntimeServicesCode 頁面的所有適當屬性都必須標示。
    3. 這些範圍必須對齊頁面界限 (4KB),而且不能重疊。
  • EFI 頁面保護 -所有專案都必須包含屬性EFI_MEMORY_RO、EFI_MEMORY_XP或兩者。 標示為可執行檔的所有 UEFI 記憶體都必須是唯讀的。 標示為可寫入的記憶體不得為可執行檔。 專案不一定保留屬性集,表示可執行檔和可寫入的記憶體。
  • 安全記憶體覆寫要求 (MOR) 修訂 2 安全 MOR v2 已增強,可使用 UEFI 安全變數來保護 MOR 鎖定設定。 這有助於防範進階記憶體攻擊。 如需詳細資訊,請參閱 安全 MOR 實作
    記憶體完整性相容驅動程式 請確定所有系統驅動程式都已經過測試並驗證,使其與記憶體完整性相容。 Windows 驅動程式套件驅動程式驗證器包含驅動程式與記憶體完整性相容性的測試。 驗證驅動程式相容性有三個步驟:
    1. 使用驅動程式驗證器,並啟用程式 代碼完整性相容性 檢查。
    2. Windows HLK 中執行 Hypervisor 程式代碼完整性整備測試
    3. 在已啟用 VBS 和記憶體完整性的系統上測試驅動程式。 此步驟必須以記憶體完整性來驗證驅動程序的行為,因為靜態程式代碼分析工具根本無法偵測運行時間可能發生的所有記憶體完整性違規。

    VBS 適用於具有巢狀虛擬化支援的 VM。 這包括所有 Gen2 VM,以及支援巢狀虛擬化的 Gen1 VM。 下表詳述支援的 VM 系列清單。

    VM 系列名稱 巢狀虛擬化 VM Gen
    Av2 Yes 1 (某些內部大小支援第 2 代)
    B No 1 和 2
    Dsv2/Dv2/Dv3/Ev3 Yes 1
    Dsv3/Ddsv3 Yes 1 和 2
    Dsv4/Ddsv4 Yes 1 和 2
    Esv3/Edsv3 Yes 1 和 2
    Esv4/Edsv4 Yes 1 和 2
    Ev4/Edv4 Yes Ev4 - 僅限 1
    Edv4 -1&2
    Dv4/Ddv4 Yes 1 和 2
    Dv5/Ddv5/Dsv5/Ddsv5 Yes 1 和 2
    Ev5/Edv5/Esv5/Edsv5 Yes 1 和 2
    Dasv5/Dadsv5/Easv5/ Eadsv5 Yes 1 和 2
    Ebsv5/Edbsv5 Yes 1 和 2
    Fsv2 Yes 1 和 2
    外匯 Yes 2
    Lsv2 Yes 1 和 2

    如需 Hyper-V 的詳細資訊,請參閱 Windows Server 2016 上的 Hyper-V 或 Windows 10 上的 Hyper-V 簡介。 如需 Hypervisor 的詳細資訊,請參閱 Hypervisor 規格