この資料の内容

要約

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

  • フィールドが 0 の場合、VBS は有効になっていません。

  • フィールドが 1 の場合、VBS は有効ですが、実行されていません。

  • フィールドが 2 の場合は、VBS は有効で、実行されています。

利用可能な軽減策

サポートされているすべてのバージョンの Windows (Windows 10 Version 1809 以降)、および Windows Server (Windows Server 2019 以降) では、管理者は Microsoft が署名した失効ポリシー (SkuSiPolicy.p7b) を展開できます。 これにより、更新されていない VBS システム ファイルの脆弱なバージョンがオペレーティング システムによって読み込まれなくなります。

サポートされているのすべての Windows のバージョン (Windows 10 Version 1507 以前)、および Windows Server (Windows Server 2016 以前) に対する追加の軽減策と軽減策のサポートは、今後の更新プログラムで予定されています。

このポリシーを Windows デバイスに適用すると、UEFI ファームウェアに変数を追加することで、ポリシーもデバイスにロックされます。 起動時にポリシーが読み込まれると、Windows はポリシーに違反するバイナリの読み込みをブロックします。 UEFI ロックが適用され、ポリシーが削除または古いバージョンに置き換えられた場合、Windows ブート マネージャーは起動せず、デバイスは起動しません。 この起動エラーはエラーを表示せず、システムは次に使用可能なブート オプションに進み、ブート ループが発生する可能性があります。

ポリシーの軽減策を機能させるには、2024 年 8 月 13 日以降にリリースされた Windows 更新プログラムでデバイスを更新する必要があります。 更新プログラムがない場合は、デバイスが軽減策を適用して起動しないか、軽減策が期待どおりに機能しない可能性があります。 さらに、KB5025885 で説明されている軽減策をデバイスに適用する必要があります。

重要 この軽減策は、Windows 10 Version 1809 より前のバージョンの Windows、または Windows Server 2019 より前のバージョンの Windows Server には適用しないでください。 サポートされていないデバイスに軽減策が適用されている場合、デバイスは起動せず、0xc0000428 エラーが表示されます。 回復するには、「ポリシーの削除と回復の手順」セクションの手順に従う必要があります。

デバイスの修復が必要であることを示す回復ダイアログ ボックス

軽減策のリスクについて

