コードの整合性に対する仮想化ベースの保護を有効にする

Warning

一部のアプリケーションやハードウェア デバイス ドライバーには、メモリ整合性と互換性がない場合があります。 この非互換性により、デバイスやソフトウェアが誤動作する可能性があり、まれに起動エラー (ブルー スクリーン) が発生する可能性があります。 このような問題は、メモリ整合性を有効にした後、または有効化プロセス自体の実行中に発生する可能性があります。 互換性の問題が発生した場合は、「修復手順の トラブルシューティング 」を参照してください。

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

  • メモリ整合性は、 ハイパーバイザーで保護されたコード整合性 (HVCI) または ハイパーバイザー強制コード整合性と呼ばれることもあり、当初は Device Guard の一部としてリリースされました。 Device Guard は、グループ ポリシーまたは Windows レジストリでメモリ整合性と VBS 設定を見つける場合以外は使用されなくなりました。
  • メモリ整合性は、 モード ベースの実行制御を備えた Intel Kabylake 以上のプロセッサ、 およびゲスト モード実行トラップ 機能を備えた AMD Zen 2 以上のプロセッサで適切に動作します。 古いプロセッサは、 制限付きユーザー モードと呼ばれるこれらの機能のエミュレーションに依存しており、パフォーマンスに大きな影響を与えます。 入れ子になった仮想化を有効にすると、VM のバージョンが > = 9.3 の場合にメモリ整合性が向上します。
  • Azure VM は、[DMA を使用したセキュア ブート] が選択されている場合、メモリ整合性はサポートされません。 これを選択すると、VBS は有効として表示されますが、実行中ではありません。 このため、次のいずれかの方法のみを使用してセ キュア ブート を選択してください。

メモリ整合性機能

  • カーネル モード ドライバーの制御フロー ガード (CFG) ビットマップの変更を保護します。
  • 他の信頼されたカーネル プロセスに有効な証明書があることを保証するカーネル モードのコード整合性プロセスを保護します。

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

エンタープライズ全体でサポート ハードウェアを含む Windows デバイスでメモリ整合性を有効にするには、次のいずれかのオプションを使用します。

Windows セキュリティを使用してメモリ整合性を有効にする

メモリ整合性は、[Windows セキュリティWindows セキュリティ>デバイスのセキュリティ>コア分離の詳細>メモリ整合性] の設定でオンにすることができます。 詳細については、「Windows セキュリティでのデバイス保護」を参照してください。

Windows 11 22H2 以降では、メモリ整合性がオフになっていると、Windows セキュリティに警告が表示されます。 警告インジケーターは、Windows タスク バーの Windows セキュリティ アイコンと Windows 通知センターにも表示されます。 ユーザーは、Windows セキュリティ内から警告を無視できます。

有効になっている VBS とメモリ整合性機能を検証する

WMI クラスWin32_DeviceGuard使用する

Windows 10、Windows 11、Windows Server 2016 以上には、VBS 関連のプロパティと機能の WMI クラス (Win32_DeviceGuard) があります。 このクラスは、管理者特権の Windows PowerShell セッションから照会することができます。そのためには、次のコマンドを実行します。

Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard

Mode Based Execution Control プロパティは、Windows 10 バージョン 1803 および Windows 11 version 21H2 から使用可能と表示されます。 この値は、Intel の モード ベースの実行制御 と AMD の ゲスト モード 実行トラップ機能の両方で報告されます。

