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

仮想化ベースのセキュリティ (VBS) は、ハードウェア仮想化機能を使用して、通常のオペレーティングシステムからのメモリの安全な領域を作成し、分離します。Virtualization-based security, or VBS, uses hardware virtualization features to create and isolate a secure region of memory from the normal operating system. Windows では、この "仮想保護モード" を使用して、複数のセキュリティソリューションをホストできます。これにより、オペレーティングシステムの脆弱性に対する保護を大幅に向上させ、保護を突破しようとする悪意のある攻撃を防ぐことができます。Windows can use this "virtual secure mode" to host a number of security solutions, providing them with greatly increased protection from vulnerabilities in the operating system, and preventing the use of malicious exploits which attempt to defeat protections.

VBS は、Windows ハイパーバイザーを使用してこの仮想保護モードを作成し、重要なシステムおよびオペレーティングシステムのリソースを保護したり、認証されたユーザーの資格情報などのセキュリティ資産を保護したりするための制限を適用します。VBS uses the Windows hypervisor to create this virtual secure mode, and to enforce restrictions which protect vital system and operating system resources, or to protect security assets such as authenticated user credentials. VBS によって提供される保護の強化により、マルウェアが OS カーネルにアクセスできた場合でも、マルウェアがコードを実行したりプラットフォームシークレットにアクセスしたりするのを防ぐことができるため、攻撃の可能性が大幅に制限され、含まれる可能性があります。With the increased protections offered by VBS, even if malware gains access to the OS kernel the possible exploits can be greatly limited and contained, because the hypervisor can prevent the malware from executing code or accessing platform secrets.

このようなセキュリティソリューションの例の1つは、ハイパーバイザーによって適用されるコード整合性 (HVCI) です。これは、VBS を使用してコード整合性ポリシーの適用を大幅に強化します。One such example security solution is Hypervisor-Enforced Code Integrity (HVCI), which uses VBS to significantly strengthen code integrity policy enforcement. カーネルモードコードの整合性は、すべてのカーネルモードドライバーとバイナリが開始される前に確認し、未署名のドライバーまたはシステムファイルがシステムメモリに読み込まれないようにします。Kernel mode code integrity checks all kernel mode drivers and binaries before they're started, and prevents unsigned drivers or system files from being loaded into system memory.

同様に、ユーザーモードの構成可能なコード整合性ポリシーでは、アプリケーションが読み込まれる前にアプリケーションがチェックされ、承認された既知の署名者によって署名された実行可能ファイルのみが開始されます。Similarly, user mode configurable code integrity policy checks applications before they're loaded, and will only start executables that are signed by known, approved signers. HVCI は、VBS を利用して安全な環境内でコード整合性サービスを実行することで、カーネルウイルスとマルウェアに対するより強力な保護を提供します。HVCI leverages VBS to run the code integrity service inside a secure environment, providing stronger protections against kernel viruses and malware. ハイパーバイザーは、システムソフトウェアの最上位レベルであり、すべてのシステムメモリに対してページのアクセス許可を設定して適用します。The hypervisor, the most privileged level of system software, sets and enforces page permissions across all system memory. ページは、セキュリティで保護されたリージョン内のコードの整合性チェックに合格し、実行可能なページが書き込み可能でない場合にのみ実行可能になります。Pages are only made executable after code integrity checks inside the secure region have passed, and executable pages are not writable. これにより、マルウェアがメモリの変更を試みることができるような、バッファーオーバーフローなどの脆弱性があっても、コードページを変更することはできず、変更されたメモリを実行可能にすることはできません。That way, even if there are vulnerabilities like a buffer overflow that allow malware to attempt to modify memory, code pages cannot be modified, and modified memory cannot be made executable.

VBS では、次のコンポーネントが存在し、適切に構成されている必要があります。VBS requires the following components be present and properly configured.

TPM は要件ではありませんが、TPM を実装することを強くお勧めします。Please notice that TPM is not a must requirement, but we highly recommend to implement TPM.