Microsoft が署名した失効ポリシーを適用する前に、潜在的なリスクに注意する必要があります。 これらのリスクを確認し、軽減策を適用する前に回復メディアに必要な更新を行ってください。

  • ユーザー モード コードの整合性 (UMCI)。 Microsoft が署名した失効ポリシーを使用すると、ユーザー モードのコード整合性が有効になり、ポリシー内のルールがユーザー モードのバイナリに適用されます。 UMCI では、既定で 動的コード セキュリティ も有効になります。 これらの機能を適用すると、アプリケーションやスクリプトとの互換性の問題が発生し、実行が妨げられる可能性があります。これは起動時間にパフォーマンスに影響を与える可能性があります。 軽減策をデプロイする前に、指示に従って監査モード ポリシーを展開し、潜在的な問題をテストします。

  • UEFI のロックと更新プログラムのアンインストール。 デバイスに Microsoft が署名した失効ポリシーを使用して UEFI ロックを適用した後、セキュア ブートを引き続き適用する場合、(Windows 更新プログラムのアンインストール、復元ポイントの使用、またはその他の方法を使用して) デバイスを元に戻すことはできません。 ディスクを再フォーマットしても、既に適用されている場合は、軽減策の UEFI ロックは削除されません。 つまり、軽減策が適用されていない以前の状態に Windows OS を戻そうとすると、デバイスは起動せず、エラー メッセージは表示されず、UEFI は次に使用可能なブート オプションに進みます。 これにより、ブート ループが発生する可能性があります。 UEFI ロックを削除するには、セキュア ブートを無効にする必要があります。 この記事で説明されている失効をデバイスに適用する前に、考えられるすべての影響を認識し、徹底的にテストしてください。

  • 外部ブート メディア。 UEFI ロックの軽減策がデバイスに適用された後、外部ブート メディアは、2024 年 8 月 13 日以降の Windows 更新プログラムと、Microsoft が署名した失効ポリシー (SkuSiPolicy.p7b) を使用して更新する必要があります。 外部ブート メディアが更新されていない場合、デバイスはそのメディアから起動しない可能性があります。 軽減策を適用する前に、「外部ブート メディアの更新 」セクションの手順を参照してください。 Microsoft が署名した失効ポリシーで更新されたブート メディアは、軽減策が既に適用されているデバイスを起動するためにのみ使用する必要があります。  軽減策なしでデバイスで使用されている場合、ブート メディアからの起動時に UEFI ロックが適用されます。 デバイスが軽減策で更新されるか、UEFI ロックが削除されない限り、それ以降、このディスクから起動は失敗します。

  • Windows 回復環境。 デバイス上の Windows 回復環境 (WinRE) は、SkuSipolicy.p7b がデバイスに適用される前に 2024 年 8 月 13 日以降の Windows 更新プログラムで更新されている必要があります。 この手順を省略すると、WinRE が PC のリセット機能を実行できなくなる可能性があります。  詳細については、「更新プログラム パッケージをWindows に追加する」を参照してください。

  • プリブート実行環境 (PXE) ブート。 軽減策がデバイスに展開されている場合に、PXE ブートを使用しようとすると、軽減策がネットワーク ブート ソース (bootmgfw.efi が存在するルート) にも適用されない限り、デバイスは起動しません。 軽減策が適用されているネットワーク ブート ソースからデバイスが起動した場合、UEFI ロックがデバイスに適用され、以降の起動に影響します。 環境内のすべてのデバイスに軽減策が展開されていない限り、ネットワーク ブート ソースに軽減策を展開することはお勧めしません。  

軽減策の展開ガイドライン

この記事で説明されている問題に対処するには、Microsoft が署名した失効ポリシー (SkuSiPolicy.p7b) を展開します。 この軽減策 は、Windows 10 version 1809 以降の Windows バージョン、および Windows Server 2019 以降のバージョンの Windows Server でサポートされています。 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 監査ポリシーは、2024 年 8 月 13 日以降、サポートされているすべての Windows オペレーティング システム (Windows 10 Version 1809 以降の Windows バージョン、および Windows Server 2019 以降のバージョン) の Windows 更新プログラムに含まれています。 この監査ポリシーは、2024 年 8 月 13 日以降の Windows 更新プログラムがインストールされているデバイスにのみ適用する必要があります。そうでない場合、監査ポリシーが期待どおりに動作しない可能性があります。

提供された SiPolicy.p7b 監査ポリシーをデプロイするには、次の手順に従います:

  1. 管理者特権の Windows PowerShell ウィンドウで、次のコマンドを実行します:

    # ポリシーの場所と宛先を初期化する

    $PolicyBinary = $env:windir+"\System32\SecureBootUpdates\VbsSI_Audit.p7b"

    $DestinationBinary = $env:windir+"\System32\CodeIntegrity\SiPolicy.p7b"

    # 監査ポリシーバイナリをコピーする

    Copy-Item -Path $PolicyBinary -Destination $DestinationBinary -force

  2. デバイスを再起動します。

  3. Policy アクティブ化イベント セクションの情報を使用して、ポリシーがイベント ビューアーに読み込まれたかどうかを確認します。

  4. ポリシーが適用されている間にアプリケーションとスクリプトを使用してテストし、互換性の問題を特定します。

