仮想化ベースのセキュリティ (VBS)

仮想化ベースのセキュリティ (VBS) では、ハードウェア仮想化機能を使用して、セキュリティで保護されたメモリ領域が作成され、通常のオペレーティング システムから分離されます。 Windows では、この "仮想セキュリティ モード" を使用して、多数のセキュリティ ソリューションがホストされ、オペレーティング システムの脆弱性からの保護を大幅に強化し、保護を破ろうとする悪意のある悪用を防止できます。

このようなセキュリティ ソリューションの一例は、ハイパーバイザーによるコードの整合性の強制 (HVCI) です (一般にメモリ整合性とも呼ばれ、VBS を使用してコードの整合性ポリシーの適用が大幅に強化されます)。 カーネル モード コードの整合性では、開始前にすべてのカーネル モード ドライバーとバイナリがチェックされ、署名されていないドライバーまたはシステム ファイルがシステム メモリに読み込まれることが防止されます。

VBS では、Windows ハイパーバイザーを使用して、この仮想保護モードが作成され、重要なシステムやオペレーティング システム リソースを保護する制限が適用されたり、認証されたユーザー資格情報などのセキュリティ資産が保護されたりします。 VBS で提供された保護が強化されると、マルウェアから OS カーネルにアクセスできる場合でも、ハイパーバイザーでマルウェアによるコードの実行やプラットフォーム シークレットへのアクセスを防止できるため、悪用の可能性が大幅に制限、抑制される可能性があります。

同様に、ユーザー モードで構成可能なコード整合性ポリシーでは、アプリケーションが読み込まれる前にアプリケーションがチェックされ、承認された既知の署名者によって署名された実行可能ファイルのみが開始されます。 HVCI では VBS を利用して、セキュリティで保護された環境内でコード整合性サービスが実行され、カーネル ウイルスやマルウェアに対する保護が強化されます。 ハイパーバイザーは、システム ソフトウェアの最も高い特権レベルであり、すべてのシステム メモリ全体でページのアクセス許可を設定して適用します。 ページは、セキュリティで保護された領域内でコード整合性チェックに合格した後にのみ実行可能になり、実行可能なページは書き込み可能になりません。 このように、マルウェアでメモリの変更を試みることができるバッファー オーバーフローなどの脆弱性がある場合でも、コード ページを変更できず、変更されたメモリを実行可能にすることもできません。

VBS では、次のコンポーネントが存在し、適切に構成されている必要があります。

TPM は必須の要件ではありませんが、TPM を実装することを強くお勧めします。

