元の発行日: 2024 年 8 月 13 日
KB ID: 5042562
Windows 10 のサポートは、2025 年 10 月に終了します
2025 年 10 月 14 日以降、Windows Update を介した Windows 10 の無料ソフトウェア更新プログラム、テクニカル サポート、セキュリティ修正プログラムが、Microsoft から提供されなくなります。 お使いの PC は引き続き機能しますが、Windows 11 に移行することを推奨します。
日付の変更 |
説明 |
11/12/2024 |
|
この資料の内容
要約
Microsoft は、管理者特権を持つ攻撃者が古いバージョンの更新された Windows システム ファイルを置き換え、攻撃者が仮想化ベースのセキュリティ (VBS)に脆弱性を再導入することを可能にする、Windows の脆弱性を認識しました。 これらのバイナリをロールバックすると、攻撃者は VBS のセキュリティ機能を回避し、VBS によって保護されているデータを流出させる可能性があります。 この問題については、「CVE-2024-21302 | Windows セキュア カーネル モードの特権の昇格の脆弱性」で説明されています。
この問題を解決するために、更新されていない脆弱な VBS システム ファイルを取り消します。 ブロックする必要がある VBS 関連ファイルの数が多いため、別の方法を使用して、更新されていないファイル バージョンをブロックします。
影響の範囲
VBS をサポートするすべての Windows デバイスは、この問題の影響を受けます。 これには、オンプレミスの物理デバイスと仮想マシン (VM) が含まれます。 VBS は、Windows 10 以降の Windows バージョン、および Windows Server 2016 以降のバージョンの Windows Server でサポートされています。
VBS の状態は、Microsoft システム情報 ツール (Msinfo32.exe) を使用して確認できます。 このツールは、デバイスに関する情報を収集します。 Msinfo32.exeを開始したら、仮想化ベースのセキュリティ の行までスクロールします。 この行の値が Running の場合、VBS が有効であり、実行されています。
VBS の状態は、Win32_DeviceGuard WMI クラスを使用して Windows PowerShell で確認することもできます。 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 システム ファイルの脆弱なバージョンがオペレーティング システムによって読み込まれなくなります。
注 2024 年 10 月 8 日以降にリリースされた最新の Windows 更新プログラムの一部として、Windows 10、バージョン 1507、Windows 10 Enterprise 2016、および Windows Server 2016 の SKUSIPolicy.p7b および VbsSI_Audit.p7b ポリシーのサポートが追加されました。 新しいバージョンの Windows と Windows Server では、2024 年 8 月 13 日の更新プログラムでこれらのポリシーが導入されました。
このポリシーを Windows デバイスに適用すると、UEFI ファームウェアに変数を追加することで、ポリシーもデバイスにロックされます。 起動時にポリシーが読み込まれると、Windows はポリシーに違反するバイナリの読み込みをブロックします。 UEFI ロックが適用され、ポリシーが削除または古いバージョンに置き換えられた場合、Windows ブート マネージャーは起動せず、デバイスは起動しません。 この起動エラーはエラーを表示せず、システムは次に使用可能なブート オプションに進み、ブート ループが発生する可能性があります。
ポリシーの軽減策を機能させるには、Windows のコンポーネントとポリシーが同じリリースからである必要があるため、Windows サービス更新プログラムを使用してポリシーを更新する必要があります。 ポリシーの軽減策がデバイスにコピーされた場合、間違ったバージョンの軽減策が適用されている場合、または軽減策が期待どおりに機能しない場合、デバイスが起動しない可能性があります。 さらに、KB5025885 で説明されている軽減策をデバイスに適用する必要があります。
軽減策のリスクについて
Microsoft が署名した失効ポリシーを適用する前に、潜在的なリスクに注意する必要があります。 これらのリスクを確認し、軽減策を適用する前に回復メディアに必要な更新を行ってください。
-
ユーザー モード コードの整合性 (UMCI)。 Microsoft が署名した失効ポリシーを使用すると、ユーザー モードのコード整合性が有効になり、ポリシー内のルールがユーザー モードのバイナリに適用されます。 UMCI では、既定で 動的コード セキュリティ も有効になります。 これらの機能を適用すると、アプリケーションやスクリプトとの互換性の問題が発生し、実行が妨げられる可能性があります。これは起動時間にパフォーマンスに影響を与える可能性があります。 軽減策をデプロイする前に、指示に従って監査モード ポリシーを展開し、潜在的な問題をテストします。
-
UEFI のロックと更新プログラムのアンインストール。 デバイスに Microsoft が署名した失効ポリシーを使用して UEFI ロックを適用した後、セキュア ブートを引き続き適用する場合、(Windows 更新プログラムのアンインストール、復元ポイントの使用、またはその他の方法を使用して) デバイスを元に戻すことはできません。 ディスクを再フォーマットしても、既に適用されている場合は、軽減策の UEFI ロックは削除されません。 つまり、軽減策が適用されていない以前の状態に Windows OS を戻そうとすると、デバイスは起動せず、エラー メッセージは表示されず、UEFI は次に使用可能なブート オプションに進みます。 これにより、ブート ループが発生する可能性があります。 UEFI ロックを削除するには、セキュア ブートを無効にする必要があります。 この記事で説明されている失効をデバイスに適用する前に、考えられるすべての影響を認識し、徹底的にテストしてください。
-
外部ブート メディア。 UEFI ロックの軽減策がデバイスに適用された後、外部ブート メディアは、デバイスにインストールされている最新の Windows 更新プログラムと Microsoft 署名失効ポリシー (SkuSiPolicy.p7b) で更新する必要があります。 外部ブート メディアが更新されていない場合、デバイスはそのメディアから起動しない可能性があります。 軽減策を適用する前に、「外部ブート メディアの更新 」セクションの手順を参照してください。 Microsoft が署名した失効ポリシーで更新されたブート メディアは、軽減策が既に適用されているデバイスを起動するためにのみ使用する必要があります。 軽減策なしでデバイスで使用されている場合、ブート メディアからの起動時に UEFI ロックが適用されます。 デバイスが軽減策で更新されるか、UEFI ロックが削除されない限り、それ以降、このディスクから起動は失敗します。
-
Windows 回復環境。 SkuSipolicy.p7b がデバイスに適用される前に、デバイス上の Windows Recovery Environment (WinRE) をデバイスにインストールされている最新の Windows 更新プログラムで更新する 必要があります 。 この手順を省略すると、WinRE が PC のリセット機能を実行できなくなる可能性があります。 詳細については、「更新プログラム パッケージをWindows に追加する」を参照してください。
-
プリブート実行環境 (PXE) ブート。 軽減策がデバイスに展開されている場合に、PXE ブートを使用しようとすると、軽減策がネットワーク ブート ソース (bootmgfw.efi が存在するルート) にも適用されない限り、デバイスは起動しません。 軽減策が適用されているネットワーク ブート ソースからデバイスが起動した場合、UEFI ロックがデバイスに適用され、以降の起動に影響します。 環境内のすべてのデバイスに軽減策が展開されていない限り、ネットワーク ブート ソースに軽減策を展開することはお勧めしません。
軽減策の展開ガイドライン
この記事で説明されている問題に対処するには、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) と動的コード セキュリティが適用されます。 これらの機能には、お客様のアプリケーションとの互換性の問題がある可能性があります。 軽減策を展開する前に、互換性の問題を検出するための監査ポリシーを展開する必要があります。
次の 2 つの監査ポリシー オプションがあります:
-
提供された SiPolicy.p7b 監査ポリシーを使用します。
-
または、提供された XML ファイルから独自の監査ポリシー バイナリをコンパイルします。
既存の Windows Defender Application Guard (WDAC) ポリシーを既に展開していない限り、指定された SiPolicy.p7b 監査ポリシー バイナリを使用することをお勧めします。 提供された監査ポリシー バイナリは UEFI ロックされていません。 監査ポリシーを適用する前に、外部ブート メディアと回復メディアを更新する必要はありません。
Windows コードの整合性は、監査ポリシーのルールに対してユーザーとカーネル モードのバイナリを評価します。 コードの整合性によってポリシーに違反するアプリケーションまたはスクリプトが識別された場合、ブロックされたアプリケーションまたはスクリプトに関する情報と、適用されたポリシーに関する情報を含む Windows イベント ログ イベントが生成されます。 これらのイベントは、互換性のないアプリケーションまたはスクリプトがデバイスで使用されているかどうかを判断するために使用できます。 詳細については、「Windows イベント ログ」セクションを参照してください。
SiPolicy.p7b 監査ポリシーは、Windows 10、バージョン 1507、Windows 10 Enterprise 2016、およびWindows Server 2016でサポートされているすべての Windows オペレーティング システムについて、2024 年 10 月 8 日以降にリリースされた Windows 更新プログラムに含まれています。 この監査ポリシーは、最新のサービス更新プログラムをインストールしてデバイスにのみ適用し、次の手順に従う必要があります。
-
管理者特権の Windows PowerShell ウィンドウで、次のコマンドを実行します:
# ポリシーの場所と宛先を初期化する
$PolicyBinary = $env:windir+"\System32\SecureBootUpdates\VbsSI_Audit.p7b"
$DestinationBinary = $env:windir+"\System32\CodeIntegrity\SiPolicy.p7b"
# 監査ポリシーバイナリをコピーする
Copy-Item -Path $PolicyBinary -Destination $DestinationBinary -force
-
デバイスを再起動します。
-
Policy アクティブ化イベント セクションの情報を使用して、ポリシーがイベント ビューアーに読み込まれたかどうかを確認します。
-
ポリシーが適用されている間にアプリケーションとスクリプトを使用してテストし、互換性の問題を特定します。
SiPolicy.p7b 監査ポリシーをアンインストールするには、次の手順を実行します:
-
管理者特権の Windows PowerShell ウィンドウで、次のコマンドを実行します:
# ポリシーの場所を初期化する
$PolicyBinary = $env:windir+"\System32\CodeIntegrity\SiPolicy.p7b"
# SiPolicy.p7b の削除
Remove-Item -Path $PolicyBinary -force
-
デバイスを再起動します。
-
Policy アクティブ化イベント セクションの情報を使用して、監査ポリシーがイベント ビューアーに読み込まれていないことを確認します。
WDAC を使用して、デバイスでの実行が許可されているアプリケーションとドライバーを管理している場合は、既に "SiPolicy.p7b" という名前のポリシーを使用している可能性があります。 サポートされているすべての Windows オペレーティング システムのWindows 10、バージョン 21H2 以降の Windows バージョン、および Windows Server 2022 以降の Windows Server バージョンでは、指定された XML ファイルを使用して、WDAC の複数のポリシー形式を使用して監査ポリシーを構築および展開できます。 監査ポリシー バイナリをビルドして展開する手順については、「Windows Defender アプリケーション制御 (WDAC) ポリシー を展開する」を参照してください。
監査ポリシー規則を含む XML ファイルは、2024 年 11 月 12 日以降に Windows 更新プログラムがリリースされたデバイスで使用できます。 XML ファイルは、"%systemroot%\schemas\CodeIntegrity\ExamplePolicies\VbsSI_Audit.xml" にあります。
Microsoft が署名した失効ポリシー (SkuSiPolicy.p7b) の展開
Microsoft 署名失効ポリシーは、最新の Windows 更新プログラムの一部として含まれています。 このポリシーは、最新のサービス更新プログラムをインストールしてデバイスにのみ適用し、次の手順に従う必要があります。
注: 更新プログラムがない場合は、デバイスが軽減策を適用して起動しないか、軽減策が期待どおりに機能しない可能性があります。
-
管理者特権の Windows PowerShell プロンプトで次のコマンドを実行します:
$PolicyBinary = $env:windir+"\System32\SecureBootUpdates\SkuSiPolicy.p7b"
$MountPoint = 'C:\EFIMount'$EFIDestinationFolder = "$MountPoint\EFI\Microsoft\Boot"
$EFIPartition = (Get-Partition | Where-Object IsSystem).AccessPaths[0] if (-Not (Test-Path $MountPoint)) { New-Item -Path $MountPoint -Type Directory -Force } mountvol $MountPoint $EFIPartition 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 更新プログラムが含まれている必要があります。 メディアに更新プログラムが含まれていない場合、メディアは起動しません。
Microsoft が署名した失効ポリシーで更新されたブート メディアは、軽減策が既に適用されているデバイスを起動するためにのみ使用する必要があります。 軽減策なしでデバイスで使用されている場合、ブート メディアからの起動時に UEFI ロックが適用されます。 デバイスが軽減策で更新されるか、UEFI ロックが削除されない限り、それ以降、このディスクから起動は失敗します。
重要 続行する前に回復ドライブを作成することをお勧めします。 このメディアは、大きな問題が発生した場合にデバイスを再インストールするために使用できます。
外部ブート メディアを更新するには、次の手順に従います:
-
2024 年 11 月 12 日以降にリリースされた Windows 更新プログラムがインストールされているデバイスに移動します。
-
外部ブート メディアをドライブ文字としてマウントします。 たとえば、サム ドライブを D: としてマウントします。
-
[開始] をクリックし、[検索] ボックスに 「回復ドライブの作成」 と入力し、[回復ドライブの作成コントロール パネル] クリックします。 指示に従って、マウントされたサム ドライブを使用して回復ドライブを作成します。
-
新しく作成されたメディアをマウントした状態で、 SkuSiPolicy.p7b ファイルを <MediaRoot>\EFI\Microsoft\Boot (たとえば、D:\EFI\Microsoft\Boot) にコピーします。
-
マウントされたサム ドライブを安全に取り外します。
「動的更新による Windows インストール メディアの更新」ガイダンスを使用して環境内のインストール可能メディアを管理する場合は、次の手順に従います:
-
2024 年 11 月 12 日以降にリリースされた Windows 更新プログラムがインストールされているデバイスに移動します。
-
「 Update Windows インストール メディアと Dynamic Update」の手順に従って、2024 年 11 月 12 日以降にリリースされた Windows 更新プログラムがインストールされているメディアを作成します。
-
メディアの内容を USB サム ドライブに配置し、サム ドライブをドライブ文字としてマウントします。 たとえば、サム ドライブを D: としてマウントします。
-
SkuSiPolicy.p7b を <MediaRoot>\EFI\Microsoft\Boot (例: D:\EFI\Microsoft\Boot) にコピーします。
-
マウントされたサム ドライブを安全に取り外します。
Windows イベント ログ
Windows では、SkuSiPolicy.p7b を含むコード整合性ポリシーが読み込まれ、ポリシーの適用のためにファイルの読み込みがブロックされたときにイベントがログに記録されます。 これらのイベントを使用して、軽減策が適用されていることを確認できます。
コード整合性ログは、Windows イベント ビューアーで、アプリケーションとサービス ログ > Microsoft > Windows > コード整合性 > 稼働中 > アプリケーションとサービス ログ > サービス ログ > Microsoft > Windows > AppLocker > MSI およびスクリプト で確認できます。
コード整合性イベントの詳細については、「Windows Defender アプリケーション制御の運用ガイド」を参照してください。
ポリシーのアクティブ化イベント
ポリシーのアクティブ化イベントは、Windows イベント ビューアー アプリケーションとサービス ログ > Microsoft > Windows > 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 Policy
-
PolicyGUID – {976d12c8-cb9f-4730-be52-54600843238e}
-
PolicyHash – 107E8FDD187C34CF8B8EA46A4EE99F0DB60F491650DC989DB71B4825DC73169D
監査ポリシーまたは軽減策をデバイスに適用していて、適用されたポリシーの CodeIntegrity イベント 3099 が存在しない場合、ポリシーは適用されていません。 ポリシーが正しくインストールされたことを確認するには「デプロイ手順」を参照してください。
イベントの監査とブロック
コード整合性の監査およびブロック イベントは、Windows イベント ビューアーで、アプリケーションとサービス ログ > Microsoft > Windows > CodeIntegrity > 稼働中 > アプリケーションとサービス ログ > Microsoft > Windows > AppLocker > MSI およびスクリプト で確認できます。
以前のログの場所には、実行可能ファイル、dll、およびドライバーの制御に関するイベントが含まれています。 後者のログの場所には、MSI インストーラー、スクリプト、および COM オブジェクトの制御に関するイベントが含まれます。
"CodeIntegrity – Operational" ログの CodeIntegrity イベント 3076 は、監査モード ポリシーのメイン ブロック イベントであり、ポリシーが適用された場合にファイルがブロックされることを示します。 このイベントには、ブロックされたファイルと、適用されたポリシーに関する情報が含まれます。 軽減策によってブロックされるファイルの場合、イベント 3077 のポリシー情報は、イベント 3099 の監査ポリシーのポリシー情報と一致します。
"CodeIntegrity – Operational" ログの CodeIntegrity イベント 3077 は、実行可能ファイル、.dll、またはドライバーの読み込みがブロックされたことを示します。 このイベントには、ブロックされたファイルと、適用されたポリシーに関する情報が含まれます。 軽減策によってブロックされたファイルの場合、CodeIntegrity イベント 3077 のポリシー情報は、CodeIntegrity イベント 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 = 'C:\EFIMount'$EFIPolicyPath = "$MountPoint\EFI\Microsoft\Boot\SkuSiPolicy.p7b"
$EFIDestinationFolder="$MountPoint\EFI\Microsoft\Boot"
$EFIPartition = (Get-Partition |Where-Object IsSystem)。AccessPaths[0] if (-Not (Test-Path $MountPoint)) { New-Item -Path $MountPoint -Type Directory -Force }mountvol $MountPoint $EFIPartition 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:
-
デバイスを再起動します。