SiPolicy.p7b 監査ポリシーをアンインストールするには、次の手順を実行します:

  1. 管理者特権の Windows PowerShell ウィンドウで、次のコマンドを実行します:

    # ポリシーの場所を初期化する

    ​​​​​​​$PolicyBinary = $env:windir+"\System32\CodeIntegrity\SiPolicy.p7b"

    # SiPolicy.p7b の削除

    Remove-Item -Path $PolicyBinary -force

  2. デバイスを再起動します。

  3. Policy アクティブ化イベント セクションの情報を使用して、監査ポリシーがイベント ビューアーに読み込まれていないことを確認します。

WDAC を使用して、デバイスでの実行が許可されているアプリケーションとドライバーを管理している場合は、既に "SiPolicy.p7b" という名前のポリシーを使用している可能性があります。 2024 年 8 月 13 日以降、サポートされているすべての Windows オペレーティング システム (Windows 10 Version 1903 以降の Windows バージョン、および Windows Server 2022 以降のバージョン) では、提供された XML ファイルを使用して、WDAC の複数のポリシーを使用した監査ポリシーをビルドおよび展開できます。 監査ポリシー バイナリをビルドして展開する手順については、「Windows Defender アプリケーション制御 (WDAC) ポリシー を展開する」を参照してください。

監査ポリシー規則を含む XML ファイルは、2024 年 8 月 13 日以降の Windows 更新プログラムがインストールされているデバイスで使用できます。 XML ファイルは、"%systemroot%\schemas\CodeIntegrity\ExamplePolicies\VbsSI_Audit.xml" にあります。

Windows 10 Version 1809 以前の Windows バージョン、または Windows Server 2016 以前のバージョンの Windows Server で WDAC ポリシーを使用する場合は、既存の WDAC ポリシーを監査ポリシーに置き換えて、軽減策との互換性の問題をテストする必要があります。

Microsoft が署名した失効ポリシー (SkuSiPolicy.p7b) の展開

Microsoft が署名した失効ポリシーは、2024 年 8 月 13 日以降の Windows 更新プログラムの一部として含まれています。 このポリシーは、2024 年 8 月 13 日以降の更新プログラムがインストールされているデバイスにのみ適用する必要があります。 更新プログラムがない場合は、デバイスが軽減策を適用して起動しないか、軽減策が期待どおりに機能しない可能性があります。

Microsoft が署名した失効ポリシー (SkuSiPolicy.p7b) をデプロイするには、次の手順に従います:

  1. 管理者特権の 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

  2. デバイスを再起動します。

  3. Windows イベント ログ セクションの情報を使用して、ポリシーがイベント ビューアーに読み込まれたかどうかを確認します。

メモ

  • SkuSiPolicy.p7b 失効 (ポリシー) ファイルは、展開後に削除しないでください。 ファイルが削除されると、デバイスが起動できなくなる可能性があります。

  • デバイスが起動しない場合は、「回復手順」セクションを参照してください。

外部ブート メディアを更新しています

Microsoft が署名した失効ポリシーが適用されているデバイスで外部ブート メディアを使用するには、外部ブート メディアを適用されたポリシー ファイルで更新する必要があります。 また、2024 年 8 月 13 日以降の Windows 更新プログラムも含める必要があります。 メディアに更新プログラムが含まれていない場合、メディアは起動しません。

Microsoft が署名した失効ポリシーで更新されたブート メディアは、軽減策が既に適用されているデバイスを起動するためにのみ使用する必要があります。  軽減策なしでデバイスで使用されている場合、ブート メディアからの起動時に UEFI ロックが適用されます。 デバイスが軽減策で更新されるか、UEFI ロックが削除されない限り、それ以降、このディスクから起動は失敗します。

重要 続行する前に回復ドライブを作成することをお勧めします。 このメディアは、大きな問題が発生した場合にデバイスを再インストールするために使用できます。