ハードウェア要件 詳細
64 ビット CPU 仮想化ベースのセキュリティ (VBS) には、Windows ハイパーバイザーが必要です。このハイパーバイザーは、Intel VT-X や AMD-v などの仮想化拡張機能を備えた 64 ビットの IA プロセッサでのみサポートされています。
Second Level Address Translation (SLAT) VBS では、プロセッサの仮想化サポートに、第 2 レベル のアドレス変換 (SLAT)、Intel VT-X2 拡張ページ テーブル (EPT)、または AMD-v と Rapid Virtualization Indexing (RVI) が含まれている必要もあります。
IOMMU または SMMU (Intel VT-D、AMD-Vi、Arm64 SMMU) DMA 対応の I/O デバイスはすべて、IOMMU または SMMU の背後に配置する必要があります。 IOMMU を使用すると、メモリ攻撃からのシステムの回復性を強化できます。
トラステッド プラットフォーム モジュール (TPM) 2.0 TPM (ディスクリートまたはファームウェア) で十分です。 詳細については、トラステッド プラットフォーム モジュール (TPM) 2.0 に関するページを参照してください。
SMM 保護のためのファームウェアのサポート システム ファームウェアは、Windows SMM Security Mitigations Table (WMST) の仕様で説明されている SMM コードの強化に関する推奨事項に従っている必要があります。 WSMT の仕様には、Windows 仮想化ベースのセキュリティ (VBS) 機能がサポートされている Windows オペレーティング システムで使用するために作成された ACPI テーブルの詳細が含まれている。 ファームウェアでは、WSMT の仕様で説明されている保護が実装され、仕様で説明されている対応する保護フラグが設定され、これらの要件に準拠していることがオペレーティング システムにレポートされる必要があります。
Unified Extensible Firmware Interface (UEFI) メモリ レポート ファームウェアと VBS との互換性を確保するには、UEFI ファームウェアが次のメモリ マップ レポート形式とメモリ割り当てガイドラインに従っている必要があります。

  • UEFI v2.6 メモリ属性テーブル (MAT) - VBS との互換性を確保するには、ファームウェアでコードとデータの EFI ランタイム メモリ範囲が完全に分離され、このことがオペレーティング システムにレポートされる必要があります。 VBS では、EFI ランタイム メモリ範囲の適切な分離とレポートが行われると、VBS セキュリティで保護された領域内の EFI ランタイム サービスのコード ページに必要なページ保護を適用できます。 この情報を OS に伝達するには、EFI_MEMORY_ATTRIBUTES_TABLE を使用します。 UEFI MAT を実装するには、次のガイドラインに従います。
    1. このテーブルで UEFI ランタイム全体を記述する必要があります。
    2. EfiRuntimeServicesData ページと EfiRuntimeServicesCode ページに適切なすべての属性にマークを付ける必要があります。
    3. これらの範囲はページ境界上 (4 KB) に配置する必要があり、重複することはできません。
  • EFI ページの保護 -すべてのエントリに EFI_MEMORY_RO 属性または EFI_MEMORY_XP 属性 (あるいはその両方) を含める必要があります。 実行可能とマークされているすべての UEFI メモリは、読み取り専用であることが必要です。 書き込み可能とマークされているメモリは、実行可能にすることはできません。 どちらの属性も含まれていないエントリは指定できません (こうしたエントリは、メモリが実行可能でかつ書き込み可能であることを示します)。
  • セキュリティで保護されたメモリ上書き要求 (MOR) リビジョン 2 セキュリティで保護された MOR v2 は、UEFI セキュリティで保護された変数を使用して MOR ロック設定を保護するために強化されています。 これは、高度なメモリ攻撃から保護する際に役立ちます。 詳細については、セキュア MOR の実装に関するページを参照してください。
    ハイパーバイザー コード整合性 (HVCI) と互換性のあるドライバー すべてのシステム ドライバーがテストされ、HVCI との互換性があることを確認してください。 Windows Driver Kitドライバーの検証ツールには、ドライバー HVCI 互換性のテストが含まれています。 ドライバーの互換性を確認するには、次の 4 つの手順を使用します。
    1. 新しいコード整合性の互換性チェックを有効にしたドライバーの検証ツールを使用します。
    2. Windows HLK でハイパーバイザー コード整合性準備テストを実行します。
    3. VBS と HVCI が有効になっているシステムでドライバーをテストします。 静的コード分析ツールでは、実行時に考えられるすべての HVCI 違反を検出できるとは限らないため、この手順は HVCI でドライバーの動作を検証するために不可欠です。
    4. DGReadiness ツールを使用します。

    VBS は、入れ子になった仮想化サポートを持つ VM で動作します。 これには、すべての Gen2 VM と、入れ子になった仮想化をサポートする Gen1 VM が含まれます。 サポートされている VM シリーズの一覧を次の表に示します。

    VM シリーズ名 入れ子になった仮想化 VM Gen
    Av2 はい 1 (特定の内部サイズは Gen 2 をサポート)
    B いいえ 1 と 2
    Dsv2/Dv2/Dv3/Ev3 はい 1
    Dsv3/Ddsv3 はい 1 と 2
    Dsv4/Ddsv4 はい 1 と 2
    Esv3/Edsv3 はい 1 と 2
    Esv4/Edsv4 はい 1 と 2
    Ev4/Edv4 はい Ev4 - 1 のみ
    Edv4 -1&2
    Dv4/Ddv4 はい 1 と 2
    Dv5/Ddv5/Dsv5/Ddsv5 はい 1 と 2
    Ev5/Edv5/Esv5/Edsv5 はい 1 と 2
    Dasv5/Dadsv5/Easv5/Eadsv5 はい 1 と 2
    Ebsv5/Edbsv5 はい 1 と 2
    Fsv2 はい 1 と 2
    [Fx] はい 2
    Lsv2 はい 1 と 2

    Hyper-V について詳しくは、「Windows Server 2016 で Hyper-v」または「Windows 10 の Hyper-V の概要」をご覧ください。 ハイパーバイザーについて詳しくは、「ハイパーバイザーの仕様」をご覧ください。