啟用程式碼完整性的虛擬化型保護
警告
某些應用程式和硬體設備驅動器可能與記憶體完整性不相容。 此不相容可能會導致裝置或軟體故障,在極少數情況下,可能會導致開機失敗 (藍色畫面) 。 這類問題可能會在記憶體完整性已開啟或啟用程式本身期間發生。 如果發生相容性問題,請參閱針對補救步驟 進行疑難解答 。
記憶體完整性 是 Windows 中可用的虛擬化型安全 (VBS) 功能。 記憶體完整性和 VBS 可改善 Windows 的威脅模型,並針對嘗試惡意探索 Windows 核心的惡意代碼提供更強大的保護。 VBS 會使用 Windows Hypervisor 來建立隔離的虛擬環境,以成為假設核心可能遭到入侵之 OS 的信任根目錄。 記憶體完整性是一個重要元件,可藉由在 VBS的隔離虛擬環境中執行內核模式程式代碼完整性來保護和強化 Windows。 記憶體完整性也會限制可用來危害系統的核心記憶體配置。
注意
- 記憶體完整性有時稱為 受 Hypervisor 保護的程式代碼完整性, (HVCI) 或 Hypervisor 強制執行的程式代碼完整性,最初是作為 Device Guard 的一部分發行。 除了在 群組原則 或 Windows 登錄中尋找記憶體完整性和 VBS 設定之外,不再使用 Device Guard。
- 使用 以模式為基礎的執行控制,以及具有 客體模式執行 陷阱功能的 AMD Zen 2 和更高處理器,Intel Kabylake 和更高處理器的記憶體完整性效果更好。 較舊的處理器依賴這些功能的模擬,稱為 「受限制的使用者模式」,而且會對效能產生更大的影響。 啟用巢狀虛擬化時,當 VM 版本 >= 9.3 時,記憶體完整性會更好運作。
記憶體完整性功能
- 保護內核模式驅動程式的控制流程防護 (CFG) 位圖的修改。
- 保護核心模式程式代碼完整性程式,確保其他受信任的核心進程具有有效的憑證。
如何開啟記憶體完整性
若要在整個企業中支援硬體的 Windows 裝置上啟用記憶體完整性,請使用下列任何選項:
使用 Windows 安全性 啟用記憶體完整性
記憶體完整性可以在 Windows 安全性 設定中開啟,並可在 Windows 安全性>Device 安全>性核心隔離詳細數據>記憶體完整性中找到。 如需詳細資訊,請參閱 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-RADIUS 2 虛擬化型安全性 3 Intel TDX
使用 msinfo32.exe
判斷可用和啟用 VBS 功能的另一種方法是從提升許可權的PowerShell工作階段執行 msinfo32.exe。 當您執行此程式時,VBS 功能會顯示在 [ 系統摘要 ] 區段的底部。
疑難排解
- 如果設備驅動器無法在運行時間載入或當機,您可能可以使用 裝置管理員 更新驅動程式。
- 如果您在開機期間遇到嚴重錯誤,或開啟記憶體完整性之後您的系統不穩定,您可以使用 Windows 修復環境 (Windows RE) 進行復原。
首先,停用用來啟用 VBS和記憶體完整性的任何原則,例如 群組原則。
然後,開機至受影響計算機上的 Windows RE,請參閱 Windows RE 技術參考] 。
登入 Windows RE 之後,請將記憶體完整性登錄機碼設定為關閉:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 0 /f
最後,重新啟動您的裝置。
注意
如果您使用 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
退出虛擬化型安全性。