外部ブート メディアを更新するには、次の手順に従います:

  1. 2024 年 8 月 13 日以降にリリースされた Windows 更新プログラムがインストールされているデバイスに移動します。

  2. 外部ブート メディアをドライブ文字としてマウントします。 たとえば、サム ドライブを D: としてマウントします。

  3. [開始] をクリックし、[検索] ボックスに 「回復ドライブの作成」 と入力し、[回復ドライブの作成コントロール パネル] クリックします。 指示に従って、マウントされたサム ドライブを使用して回復ドライブを作成します。

  4. 新しく作成されたメディアをマウントした状態で、 SkuSiPolicy.p7b ファイルを <MediaRoot>\EFI\Microsoft\Boot (たとえば、D:\EFI\Microsoft\Boot) にコピーします。

  5. マウントされたサム ドライブを安全に取り外します。

動的更新による Windows インストール メディアの更新」ガイダンスを使用して環境内のインストール可能メディアを管理する場合は、次の手順に従います:

  1. 2024 年 8 月 13 日以降にリリースされた Windows 更新プログラムがインストールされているデバイスに移動します。

  2. Windows インストール メディアを動的更新プログラムで更新する」の手順に従って、2024 年 8 月 13 日以降にリリースされた Windows 更新プログラムが適用されたメディアを作成します。

  3. メディアの内容を USB サム ドライブに配置し、サム ドライブをドライブ文字としてマウントします。 たとえば、サム ドライブを D: としてマウントします。

  4. SkuSiPolicy.p7b<MediaRoot>\EFI\Microsoft\Boot (例: D:\EFI\Microsoft\Boot) にコピーします。

  5. マウントされたサム ドライブを安全に取り外します。

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 仮想化ベース セキュリティ監査ポリシー

Microsoft が署名した失効ポリシー (SkuSiPolicy.p7b) が適用されると、次の情報を含むイベントが発生します (以下の CodeIntegrity イベント 3099 のスクリーンショットを参照):

  • PolicyNameBuffer – Microsoft Windows SKU SI Policy

  • PolicyGUID – {976d12c8-cb9f-4730-be52-54600843238e}

  • PolicyHash – 107E8FDD187C34CF8B8EA46A4EE99F0DB60F491650DC989DB71B4825DC73169D

Microsoft Windows SKU SI ポリシー

監査ポリシーまたは軽減策をデバイスに適用していて、適用されたポリシーの 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 は存在しません。

その他のコード整合性監査およびブロック イベントについては、「アプリケーション制御イベントの概要」を参照してください。

ポリシーの削除と回復の手順

軽減策の適用後に問題が発生した場合は、次の手順を使用して軽減策を削除できます:

  1. BitLocker が有効になっている場合は中断します。 管理者特権でのコマンド プロンプト ウィンドウで、次のコマンドを実行します:

    Manager-bde -protectors -disable c: -rebootcount 3

  2. UEFI BIOS メニューから セキュア ブート をオフにします。 セキュア ブートをオフにする手順は、デバイスの製造元とモデルによって異なります。 セキュア ブートをオフにする場所の特定については、デバイスの製造元のドキュメントを参照してください。 詳細については、「セキュア ブートの無効化」を参照してください。

  3. SkuSiPolicy.p7b ポリシーを削除します。

    1. Windows を通常どおりに起動し、サインインします。 SkuSiPolicy.p7b ポリシーは、次の場所から削除する必要があります:

      • <EFI システム パーティション>\Microsoft\Boot\SKUSiPolicy.p7b

    2. 管理者特権の 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

  4. BIOS から セキュア ブート を有効にします。 セキュア ブートを有効にする場所を特定するには、デバイスの製造元のドキュメントを参照してください。 手順 1 でセキュア ブートをオフにし、ドライブが BitLocker で保護されている場合は、BitLocker 保護を中断し[UEFI BIOS] メニューからセキュア ブートを有効にします。

  5. BitLocker をオンにします。 管理者特権でのコマンド プロンプト ウィンドウで、次のコマンドを実行します:

    Manager-bde -protectors -enable c:

  6. デバイスを再起動します。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。