このコマンドの出力には、使用可能なハードウェア ベースのセキュリティ機能と、現在有効になっている機能の詳細が表示されます。

  • InstanceIdentifier: 特定のデバイスに固有であり、WMI によって設定される文字列。

  • バージョン: このフィールドには、この WMI クラスのバージョンが一覧表示されます。 現在有効な値は 1.0だけです。

  • AvailableSecurityProperties: このフィールドは、VBS およびメモリ整合性の関連するセキュリティ プロパティの状態を列挙して報告する際に役立ちます。

    説明
    0 この値が設定されている場合は、デバイスには関連するプロパティがありません。
    1 この値が設定されている場合は、ハイパーバイザーのサポートを利用できます。
    2 この値が設定されている場合は、セキュア ブートを利用できます。
    3 この値が設定されている場合は、DMA 保護を利用できます。
    4 この値が設定されている場合は、セキュリティで保護されたメモリ上書きを利用できます。
    5 この値が設定されている場合は、NX 保護を利用できます。
    6 この値が設定されている場合は、SMM 移行を利用できます。
    7 存在する場合は、MBEC/GMET を使用できます。
    8 この値が設定されている場合、APIC 仮想化を使用できます。
  • CodeIntegrityPolicyEnforcementStatus: このフィールドは、コード整合性ポリシーの適用状態を示します。

    説明
    0 オフ
    1 監査
    2 強制。
  • RequiredSecurityProperties: このフィールドでは、VBS を有効にするために必要なセキュリティ プロパティが説明されます。

    説明
    0 セキュリティ プロパティは必要ありません。
    1 この値が設定されている場合は、ハイパーバイザーのサポートが必要です。
    2 この値が設定されている場合は、セキュア ブートが必要です。
    3 この値が設定されている場合は、DMA 保護が必要です。
    4 この値が設定されている場合は、セキュリティで保護されたメモリ上書きが必要です。
    5 この値が設定されている場合は、NX 保護が必要です。
    6 この値が設定されている場合は、SMM 移行が必要です。
    7 存在する場合は、MBEC/GMET が必要です。
  • SecurityServicesConfigured: このフィールドは、Credential Guard またはメモリ整合性が構成されているかどうかを示します。

    説明
    0 サービスは構成されていません。
    1 この値が設定されている場合は、Credential Guard が構成されています。
    2 この値が設定されている場合は、メモリ整合性が構成されています。
    3 この値が設定されている場合は、System Guard セキュア起動が構成されています。
    4 この値が設定されている場合は、SMM Firmware Measurement が構成されます。
    5 この値が設定されている場合は、カーネル モードのハードウェア強制スタック保護が構成されています。
    6 この値が設定されている場合、カーネルモードのハードウェア強制スタック保護は監査モードで構成されています。
    7 この値が設定されている場合は、Hypervisor-Enforced ページング変換が構成されています。
  • SecurityServicesRunning: このフィールドは、Credential Guard またはメモリ整合性が実行されているかどうかを示します。

    説明
    0 実行中のサービスはありません。
    1 この値が設定されている場合は、Credential Guard が実行されています。
    2 この値が設定されている場合は、メモリ整合性が実行されています。
    3 この値が設定されている場合は、System Guard セキュア起動が実行されています。
    4 この値が設定されている場合は、SMM Firmware Measurement が実行されています。
    5 この値が設定されている場合は、カーネル モードのハードウェア強制スタック保護が実行されています。
    6 この値が設定されている場合、カーネル モードのハードウェア強制スタック保護は監査モードで実行されています。
    7 この値が設定されている場合は、ページング翻訳 Hypervisor-Enforced 実行されています。
  • SmmIsolationLevel: このフィールドは SMM 分離レベルを示します。

  • UsermodeCodeIntegrityPolicyEnforcementStatus: このフィールドは、ユーザー モード コード整合性ポリシーの適用状態を示します。

    説明
    0 オフ
    1 監査
    2 強制。
  • VirtualizationBasedSecurityStatus: このフィールドには、VBS が有効になっているかどうか、また実行中であるかどうかが示されます。

    説明
    0 VBS は有効になっていません。
    1 VBS は有効になっていますが、実行されていません。
    2 VBS は有効になっており、実行されています。
  • VirtualMachineIsolation: このフィールドは仮想マシンの分離が有効になっているかどうかを示します。

  • VirtualMachineIsolationProperties: このフィールドは、使用可能な仮想マシン分離プロパティのセットを示します。

    説明
    1 AMD SEV-SNP
    2 仮想化ベースのセキュリティ
    3 Intel TDX

msinfo32.exe を使用する

VBS の利用可能機能や有効機能を判断する別の方法として、管理者特権の PowerShell セッションから msinfo32.exe を実行する方法があります。 このプログラムを実行すると、[ システムの概要 ] セクションの下部に VBS の機能が表示されます。

システム情報の概要の仮想化ベースのセキュリティ機能。

トラブルシューティング

  • デバイス ドライバーの読み込みに失敗するか実行時にクラッシュする場合は、デバイス マネージャーを使用してドライバーを更新できる場合があります。
  • ブート中に重大なエラーが発生した場合や、メモリ整合性を有効にした後にシステムが安定しない場合は、Windows 回復環境 (Windows RE) を使用して回復できます。
    1. 最初に、VBS とメモリ整合性を有効にするために使用されるポリシー (グループ ポリシーなど) を無効にします。

    2. 次に、影響を受けるコンピューターで Windows RE を起動します。「Windows RE テクニカル リファレンス」を参照してください。

    3. Windows RE にログインした後、メモリ整合性レジストリ キーをオフに設定します。

      reg add "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" /v "Enabled" /t REG_DWORD /d 0 /f
      
    4. 最後に、デバイスを再起動します。

UEFI ロックを使用してメモリ整合性をオンにした場合は、セキュア ブートを無効にして Windows RE の回復手順を完了する必要があります。

仮想マシンでのメモリ整合性のデプロイ

メモリ整合性は、物理マシンの場合と同様に、Hyper-V 仮想マシンを保護できます。 メモリ整合性を有効にする手順は、仮想マシン内からでも同じです。

メモリ整合性は、ゲスト仮想マシンで実行されるマルウェアから保護します。 ホスト管理者からの追加の保護は提供されません。 ホストから、仮想マシンのメモリ整合性を無効にすることができます。

Set-VMSecurity -VMName <VMName> -VirtualizationBasedSecurityOptOut $true

Hyper-V 仮想マシンでメモリ整合性を実行するための要件

  • Hyper-V ホストでは、Windows Server 2016 または Windows 10 Version 1607 以降を実行している必要があります。
  • Hyper-V 仮想マシンは第 2 世代であることが必要です。また、Windows Server 2016 または Windows 10 以上を実行している必要があります。
  • メモリ整合性と 入れ子になった仮想化 を同時に有効にすることができます。 仮想マシンで Hyper-V ロールを有効にするには、まず、Windows 入れ子になった仮想化環境に Hyper-V ロールをインストールする必要があります。
  • 仮想ファイバー チャネル アダプターには、メモリ整合性と互換性がありません。 仮想ファイバー チャネル アダプターを仮想マシンに接続するには、その前にまず Set-VMSecurity を使用した仮想化ベースのセキュリティを無効にする必要があります。
  • パススルー ディスクの AllowFullSCSICommandSet オプションには、メモリ整合性と互換性がありません。 AllowFullSCSICommandSet を使ってパススルー ディスクを構成する前に、まず Set-VMSecurity を使用した仮想化ベースのセキュリティを無効にする必要があります。