原始發佈日期: 2024 年 8 月 13 日
KB 識別碼: 5042562
Windows 10 將於 2025 年 10 月終止支援
2025 年 10 月 14 日之後,Microsoft 將不再提供 Windows Update、技術協助或 Windows 10 安全性問題修正的免費軟體更新。 您的電腦仍可運作,但我們建議您移至 Windows 11。
關於 SkuSiPolicy.p7b 原則的重要注意事項
SkuSiPolicy.p7b 原則已更新。 您應該安裝 2025 年 1 月或之後發行的最新 Windows 更新,以套用更新的原則。 如需套用更新原則的指示,請參閱 部署Microsoft簽署的撤銷原則 (SkuSiPolicy.p7b) 一節。
本文內容
摘要
Microsoft 發現 Windows 中的弱點,此弱點可讓具有系統管理員權限的攻擊者取代具有較舊版本的更新 Windows 系統檔案,讓攻擊者能夠利用虛擬化型安全性 (VBS) 重新使用弱點。 這些二進位文件的復原可能會讓攻擊者規避 VBS 安全性功能,並移除受 VBS 保護的資料。 CVE-2024-21302 | Windows 安全核心模式權限提高弱點中說明了此問題。
若要解決此問題,我們將撤銷未更新的弱點 VBS 系統檔案。 由於必須封鎖大量 VBS 相關檔案,我們使用替代方法來封鎖未更新的檔案版本。
影響範圍
支援 VBS 的所有 Windows 裝置都會受到此問題影響。 這包括內部部署實體裝置和虛擬機 (VM)。 Windows 10 及更新版本 Windows 以及 Windows Server 2016 和更新版本的 Windows Server 都支援 VBS。
您可以透過 Microsoft 系統資訊工具 (Msinfo32.exe)檢查 VBS 狀態。 此工具會收集您的裝置相關資訊。 開始 Msinfo32.exe 之後,向下捲動到虛擬化型安全性資料列。 如果此列的值為執行,VBS 會啟用並執行。
您也可以使用 Win32_DeviceGuard WMI 類別,在 Windows PowerShell 中檢查 VBS 狀態。 若要從 PowerShell 查詢 VBS 狀態,請開啟提升權限的 Windows PowerShell 工作階段,然後執行下列命令:
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
執行上述 PowerShell 命令之後,VBS 狀態應為下列其中一項。
欄位名稱 |
狀態 |
VirtualizationBasedSecurityStatus |
|
可用的風險降低措施
對於所有支援的 Windows 10 版本、版本 1507 及更新版本的 Windows,以及 Windows Server 2016 和更新版本 Windows Server 版本,系統管理員可以部署Microsoft簽署的撤銷原則 (SkuSiPolicy.p7b) 。 這會封鎖未由作業系統載入未更新 VBS 系統檔案的弱點版本。
當此原則套用到 Windows 裝置時,原則也會透過在 UEFI 韌體中新增變數來鎖定至裝置。 啟動期間,原則載入和 Windows 會封鎖違反原則的二進位檔載入。 如果已套用 UEFI 鎖定,且原則已移除或以舊版取代,Windows 開機管理程式將不會啟動,而且裝置也不會啟動。 此開機失敗不會顯示錯誤,系統將會繼續進行下一個可用的開機選項,這可能會導致開機迴圈。
若要讓原則減輕功能正常運作,原則必須使用 Windows 維護更新來更新,因為 Windows 的元件和原則必須來自同一個版本。 如果將原則降低功能複製到裝置,則如果套用了錯誤版本的降低功能,裝置可能無法啟動,或是降低功能降低功能可能無法如預期般運作。 此外,KB5025885 中所述的效能風險降低功能應該會套用到您的裝置。
了解風險降低
套用 Microsoft 簽署的撤銷原則之前,您必須先留意潛在風險。 請先檢閱這些風險,在套用風險降低之前,對修復媒體進行任何必要的更新。
-
使用者模式程式碼完整性 (UMCI)。 Microsoft 簽署的撤銷原則會啟用使用者模式程式碼完整性,讓原則中的規則套用至使用者模式二進位檔。 UMCI 預設也會啟用動態程序代碼安全性。 強制執行這些功能可能會導致應用程式和指令碼的相容性問題,並可能導致它們無法執行,並且對啟動時間產生效能影響。 部署風險更新前,請遵從指引以部署稽核模式原則,測試潛在問題。
-
UEFI 鎖定和解除更新。 在裝置上套用 Microsoft 簽署撤銷原則的 UEFI 鎖定之後,裝置無法透過卸載 Windows 更新、使用還原點或其他方式來還原,如果您繼續套用安全開機。 如果已套用 UEFI 鎖定,即使重新格式化磁碟,也不會移除該功能降低功能的 UEFI 鎖定。 這表示,如果您嘗試將 Windows OS 還原為先前沒有套用風險降低功能的狀態,裝置將不會啟動,不會顯示任何錯誤訊息,UEFI 將會繼續進行下一個可用的開機選項。 這可能會導致開機迴圈。 您必須停用安全開機才能移除 UEFI 鎖定。 在將本文所述的撤銷套用至您的裝置之前,請注意所有可能的影響並進行徹底測試。
-
外部開機媒體。 UEFI 鎖定安全功能套用到裝置之後,外部開機媒體必須以裝置上安裝的最新 Windows 更新來更新。 如果外部開機媒體未更新為相同的 Windows Update 版本,裝置可能不會從該媒體開機。 在套用風險降低功能之前,請參閱更新外部開機媒體一節中的指示。
-
Windows 修復環境。 在裝置上套用 SkuSipolicy.p7b 之前,裝置上的 Windows 修復環境 (WinRE)必須 先更新裝置上安裝的最新 Windows 更新。 省略此步驟可能會使 WinRE 無法執行重設計算機功能。 如需詳細資訊,請參閱將更新套件新增至 Windows RE。
-
開機前執行環境 (PXE) 開機。 如果安全性安全部署到裝置,而您嘗試使用 PXE 開機,除非最新的 Windows 更新也套用到 PXE 伺服器開機映像,否則裝置將無法啟動。 除非 PXE 開機伺服器已更新至 2025 年 1 月或之後發行的最新 Windows 更新,包括 PXE 開機管理員,否則我們不建議將安全性部署到網路開機來源。
風險降低措施部署指導方針
若要解決本文所述的問題,您可以部署 Microsoft 簽署的撤銷原則 (SkuSiPolicy.p7b)。 此降低功能僅支援 Windows 10 版、版本 1507 和更新版本的 Windows,以及 Windows Server 2016。 在您將 Microsoft 簽署的撤銷原則部署 (SkuSiPolicy.p7b) 之前,您應該使用稽核模式原則測試相容性問題。
注意 如果您使用 BitLocker,請確定您的 BitLocker 修復金鑰已備份。 您可以從系統管理員命令提示執行下列命令,並記住 48 位數的數字密碼:
manage-bde -protectors -get %systemdrive%
部署稽核模式原則
Microsoft 簽署的撤銷原則 (SkuSiPolicy.p7b) 會強制執行使用者模式程式碼完整性 (UMCI) 和動態程式碼安全性。 這些功能可能與客戶應用程式有相容性問題。 部署風險降低之前,您應該先部署稽核原則來偵測相容性問題。
您有兩個稽核原則選項:
-
使用提供的 SiPolicy.p7b 稽核原則,
-
或者,從提供的 XML 檔案編譯您自己的稽核原則二進位檔。
建議您使用提供的 SiPolicy.p7b 稽核原則二進位檔,除非您已部署現有的 Windows Defender 應用程式控制 (WDAC) 原則。 提供的稽核原則二進位不會鎖定 UEFI。 套用稽核原則之前,不需要更新外部開機媒體和復原媒體。
Windows 程式碼完整性會根據稽核原則中的規則評估使用者和核心模式二進位檔。 如果程式碼完整性識別違反原則的應用程式或指令碼,將會產生一個 Windows 事件記錄事件,其中包含封鎖的應用程式或指令碼的相關資訊,以及強制原則的相關資訊。 這些事件可用來判斷您的裝置上是否有使用不相容的應用程式或指令碼。 如需詳細資訊,請參閱 Windows 事件記錄一節。
SiPolicy.p7b 稽核原則包含在所有支援的 Windows作系統的最新 Windows 更新中。 只有安裝最新的維護更新,然後遵循下列步驟,才能套用此稽核原則至裝置:
-
從提高權限的 Windows PowerShell 提示中執行下列命令:
# Initialize policy location and destination
$PolicyBinary = $env:windir+"\System32\SecureBootUpdates\VbsSI_Audit.p7b"
$DestinationBinary = $env:windir+"\System32\CodeIntegrity\SiPolicy.p7b"
# Copy the audit policy binary
Copy-Item -Path $PolicyBinary -Destination $DestinationBinary -force
-
重新開機裝置。
-
使用原則啟用事件區段中的資訊,確認原則已載入在事件檢視器中。
-
在套用原則以識別相容性問題時,使用應用程式和指令碼進行測試。
若要解除安裝 SiPolicy.p7b 稽核原則,請遵循下列步驟:
-
從提高權限的 Windows PowerShell 提示中執行下列命令:
# Initialize policy location
$PolicyBinary = $env:windir+"\System32\CodeIntegrity\SiPolicy.p7b"
# Remove SiPolicy.p7b
Remove-Item -Path $PolicyBinary -force
-
重新開機裝置。
-
使用原則啟用事件區段中的資訊,確認稽核原則尚未載入在事件檢視器中。
如果您使用 WDAC 來管理允許在裝置上執行的應用程式和驅動程式,您可能已經使用名為「SiPolicy.p7b」的原則。 對於所有支援的 windows作系統,包括 Windows 10、版本 21H2 及更新版本的 Windows 版本,以及 Windows Server 2022 和更新版本 Windows Server 版本,您可以使用 WDAC 多重原則格式,使用提供的 XML 檔案來建置和部署稽核原則。 如需建立及部署稽核原則二進位的指示,請參閱部署 Windows Defender 應用程式控制 (WDAC) 原則。
在已安裝最新 Windows 更新的裝置上可以使用含有稽核原則規則的 XML 檔案。 XML 檔案位於 「%systemroot%\schemas\CodeIntegrity\ExamplePolicies\VbsSI_Audit.xml」底下。
部署 Microsoft 簽署的撤銷原則 (SkuSiPolicy.p7b)
Microsoft簽署的撤銷原則會包含在最新的 Windows 更新中。 此原則僅應透過安裝 2025 年 1 月或之後發行的最新可用 Windows 更新來套用至裝置,然後遵循下列步驟:
注意 如果缺少更新,裝置可能無法從已套用的風險降低功能啟動,或是風險降低功能可能無法如預期般運作。 部署原則之前,請務必使用最新的可用 Windows 更新來更新可開機的 Windows 媒體。 如需如何更新可開機媒體的詳細數據,請參閱更新外部開機媒體 一節。
-
在提高權限的 Windows PowerShell 提示中執行下列命令:
$PolicyBinary = $env:windir+"\System32\SecureBootUpdates\SkuSiPolicy.p7b" $MountPoint = 's:' $EFIDestinationFolder = "$MountPoint\EFI\Microsoft\Boot" mountvol $MountPoint /S if (-Not (Test-Path $EFIDestinationFolder)) { New-Item -Path $EFIDestinationFolder -Type Directory -Force } Copy-Item -Path $PolicyBinary -Destination $EFIDestinationFolder -Force mountvol $MountPoint /D
-
重新啟動您的裝置。
-
使用Windows 事件記錄區段中的資訊,確認原則已載入在事件檢視器中。
注意事項
-
部署 SkuSiPolicy.p7b 撤銷 (原則) 檔案後,您不應將它移除。 如果檔案已移除,您的裝置可能就無法再啟動。
-
如果您的裝置無法啟動,請參閱復原程序一節。
更新外部開機媒體
若要搭配已套用Microsoft簽署撤銷原則的裝置使用外部開機媒體,外部開機媒體必須更新為最新的 Windows 更新,包括開機管理器。 如果媒體不包含最新的 Windows 更新,媒體就不會啟動。
重要: 建議您在繼續之前先建立修復磁碟機。 此媒體可用來重新安裝裝置,以防發生硬體失敗等重大問題,您可以使用修復磁碟機來重新安裝 Windows。
使用下列步驟來更新外部開機媒體:
-
移至已安裝最新 Windows 更新的裝置。
-
將外部開機媒體裝載為磁碟機代號。 例如,將隨身碟掛接為 D:。
-
按兩下開始,在搜尋方塊中輸入建立修復磁碟機,然後按兩下建立修復機控制面板。 依照指示使用已安裝的隨身碟建立修復磁碟機。
-
安全移除已安裝的隨身碟。
如果您使用 以動態更新更新 Windows 安裝媒體 指導方針,在您的環境中管理可安裝的媒體,請依照下列步驟進行:
-
移至已安裝最新 Windows 更新的裝置。
-
依照使用 動態更新更新 Windows 安裝媒體中的步驟來建立已安裝最新 Windows 更新的媒體。
Windows 事件記錄檔
Windows 會在載入程式碼完整性原則時 (包括 SkuSiPolicy.p7b) 以及檔案因原則強制執行而遭到封鎖而無法載入時記錄事件。 您可以使用這些事件來確認已套用風險降低功能。
程式碼完整性記錄可在 Windows 事件檢視器中應用程式和服務記錄 > Microsoft > Windows > CodeIntegrity > 作業 > 應用程式和服務記錄 > 服務記錄 > Microsoft > Windows > AppLocker > MSI 和指令碼內提供。
如需程式碼完整性事件的詳細資訊,請參閱 Windows Defender 應用程式控制操作指南。
原則啟用事件
原則啟用事件可在 Windows 事件記錄中應用程式與服務記錄 > Microsoft > Windows > CodeIntegrity > 作業中提供。
「CodeIntegrity - 營運」事件記錄檔中的 CodeIntegrity 事件 3099 表示已載入原則,並包含載入原則的詳細數據。 活動中的資訊包括原則的自訂名稱、全域唯一識別碼 (GUID) ,以及原則雜湊。 如果有套用至裝置的多個程式碼完整性原則,將會出現多個 CodeIntegrity 事件 3099 事件。
套用提供的稽核原則時,將會發生下列資訊的事件:
-
PolicyNameBuffer – Microsoft Windows 虛擬化型安全性稽核原則
-
PolicyGUID – {a244370e-44c9-4c06-b551-f6016e563076}
-
PolicyHash – 98FC5872FD022C7DB400953053756A6E62A8F24E7BD8FE080C6525DFBCA38387
套用 Microsoft 簽署的撤銷原則 (SkuSiPolicy.p7b) 時,將會發生下列資訊的事件 (請參閱下方的 CodeIntegrity 事件 3099 螢幕擷取畫面):
-
PolicyNameBuffer – Microsoft Windows SKU SI 原則
-
PolicyGUID – {976d12c8-cb9f-4730-be52-54600843238e}
-
PolicyHash – 107E8FDD187C34CF8B8EA46A4EE99F0DB60F491650DC989DB71B4825DC73169D
如果您已將稽核原則或風險降低措施套用到您的裝置,且套用原則的 CodeIntegrity 事件 3099 不存在,則不會強制執行該原則。 請參閱部署指示以確認原則是否正確安裝。
注意 Windows 10 企業版 2016、Windows Server 2016 和 Windows 10 企業版 2015 長期維護 版本不支援程式代碼完整性事件 3099。 若要確認已套用原則 (稽核或撤銷原則) ,您必須使用 [mountvol.exe] 命令裝載 EFI 系統分區,並查看該原則已套用至 EFI 磁碟分區。 驗證之後,請務必取消 EFI 系統磁碟分區。
SkuSiPolicy.p7b - 撤銷原則
SiPolicy.p7b - 稽核原則
稽核並封鎖事件
程式碼完整性稽核和封鎖事件可在 Windows 事件檢視器中應用程式和服務記錄 > Microsoft > Windows > CodeIntegrity > 作業 > 應用程式和服務記錄 > Microsoft > Windows > AppLocker > MSI 和指令碼內提供。
前者的記錄位置包含有關可執行檔、dll 和驅動程式控制的事件。 後者的記錄位置包含 MSI 安裝程式、指令碼和 COM 物件控件的相關事件。
「CodeIntegrity – 作業」記錄中的 CodeIntegrity 事件 3076 是稽核模式原則的主要封鎖事件,表示如果強制執行原則,檔案會遭到封鎖。 此事件包含關於封鎖檔案和強制原則的資訊。 針對受到風險降低功能封鎖的檔案,事件 3077 中的原則資訊會與事件 3099 中稽核原則的原則資訊相符。
「CodeIntegrity – 營運」記錄中的 CodeIntegrity 事件 3077 表示可執行檔、.dll 或驅動程式已遭封鎖而無法載入。 此事件包含關於封鎖檔案和強制原則的資訊。 針對受到風險降低功能封鎖的檔案,CodeIntegrity 事件 3077 中的原則資訊會與事件 3099 中 SkuSiPolicy.p7b 的原則資訊相符。 如果裝置上沒有任何違反程式碼完整性原則的可執行檔、.dll 或驅動程式,將不會顯示 CodeIntegrity 事件 3077。
如需其他程式碼完整性稽核和封鎖事件,請參閱了解應用程式控制事件。
原則移除和復原程序
如果在套用風險降低功能後發生問題,您可以使用下列步驟來移除風險降低功能:
-
啟用 BitLocker 時,請將其暫停。 從提升權限的「命令提示字元」視窗執行下列命令:
Manager-bde -protectors -disable c: -rebootcount 3
-
從 UEFI BIOS 功能表關閉安全開機。停用安全開機中找到更多詳細資料。
關閉安全開機的程序在裝置製造商和型號之間是不同的。 如需有關如何關閉安全開機的說明,請參閱裝置製造商的文件。 您可以在 -
移除 SkuSiPolicy.p7b 原則。
-
正常啟動 Windows,然後登入。
SkuSiPolicy.p7b 原則必須從下列位置移除:-
<EFI 系統磁碟分區>\Microsoft\Boot\SkuSiPolicy.p7b
-
-
從提升許可權的 Windows PowerShell 工作階段執行下列命令,以清除這些位置的原則:
$PolicyBinary = $env:windir+"\System32\SecureBootUpdates\SkuSiPolicy.p7b" $MountPoint = 's:' $EFIPolicyPath = "$MountPoint\EFI\Microsoft\Boot\SkuSiPolicy.p7b" $EFIDestinationFolder="$MountPoint\EFI\Microsoft\Boot" mountvol $MountPoint /S if (-Not (Test-Path $EFIDestinationFolder)) { New-Item -Path $EFIDestinationFolder -Type Directory -Force } if (Test-Path $EFIPolicyPath ) {Remove-Item -Path $EFIPolicyPath -Force } mountvol $MountPoint /D
-
-
從 BIOS 開啟安全開機。暫停 BitLocker 保護 ,然後從 UEFI BIOS 功能表開啟安全開機。
如需如何找到開啟安全開機的說明,請參閱裝置製造商的文件。 如果您在步驟 1 中關閉安全開機,而且您的磁碟機受到 BitLocker 保護,請 -
[開啟 BitLocker]。 從提升權限的「命令提示字元」視窗執行下列命令:
Manager-bde -protectors -enable c:
-
重新啟動您的裝置。
變更日期 |
描述 |
2025年2月24日 |
|
2025年2月11日 |
|
2025 年 1 月 14 日 |
|
2024年11月12日 |
|