メモリの整合性と VBS の有効化

メモリ整合性は、Windows 10、Windows 11、およびWindows Server 2016以降で使用できる仮想化ベースのセキュリティ (VBS) 機能です。 メモリ整合性とVBSは、Windowsの脅威モデルを改善し、Windowsカーネルを悪用しようとするマルウェアに対する保護を強化します。 VBSは、Windowsハイパーバイザーを使用して、カーネルが侵害される可能性があると想定するOSの信頼のルートとなる分離された仮想環境を作成します。 メモリ整合性は、VBSの分離された仮想環境内でカーネルモードのコード整合性を実行することによってWindowsを保護および強化する重要なコンポーネントです。 また、メモリの整合性は、システムの侵害に使用される可能性のあるカーネルメモリの割り当てを制限し、カーネルメモリページが安全なランタイム環境内でコードの整合性チェックに合格した後にのみ実行可能になり、実行可能ページ自体が書き込み可能になることはありません。

Note

メモリの整合性は、ハイパーバイザーで保護されたコードの整合性 (HVCI) またはハイパーバイザーによって適用されるコードの整合性と呼ばれることがあり、当初はDevice Guardの一部としてリリースされました。 Device Guardは、グループポリシーまたはWindowsレジストリでメモリの整合性とVBS設定を検索する場合を除き、使用されなくなりました。

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

既定の有効化

メモリ整合性は、この記事で説明されているように、互換性のあるハードウェアで、Windows 11のクリーンインストールでは既定で有効になっています。以前は、SモードのWindows 10のクリーンインストールでのみ有効でした。 また、セキュリティで保護されたすべてのコアPcでも既定で有効になっています。 メモリ整合性の自動有効化要件を満たしていない他のシステムでは、メモリ整合性を有効にする方法で説明されているいずれかの方法を使用してオプトインできます。 IT担当者とエンドユーザーは、メモリ整合性が有効になっているかどうかを常に最終的に制御できます。

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

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

コンポーネント 詳細
プロセッサ
  • Windows 11バージョン22H2以降のIntel第8世代以降(第11世代Coreプロセッサー以降 (Windows 11バージョンのみ))
  • AMD Zen 2 アーキテクチャ以降
  • Qualcomm Snapdragon 8180 以降
RAM 最小8GB (x64プロセッサにのみ適用可能)
記憶域 64 GB 以上の SSD
ドライバー メモリ整合性互換ドライバーがインストールされている必要があります。 ドライバーの詳細については、 「ドライバーの互換性とメモリ整合性」を参照してください。
BIOS 仮想化を有効にする必要があります。

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

Note

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

Note

中国および韓国市場で一般的なソフトウェアとの互換性に関する既知の問題を回避するため、これらの市場は除外されています。

Note

Intel 第 11 世代 Core デスクトップ プロセッサは、現在の既定の有効化ロジックには含まれていません。 ただし、これらはメモリ整合性のために推奨されるプラットフォームであり、OEMによって有効にすることができます。

メモリ整合性とVBSコントロール

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

メモリの整合性を有効にします

Windowsでは、ほとんどのシステムでメモリの整合性が既定で有効になりますが、いくつかの理由により、これを防ぐことができます。 OEMは、OSイメージでレジストリキーを構成することによって、デバイスのメモリの整合性が有効になっていることを確認できます。

イメージに次の2つのレジストリキーを設定して、メモリの整合性が有効になっていることを確認します。

レジストリ キー Value
HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity Enabled=1
HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity WasEnabledBy=1
HKLM\System\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity EnabledBootId=<現在のBootId>

BootIdは、正常に起動するたびに増加するカウンターであり、レジストリキーにあります。HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\BootId WasEnabledByEnabledBootIdのレジストリキーは、起動できないデバイスに対して保護する設定を制御します。 設定すると、ブート中にシステムがクラッシュした場合、互換性のない起動に不可欠なドライバーがメモリの整合性によってブロックされる可能性がある場合、デバイスは自動的にメモリの整合性をオフにします。 この自動無効化機能は、BootIdがEnabledBootId+3未満の場合にのみ使用できます。 Windowsの一部のバージョンでは、自動無効化機能は、メモリの整合性がオフになった後も起動エラーが続く場合に元に戻すように設計されています。これは、メモリの整合性がエラーの根本原因ではなかったことを示します。

Note

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

トラブルシューティング

メモリの整合性の状態を識別しています

次の揮発性レジストリキーは、メモリの整合性の状態を反映しています。

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

メモリの整合性の状態を確認する他の方法として、 [実行中の仮想化ベースのセキュリティサービス]のMsInfo32を参照するか、Windowsセキュリティアプリのコア分離設定ページを参照して、メモリの整合性の値を確認します。 管理ツールを使用して確認するためのWMIインターフェイスもあります。 「有効なVBSとメモリの整合性機能を検証する」を参照してください。

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

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

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

一般に、メモリ整合性の互換性イベントにはEventID=3087があります。

メモリ整合性のデフォルトの有効化の結果を確認します

メモリ整合性のデフォルトの有効化の結果の詳細を表示するには、setupact.logを確認し、HVCIを検索します。 次のいずれかの結果ログと、有効化に関する決定につながったチェックの成功/失敗が表示されます。

メモリ整合性が有効になっています。 SYSPRP HVCI: Enabling HVCI

メモリ整合性が有効になっていません: SYSPRP HVCI: OS does not meet HVCI auto-enablement requirements. Exiting now.

デバイスが前に説明したregkeyメソッドを使用してメモリ整合性の有効化を無効にした場合、これはメモリ整合性のsysprepからの唯一のログになります。 デバイスに互換性の問題があった場合は、上記のログで次のエラー メッセージによって識別されます。

SYSPRP HVCI: Compatibility did not pass. VBS_COMPAT_ISSUES 0xXXXXXXXX

次に、潜在的なVBSまたはメモリ整合性の互換性の問題を列挙します。 各問題はビット配列内の 1 つのインデックスによって表され、エラー メッセージでは、存在する各エラー ビットを合わせて得られた 16 進値が出力されます。

ビット インデックス 互換性の問題 16 進値 Architecture
0 サポートされていないアーキテクチャ(例。x86) 0x00000001
1 SLAT が必要 0x00000002 X64
2 0 x 00000004 0x00000004 X64
3 IOMMU が必要 0x00000008 X64
4 MBEC/GMET が必要 0x00000010 X64
5 UEFI が必要 0x00000020 X64
6 UEFI WX メモリ属性テーブルが必要 0x00000040 X64
7 ACPI WSMT テーブルが必要 0x00000080 X64
8 UEFI MOR ロックが必要 0x00000100 X64
9 "非推奨"
10 ハードウェア仮想化が必要 0x00000400 X64
11 Secure Launch が必要 0x00000800 ARM64
12 "非推奨"
13 デバイスのボリュームが必要なサイズ (64 GB 以上) を満たしていない 0x00002000 x64、ARM64
14 システム ドライブ SSD が必要 0x00004000 x64、ARM64
15 Intel CETが必要 (W11 21H2にのみ該当) 0x00008000 X64
16 ARM SoCはVBSと互換性がありません 0x00010000 ARM64
17 8 GB RAM が必要 0x00020000 X64

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

0x000000C 0-0x00000080 AND 0x00000040-UEFI WXメモリ属性テーブルが必要です、ACPI WSMTテーブルが必要です