啟用程式碼完整性的虛擬化型保護

警告

某些應用程式和硬體裝置驅動程式可能與記憶體完整性不相容。 這種不相容可能會導致裝置或軟體故障,在極少數情況下可能會導致啟動失敗 (藍色螢幕) 。 這類問題可能會在開啟記憶體完整性之後,或啟用程序本身期間發生。 如果發生相容性問題,請參閱補救步驟的 疑難排解 。

記憶體完整性 是在 Windows 中提供的虛擬化型安全性 (VBS) 功能。 記憶體完整性和 VBS 改善 Windows 的威脅模型,並提供更強的保護,以抵禦試圖利用 Windows 核心的惡意程式碼。 VBS 使用 Windows Hypervisor 建立隔離的虛擬環境,該環境會成為假定核心可能受到入侵之作業系統的根信任根目錄。 記憶體完整性是重要的元件,可在 VBS 的隔離虛擬環境中執行核心模式程式碼完整性,以保護和強化 Windows。 記憶體完整性也會限制可用於危害系統的核心記憶體配置。

注意

  • 記憶體完整性有時稱為 HVCI) 或 Hypervisor 強制程式碼完整性 (Hypervisor 保護的程式碼完整性,並且最初是作為 Device Guard 的一部分發行。 除了在群組原則或 Windows 登錄中尋找記憶體完整性和 VBS 設定外,不再使用 Device Guard。
  • 記憶體完整性更適用於具有模式 型執行控制的 Intel Kabylake 和更高版本處理器,以及具有 訪客模式執行陷阱 功能的 AMD Zen 2 和更高版本處理器。 較舊的處理器依賴這些功能的模擬,稱為 受限制的使用者模式,並且會對效能產生較大的影響。 啟用巢狀虛擬化時,當 VM 版本 >= 9.3 時,記憶體完整性運作效果更好。
  • 選取了 [使用 DMA 安全開機] 的 Azure VM 不支援記憶體完整性。 如果選取此選項,VBS 將顯示為啟用,但未執行。 因此,請務必只使用下列其中一種方法來選擇 [安全開機 ]。

記憶體完整性功能

  • 保護核心模式驅動程式的控制流量防護 (CFG) 點陣圖的修改。
  • 保護核心模式程式碼完整性處理程序,確保其他受信任的核心處理程序具有有效的憑證。

如何開啟記憶體完整性

若要在企業中具有支援硬體的 Windows 裝置上啟用記憶體完整性,請使用下列其中一個選項:

使用 Windows 安全性啟用記憶體完整性

記憶體完整性可以在 Windows 安全性設定中開啟,並在 Windows 安全性>裝置安全性>核心隔離詳細資料>記憶體完整性。 如需詳細資訊,請參閱 Windows 安全性中的裝置保護。

從 Windows 11 22H2 開始,如果記憶體完整性已關閉,Windows 安全性會顯示警告。 警告指示器也會出現在 Windows 工作列和 Windows 通知中心的 Windows 安全性圖示上。 使用者可以在 Windows 安全性中關閉警告。

驗證已啟用的 VBS 和記憶體完整性功能

使用Win32_DeviceGuard WMI 類別

Windows 10、Windows 11、Windows Server 2016 及更新版本具有 VBS 相關屬性和功能的 WMI 類別:Win32_DeviceGuard。 這個類別可以透過使用下列命令,從提升權限的 Windows PowerShell 工作階段查詢:

Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard

注意

僅從 Windows 10 版本 1803 和 Windows 11 版本 21H2 開始,以模式為基礎的執行控制屬性會列為可用。 此值針對 Intel 的 模式型執行控制 和 AMD 的 客體模式執行陷阱 功能都會報告。

此命令的輸出提供可用基於硬體的安全性功能和目前啟用的功能的詳細資訊。

  • InstanceIdentifier:特定裝置唯一的字串,由 WMI 設定。

  • 版本:此欄位會列出此 WMI 類別的版本。 現在唯一的有效值是 1.0。

  • AvailableSecurityProperties:這個欄位可協助列舉和報告 VBS 和記憶體完整性的相關安全性內容狀態。

    值 描述
    0 如果出現,表示裝置上沒有相關的屬性。
    1 如果出現,表示提供 Hypervisor 支援。
    2 如果出現,表示可以使用安全開機。
    3 如果出現,表示可以使用 DMA 保護。
    4 如果出現,表示可以使用安全記憶體覆寫。
    5 如果出現,表示可以使用 NX 保護。
    6 如果出現,表示可以使用 SMM 安全防護。
    7 如果存在,可以使用 MBEC/GMET。
    8 如果存在,則 APIC 虛擬化可供使用。
  • CodeIntegrityPolicyEnforcementStatus:此欄位指出程式碼完整性原則強制執行狀態。

    值 描述
    0 關閉
    1 稽核。
    2 已強制執行。
  • RequiredSecurityProperties:此欄位描述啟用 VBS 所需的安全性屬性。

    值 描述
    0 不需要任何項目。
    1 如果出現,表示需要 Hypervisor 支援。
    2 如果出現,表示需要安全開機。
    3 如果出現,表示需要 DMA 保護。
    4 如果出現,表示需要安全記憶體覆寫。
    5 如果出現,表示需要 NX 保護。
    6 如果出現,表示需要 SMM 安全防護。
    7 如果存在,則需要 MBEC/GMET。
  • SecurityServicesConfigured:此欄位指出是否已設定 Credential Guard 或記憶體完整性。

    值 描述
    0 未設定任何服務。
    1 如果出現,表示已設定 Credential Guard。
    2 如果存在,則已設定記憶體完整性。
    3 如果存在,則已設定系統防護安全啟動。
    4 如果存在,則已設定 SMM 韌體測量。
    5 如果存在,則已設定核心模式硬體強制堆疊保護。
    6 如果存在,會在稽核模式中設定核心模式硬體強制堆疊保護。
    7 如果存在,則已設定 Hypervisor-Enforced 傳呼翻譯。
  • SecurityServicesRunning:此欄位指出 Credential Guard 或記憶體完整性是否正在執行。

    值 描述
    0 未執行任何服務。
    1 如果出現,表示 Credential Guard 正在執行。
    2 如果存在,表示記憶體完整性正在執行。
    3 如果存在,系統防護安全啟動正在執行。
    4 如果存在,表示 SMM 韌體測量正在執行。
    5 如果存在,則核心模式硬體強制堆疊保護正在執行。
    6 如果存在,核心模式硬體強制堆疊保護正在稽核模式中執行。
    7 如果存在,Hypervisor-Enforced 正在執行分頁翻譯。
  • SmmIsolationLevel:此欄位表示 SMM 隔離層級。

  • UsermodeCodeIntegrityPolicyEnforcementStatus:此欄位指出使用者模式程式碼完整性原則強制執行狀態。

    值 描述
    0 關閉
    1 稽核。
    2 已強制執行。
  • VirtualizationBasedSecurityStatus:此欄位指出 VBS 是否已啟用並執行中。

    值 描述
    0 未啟用 VBS。
    1 VBS 已啟用但未執行。
    2 VBS 已啟用並且正在執行。
  • VirtualMachineIsolation:此欄位指出是否啟用虛擬機器隔離。

  • VirtualMachineIsolationProperties:此欄位表示可用的虛擬機器隔離屬性集。

    值 描述
    1 AMD SEV-SNP
    2 虛擬型安全性
    3 Intel TDX

使用 msinfo32.exe

另一個判斷可用且已啟用 VBS 功能的方法是從提升權限的 PowerShell 工作階段執行 msinfo32.exe。 當您執行此程式時,VBS 功能會顯示在 [系統摘要 ] 區段底部。

系統資訊摘要中以虛擬化為基礎的安全性功能。

疑難排解

  • 如果裝置驅動程式無法載入或在執行階段當機,您可以使用裝置管理員更新驅動程式。
  • 如果在開機期間遇到嚴重錯誤,或者開啟記憶體完整性後系統不穩定,您可以使用 Windows 修復環境 (Windows RE) 進行修復。
    1. 首先,停用任何用來啟用 VBS 和記憶體完整性的原則,例如群組原則。

    2. 然後,在受影響的電腦上開機至 Windows RE,請參閱 Windows RE 技術參考。

    3. 登入 Windows RE 後,將記憶體完整性登錄機碼設為關閉:

      reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 0 /f
      
    4. 最後,重新啟動您的裝置。

注意

如果您使用 UEFI 鎖定開啟記憶體完整性,則必須停用安全開機,才能完成 Windows RE 復原步驟。

虛擬機器中的記憶體完整性部署

記憶體完整性可以保護 Hyper-V 虛擬機器,就像保護實體機器一樣。 在虛擬機器內啟用記憶體完整性的步驟相同。

記憶體完整性可防範在客體虛擬機器中執行的惡意程式碼。 它不會提供來自主機系統管理員的額外保護。 您可以從主機停用虛擬機器的記憶體完整性:

Set-VMSecurity -VMName <VMName> -VirtualizationBasedSecurityOptOut $true

在 Hyper-V 虛擬機器上執行記憶體完整性的需求

  • Hyper-V 主機必須至少執行 Windows Server 2016 或 Windows 10 版本 1607。
  • Hyper-V 虛擬機器必須是「第 2 代」,並且至少執行 Windows Server 2016 或 Windows 10。
  • 可以同時啟用記憶體完整性和 巢狀虛擬化 。 要在虛擬機器上啟用 Hyper-V 角色,必須首先在 Windows 巢狀虛擬化環境中安裝 Hyper-V 角色。
  • 虛擬光纖通道配接器與記憶體完整性不相容。 在將虛擬光纖通道配接器連接至虛擬機器之前,您必須先使用 Set-VMSecurity選擇退出虛擬化型安全性。
  • 傳遞磁碟的 AllowFullSCSICommandSet 選項與記憶體完整性不相容。 在使用 AllowFullSCSICommandSet 設定傳遞磁碟之前,您必須先使用 Set-VMSecurity選擇退出虛擬化型安全性。