OEM 向けのカーネル DMA 保護 (メモリ アクセス保護)

Kernel DMA Protection (メモリ アクセス保護とも呼ばれます) は、Windows 10 のセキュリティで保護されたコア PC の機能であり、Windows 10 Version 1803、および Windows 10 Version 1809 以降の Intel および AMD のプラットフォームでサポートされています。

この機能を使用すると、OS とシステム ファームウェアによって、次のようなすべての DMA 可能デバイスに対する悪意のある、意図しないダイレクトメモリアクセス (DMA) 攻撃からシステムが保護されます。

  • ブートプロセス中の保護。
  • M.2 PCIeスロットやThunderbolt™3など、OSランタイム中に簡単にアクセスできる内部/外部DMA対応ポートに接続されたデバイスによる悪意のあるDMAに対して。
プラットフォーム要件 詳細
64 ビット CPU カーネル DMA 保護は、Intel VT-X および AMD-v を含む、仮想化拡張機能を搭載した64ビット IA プロセッサでのみサポートされています。
IOMMU (Intel VT-D、AMD-Vi) DMA が可能なすべての I/O デバイスは、(既定で) 有効になっている IOMMU の背後にある必要があります。 IOMMU は、DmaGuard/DeviceEnumerationPolicy に基づいてデバイスのブロックとブロック解除を行うために使用され、互換性のあるドライバーを持つデバイスに対して DMA の再マッピングを実行します。
PCI Express ネイティブ コントロールのサポート カーネル DMA 保護をサポートするには、_OSC ACPI メソッドを使用して、PCI Express ネイティブ コントロールのサポートを有効にする必要があります。
プリブート DMA 保護
  • システム ファームウェアが、すべての DMA 可能デバイスの IO バッファーの ExitBootServices() より前に、DMA 分離を実装することで、プリブート DMA 攻撃から保護する必要があります。
  • システムファームウェアが、ExitBootServices () と、OS によって開始されるデバイス ドライバーとの間で DMA を実行するために必要な子デバイスを持たないすべての PCI ルート ポートの Bus Master Enable (BME) ビットを無効にする必要があります。
  • ExitBootServices () の時点で、IOMMU がシステム ファームウェアによって電源オンの状態に復元される必要があります。
  • デバイスは、デバイスのそれぞれのOSドライバーが読み込まれ、PnPによって開始されるまで、ExitBootServices()の後にRMRR領域 (Intel) またはIVMDブロック (AMD) の外部でDMAを実行することはできません。
    • ExitBootServices の後、OS によるデバイスドライバーの起動前に、RMRR リージョンまたは IVMD ブロックの外部で DMA を実行すると、IOMMU 障害が発生し、システム バグチェック (0XE6) が発生する可能性があります。
ACPI カーネル DMA 保護インジケーター
トラステッド プラットフォーム モジュール (TPM) 2.0 TPM (ディスクリートまたはファームウェア) で十分です。 詳細については、トラステッド プラットフォーム モジュール (TPM) 2.0 に関するページを参照してください。
  • IOMMU (VT-D または AMD-Vi) またはカーネル DMA 保護が無効になっているか、これから無効にされるか、より低いセキュリティ状態に構成されるすべてのブートで、プラットフォームは、DMA を有効にする前に、EV_EFI_ACTION イベントを PCR [7] に拡張する必要があります
  • イベント文字列は「DMA保護無効」である必要があります。 プラットフォームファームウェアは、イベントデータに「DMA保護無効」という文字列を使用して、この測定値をイベントログに記録する必要があります。

Windows 10 システムのカーネル DMA 保護の状態をする

次のいずれかの方法を使用して、特定のシステムのカーネル DMA 保護の状態を確認できます

  1. システム情報アプリケーションを使用:

    • MSINFO32.exe を起動します。
    • [システムの概要] ページの [カーネル DMA 保護] フィールドを確認します。
  2. Windows セキュリティ アプリケーションを使用:

    • Windows スタートメニューから Windows セキュリティ アプリケーションを起動します。

    • [デバイスセキュリティ] アイコンをクリックします。

    • [コア分離の詳細] をクリックします。

    • 有効になっている場合は、 [メモリアクセス保護] が利用可能なセキュリティ機能として表示されます。

      • [メモリアクセス保護] が表示されない場合は、その機能がシステムで有効になっていません。

カーネル DMA 保護の概要

デバイス ドライバーのための DMA 再マッピングを有効にする

DMAGuard ポリシー