ハイパーバイザーで保護されたコード整合性の有効化

ハイパーバイザーで保護されたコード整合性 (HVCI) は、Windows で利用可能な仮想ベースのセキュリティ (VBS) 機能です。 Windows の [デバイス セキュリティ] 設定では、HVCI は「メモリ整合性」と呼ばれます。

HVCI と VBS は、Windows の脅威モデルを改善し、Windows カーネルを悪用しようとするマルウェアに対するより強力な保護を提供します。 VBS は、Windows ハイパーバイザーを利用して、カーネルが侵害される可能性がある OS の信頼のルートとなる分離された仮想環境を作成します。 HVCI は、その中でカーネル モード コードの整合性を実行し、システムの侵害に使用できるカーネル メモリ割り当てを制限することで、この仮想環境を保護および強化する重要なコンポーネントです。

これらの保護の詳細については、「仮想化ベースのセキュリティ システム リソース保護」を参照してください。

既定の有効化

Windows 11 より、互換性のあるシステムで新規インストールを行うと、メモリ整合性が既定で有効になります。 そのため、Windows でのこの機能の既定の状態は、これまでと異なります。ただし、最終的にこの機能を有効にするかどうかは、デバイスの製造元とエンド ユーザーが制御できます。

この機能が自動的に有効化されるハードウェア機能

メモリ整合性は、PC に次の最小ハードウェア機能が含まれる場合に既定で有効になります。

コンポーネント 詳細
プロセッサ
  • Windows 11 バージョン 22H2 以降の Intel 8 世代以降 (Windows 11 バージョン 21H2 の場合のみ、第 11 世代コア プロセッサ以降)
  • AMD Zen 2 アーキテクチャ以降
  • Qualcomm Snapdragon 8180 以降
RAM 8 GB 以上
Storage 64 GB 以上の SSD
ドライバー HVCI と互換性のあるドライバーをインストールする必要があります。 ドライバーの詳細については、「Hypervisor-Protected Code Integrity (HVCI)」を参照してください。
BIOS 仮想化を有効にする必要があります。

メモリ整合性が自動的に有効にならないイメージを構築する場合でも、既定で有効にするようにイメージを構成することができます。

Note

自動有効化は、既存のデバイスのアップグレードではなく、クリーン インストールにのみ関連します。

Note

中国と韓国の市場は、チート対策に関連した互換性の問題を回避するために除外されています。

Note

Intel 第 11 世代 Core デスクトップ プロセッサは、現在の既定の有効化ロジックには含まれていません。 ただし、HVCI で推奨されるプラットフォームであり、OEM で HVCI を有効にできます。

HVCI と VBS の制御

このセクションでは、デバイスの製造元とエンド ユーザーが HVCI と VBS を制御する方法について説明します。 HVCI の状態を管理者として制御する方法については、「グループ ポリシーを使用して HVCI を有効にする」を参照してください。

メモリ整合性を有効にする

特定のハードウェア要件を満たすシステムでは、メモリ整合性が既定で有効になります。 メモリ整合性が自動的に有効になるハードウェアの組み合わせを使用していない場合は、イメージでレジストリ キーを構成することによって有効にすることもできます。

ユーザーは、Windows セキュリティ アプリの [コア分離] ページを使用して、メモリ整合性を手動で有効にすることもできます。

イメージで次の 2 つのレジストリ キーを設定します。この構成では、OS の既定の有効化ロジックと同じ方法で、カーネル モードでメモリ整合性が有効になります。

レジストリ キー
HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity Enabled=1
HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity WasEnabledBy=1

WasEnabledBy レジストリ キーは、デバイスを起動できない場合に対する保護の設定を制御します。 このキーを設定すると、ブート中にシステムがクラッシュした場合 (おそらく、ブートに必要なドライバーがメモリ整合性との互換性を持たないためにブロックされたことが原因) に、デバイスで自動的に HVCI が無効になります。 この自動無効化機能は現在は推奨される構成ですが、まもなく非推奨となります。

Note

高いセキュリティが必要なシステムでは、WasEnabledBy を設定しないでください。

トラブルシューティング

HVCI の状態の識別

HVCI の状態は、次の揮発性のレジストリ キーによって反映されます。

レジストリ キー
HKLM\System\CurrentControlSet\Control\CI\State HVCIEnabled

HVCI の状態を確認するその他の方法としては、MsInfo32 で仮想化ベースのセキュリティ サービスが実行中であることを確認するか、[コア分離] 設定ページで [メモリ整合性] の値を確認できます。

ドライバーの問題のデバッグ

HVCI の結果としてドライバーの読み込みがブロックされた場合は、コード整合性ログを確認します。 これらのログは、イベント ビューアーで次のパスの下に表示されます。

Applications and Service Logs\Microsoft\Windows\CodeIntegrity\Operational

一般に、HVCI 互換性イベントのイベント ID は 3087 です。

HVCI の既定の有効化の結果を確認する

HVCI の既定の有効化の結果の詳細を確認するには、setupact.log を確認し、「HVCI」を検索します。 次のいずれかの結果ログと、有効化に関する決定につながったチェックの成功/失敗が表示されます。

HVCI が有効化された: SYSPRP HVCI: Enabling HVCI

HVCI が有効化されなかった: SYSPRP HVCI: OS does not meet HVCI auto-enablement requirements. Exiting now.

レジストリ キーによる上記の方法を使用し、デバイスで HVCI が無効化された場合、これは HVCI sysprep に関する唯一のログとなります。 デバイスに互換性の問題があった場合は、上記のログで次のエラー メッセージによって識別されます。

SYSPRP HVCI: Compatibility did not pass. VBS_COMPAT_ISSUES 0xXXXXXXXX

VBS の互換性の問題を引き起こす可能性がある事柄を次に列挙します。 各問題はビット配列内の 1 つのインデックスによって表され、エラー メッセージでは、存在する各エラー ビットを合わせて得られた 16 進値が出力されます。

Note

一部のインデックスは次の表に含まれていません。 一部の互換性要件は変更済みまたは非推奨となっており、既定の有効化ロジックがない古い OS バージョンにのみ関連します。

ビット インデックス 互換性の問題
0 サポートされていないアーキテクチャ (x86 など)
1 SLAT が必要
3 IOMMU が必要
4 MBEC/GMET が必要
5 UEFI が必要
6 UEFI WX メモリ属性テーブルが必要
7 ACPI WSMT テーブルが必要
8 UEFI MOR ロックが必要
10 ハードウェア仮想化が必要
11 Secure Launch が必要
13 デバイスのボリュームが必要なサイズ (64 GB 以上) を満たしていない
14 システム ドライブ SSD が必要
15 デバイスが Intel SoC の最小要件を満たしていない
16 Qualcomm SoC で VBS の有効化が指定されていない
17 8 GB RAM が必要

エラー コードとエラー識別の例: VBS_COMPAT_ISSUES 0x000000C0

0x000000C0 -> 00000000011000000 -> ビット インデックス 6 と 7 がアクティブ -> UEFI WX メモリ属性テーブルが必要、ACPI WSMT テーブルが必要