ハードウェア要件Hardware requirement 詳細Details
64 ビット CPU64-bit CPU 仮想化ベースのセキュリティ (VBS) を使用するには、Windows ハイパーバイザーが必要です。これは、Intel VT-X および AMD-v を含む、仮想化拡張機能を搭載した64ビット IA プロセッサでのみサポートされています。Virtualization-based security (VBS) requires the Windows hypervisor, which is only supported on 64-bit IA processors with virtualization extensions, including Intel VT-X and AMD-v.
第 2 レベルのアドレス変換 (SLAT)Second Level Address Translation (SLAT) また、VBS では、プロセッサの仮想化サポートに、第2レベルのアドレス変換 (SLAT)、拡張ページテーブル (EPT) を含む Intel VT-X2、または迅速な仮想化インデックス (RVI) を備えた AMD-v のいずれかが含まれている必要があります。VBS also requires that the processor’s virtualization support includes Second Level Address Translation (SLAT), either Intel VT-X2 with Extended Page Tables (EPT), or AMD-v with Rapid Virtualization Indexing (RVI).
IOMMUs または SMMUs (Intel VT-D、AMD-Vi、ARM64 SMMUs)IOMMUs or SMMUs (Intel VT-D, AMD-Vi, ARM64 SMMUs) DMA が可能なすべての i/o デバイスは、IOMMU または SMMU の背後に配置されている必要があります。All I/O devices capable of DMA must be behind an IOMMU or SMMU. IOMMU を使用すると、メモリ攻撃に対するシステムの回復性を高めることができます。An IOMMU can be used to enhance system resiliency against memory attacks.
トラステッド プラットフォーム モジュール (TPM) 2.0Trusted Platform Module (TPM) 2.0 Tpm (不連続またはファームウェア) で十分です。TPMs, either discrete or firmware, will suffice. 詳細については、「 トラステッドプラットフォームモジュール (TPM) 2.0」を参照してください。For more information, see Trusted Platform Module (TPM) 2.0.
SMM 保護のファームウェアサポートFirmware support for SMM protection システムファームウェアは、「 Windows の Smm セキュリティ緩和テーブル (WMST) 仕様」で説明されている SMM コードのセキュリティ強化に関する推奨事項に従う必要があります。System firmware must adhere to the recommendations for hardening SMM code described in the Windows SMM Security Mitigations Table (WMST) specification. WSMT 仕様には、Windows 仮想化ベースのセキュリティ (VBS) 機能をサポートする Windows オペレーティングシステムで使用するために作成された ACPI テーブルの詳細が含まれています。The WSMT specification contains details of an ACPI table that was created for use with Windows operating systems that support Windows virtualization-based security (VBS) features. ファームウェアは、WSMT 仕様で説明されている保護を実装し、これらの要件に対応しているかをオペレーティングシステムに報告する仕様で説明されているように、対応する保護フラグを設定する必要があります。Firmware must implement the protections described in the WSMT specification, and set the corresponding protection flags as described in the specification to report compliance with these requirements to the operating system.
Unified Extensible Firmware Interface (UEFI) メモリレポートUnified Extensible Firmware Interface (UEFI) Memory Reporting ファームウェアが VBS との互換性を確保するためには、UEFI ファームウェアは次のメモリマップレポート形式とメモリ割り当てガイドラインに従う必要があります。UEFI firmware must adhere to the following memory map reporting format and memory allocation guidelines in order for firmware to ensure compatibility with VBS.

  • UEFI V1.0 メモリ属性テーブル (台紙)- VBS との互換性を確保するために、ファームウェアはコードとデータの EFI ランタイムメモリ範囲をクリーンに分離し、これをオペレーティングシステムに報告する必要があります。UEFI v2.6 Memory Attributes Table (MAT) - To ensure compatibility with VBS, firmware must cleanly separate EFI runtime memory ranges for code and data, and report this to the operating system. EFI ランタイムのメモリ範囲を適切に分離してレポートすることで、VBS のセキュリティで保護されたリージョン内の EFI ランタイムサービスのコードページに必要なページ保護を適用できます。Proper segregation and reporting of EFI runtime memory ranges allows VBS to apply the necessary page protections to EFI runtime services code pages within the VBS secure region. この情報を OS に伝えるには、EFI_MEMORY_ATTRIBUTES_TABLE を使用します。Conveying this information to the OS is accomplished using the EFI_MEMORY_ATTRIBUTES_TABLE. UEFI 台紙を実装するには、次のガイドラインに従ってください。To implement the UEFI MAT, follow these guidelines:
    1. この表には、EFI ランタイム全体が記述されている必要があります。The entire EFI runtime must be described by this table.
    2. EfiRuntimeServicesData ページと EfiRuntimeServicesCode ページのすべての適切な属性をに設定する必要があります。All appropriate attributes for EfiRuntimeServicesData and EfiRuntimeServicesCode pages must be marked.
    3. これらの範囲はページ境界 (4 KB) に配置する必要があり、重複することはできません。These ranges must be aligned on page boundaries (4KB), and can not overlap.
  • EFI ページ保護-すべてのエントリには、EFI_MEMORY_RO、EFI_MEMORY_XP、またはその両方の属性が含まれている必要があります。EFI Page Protections -All entries must include attributes EFI_MEMORY_RO, EFI_MEMORY_XP, or both. 実行可能とマークされているすべての UEFI メモリは読み取り専用である必要があります。All UEFI memory that is marked executable must be read only. 書き込み可能とマークされているメモリは、実行可能にすることはできません。Memory marked writable must not be executable. 属性が設定されていないエントリは、実行可能と書き込み可能の両方のメモリを示します。Entries may not be left with neither of the attributes set, indicating memory that is both executable and writable.
  • セキュリティで保護されたメモリの上書き要求 (MOR) リビジョン2Secure Memory Overwrite Request (MOR) revision 2 Secure MOR v2 は、UEFI の安全な変数を使用して MOR ロック設定を保護するように強化されています。Secure MOR v2 is enhanced to protect the MOR lock setting using a UEFI secure variable. これは、高度なメモリ攻撃から保護するのに役立ちます。This helps guard against advanced memory attacks. 詳細について は、「Secure MOR implementation」を参照してください。For details, see Secure MOR implementation.
    ハイパーバイザーコード整合性 (HVCI) 互換ドライバーHypervisor Code Integrity (HVCI)-compatible drivers すべてのシステムドライバーがテストされ、HVCI と互換性があることが確認されていることを確認します。Ensure all system drivers have been tested and verified to be compatible with HVCI. Windows Driver Kitdriver Verifierには、ドライバー hvci の互換性に関するテストが含まれています。The Windows Driver Kit and Driver Verifier contain tests for driver HVCI compatibility. ドライバーの互換性を確認するには、次の4つの手順を実行します。There are four steps to verify driver compatibility:
    1. 新しい コード整合性互換性 チェックが有効になっているドライバーの検証ツールを使用します。Use Driver Verifier with the new Code Integrity compatibility checks enabled.
    2. Windows HLK で ハイパーバイザーコード整合性準備テスト を実行します。Run the Hypervisor Code Integrity Readiness Test in the Windows HLK.
    3. VBS および HVCI が有効になっているシステムでドライバーをテストします。Test the driver on a system with VBS and HVCI enabled. この手順は、HVCI でドライバーの動作を検証するために不可欠です。静的コード分析ツールは、実行時に可能なすべての HVCI 違反を検出することができないためです。This step is imperative to validate the driver's behavior with HVCI, as static code analysis tools simply aren't capable of detecting all HVCI violations possible at runtime.
    4. DGReadiness ツールを使用します。Use the DGReadiness tool.

    Hyper-V について詳しくは、「Windows Server 2016 で Hyper-v」または「Windows 10 の Hyper-V の概要」をご覧ください。For more info about Hyper-V, see Hyper-V on Windows Server 2016 or Introduction to Hyper-V on Windows 10. ハイパーバイザーについて詳しくは、「ハイパーバイザーの仕様」をご覧ください。For more info about hypervisor, see Hypervisor Specifications.