内核 DMA 保护

内核直接内存访问 (DMA) 保护是一项 Windows 安全功能,可防止外部外围设备未经授权访问内存。

PCIe 热插拔设备(如 Thunderbolt、USB4 和 CFexpress)允许用户使用 USB 的即插即用功能将各种外部外围设备(包括图形卡)连接到其设备。 这些设备支持 DMA,可以访问系统内存并执行读取和写入操作,而无需系统处理器的参与。 此功能是 PCI 设备卓越性能背后的原因,但也使它们容易受到 DMA 驱动的攻击

驾驶 DMA 攻击是在系统所有者不存在时发生的攻击,通常只需几分钟时间,使用简单到中等的攻击工具 (负担得起的现成硬件和软件) ,不需要对设备进行反汇编。 例如,攻击者可以在设备所有者休息时插入类似于 USB 的设备,并随计算机中的所有机密一起离开,或者注入一个恶意软件,允许他们在绕过锁屏界面时远程完全控制设备。

注意

内核 DMA 保护功能无法通过 1394/FireWire、PCMCIA、CardBus 或 ExpressCard 防范 DMA 攻击。

Windows 如何防范 DMA 路过式攻击

Windows 使用系统 输入/输出内存管理单元 (IOMMU) 来阻止外部外围设备启动和执行 DMA,除非这些外围设备的驱动程序支持内存隔离 (,例如 DMA 重新映射) 。 具有 DMA Remapping 兼容驱动程序 的外围设备会自动枚举、启动并允许对其分配的内存区域执行 DMA。

默认情况下,阻止具有 DMA 重新映射不兼容驱动程序的外围设备启动和执行 DMA,直到授权用户登录到系统或解锁屏幕。 IT 管理员可以使用 MDM 或组策略修改应用于具有 DMA 重新映射不兼容驱动程序的设备的默认行为。

用户体验

启用内核 DMA 保护后:

  • 将自动枚举并启动具有 DMA 重新映射兼容设备驱动程序的外围设备
  • 如果外围设备在授权用户登录之前或屏幕已锁定,则会阻止具有 DMA Remapping 不兼容驱动程序的外围设备启动。 解锁系统后,外围设备驱动程序由 OS 启动,外围设备将继续正常运行,直到系统重新启动或拔出外围设备。 如果用户锁定屏幕或注销系统,外围设备将继续正常运行。

Windows 版本和许可要求

下表列出了支持内核直接内存访问 (DMA) 保护的 Windows 版本:

Windows 专业版 Windows 企业版 Windows 专业教育版/SE Windows 教育版

内核直接内存访问 (DMA) 保护许可证权利由以下许可证授予:

Windows 专业版/专业教育版/SE Windows 企业版 E3 Windows 企业版 E5 Windows 教育版 A3 Windows 教育版 A5

有关 Windows 许可的详细信息,请参阅 Windows 许可概述

系统兼容性

内核 DMA 保护需要 UEFI 固件支持,并且不需要基于虚拟化的安全 (VBS) 。

内核 DMA 保护与其他 BitLocker DMA 攻击对策不兼容。 如果系统支持内核 DMA 保护,建议禁用 BitLocker DMA 攻击对策。 内核 DMA 保护为系统提供比 BitLocker DMA 攻击对策更高的安全标准,同时保持外部外围设备的可用性。

注意

在具有 WDDM 3.0 驱动程序模型的 Windows 11 中添加了对图形设备的 DMA 重新映射支持;Windows 10 不支持此功能。

检查是否启用了内核 DMA 保护

支持内核 DMA 保护的系统会自动启用该功能,无需用户或 IT 管理员配置。

可以使用 Windows 安全设置来检查是否启用了内核 DMA 保护:

  1. 打开 Windows 安全中心

  2. 选择“设备安全>核心隔离详细信息>”“内存访问保护

    Windows 安全中心中内核 DMA 保护的屏幕截图。

    或者,可以使用系统信息桌面应用 (msinfo32.exe) 。 如果系统支持内核 DMA 保护,则 内核 DMA 保护 值设置为 ON

    系统信息中内核 DMA 保护的屏幕截图。

    如果 内核 DMA 保护 的当前状态为 OFFHyper-V - 在固件中启用虚拟化

    • 重新启动到 UEFI 设置
    • 打开 Intel 虚拟化技术
    • 启用适用于 I/O (VT-d) 的 Intel 虚拟化技术
    • 将系统重新启动到 Windows

    注意

    如果启用 Hyper-V Windows 功能,则将隐藏所有与 Hyper-V 相关的功能,并且已检测到虚拟机监控程序。将不会显示 Hyper-V 所需的功能实体将显示在列表底部。 这意味着 Hyper-V - 在固件中启用虚拟化 设置为 “是”。

    在固件 (IOMMU) 中启用 Hyper-V 虚拟化才能启用内核 DMA 保护,即使固件具有适用于 OEM 的内核 DMA 保护 (内存访问保护) 中所述的 ACPI 内核 DMA 保护指示器标志也是如此。

    如果 内核 DMA 保护 的状态保持为“关闭”,则系统不支持内核 DMA 保护。

对于不支持内核 DMA 保护的系统,请参阅 Microsoft Windows 操作系统上的 BitLocker 对策Thunderbolt 3 和安全性 ,了解其他 DMA 保护方式。

常见问题

内核 DMA 保护是否在启动期间阻止了路过式 DMA 攻击?

不,内核DMA保护只保护 OS 加载后的路过式 DMA 攻击。 系统固件/BIOS 负责在启动期间通过 Thunderbolt 3 端口防范攻击。

如何检查某个驱动程序是否支持 DMA 重新映射?

并非所有设备和驱动程序都支持 DMA 重新映射。 若要检查特定驱动程序是否已选择加入 DMA 重新映射,请在“设备管理器*”中设备的“详细信息”选项卡中检查与 DMA 重新映射策略属性对应的值。 值为 01 表示设备驱动程序不支持 DMA 重新映射。 值 2 表示设备驱动程序支持 DMA 重新映射。 如果 属性不可用,则设备驱动程序不支持 DMA 重新映射。 检查要测试的设备的驱动程序实例。 某些驱动程序可能具有不同的值,具体取决于设备的位置 (内部与外部)。

Thunderbolt 控制器的设备详细信息的屏幕截图,其中显示值为 2。

PCI 或 Thunderbolt 3 外围设备的驱动程序何时不支持 DMA 重新映射?

将 Windows 提供的驱动程序用于外围设备(如果可用)。 如果 Windows 没有为外设提供类驱动程序,请与外围供应商/驱动程序供应商联系来更新驱动程序,以支持DMA 重新映射

我的系统的内核 DMA 保护已关闭。 是否可以为特定设备启用 DMA 重新映射?

是。 特定设备的 DMA 重映射可以独立于内核 DMA 保护启动。 例如,如果驱动程序选择启用,并且启用了用于定向 I/O) 的 VT-d (虚拟化技术,则即使已关闭内核 DMA 保护,也会为设备驱动程序启用 DMA 重新映射。

内核 DMA 保护是一种策略,其根据设备的重映射状态和能力,允许或阻止设备执行 DMA。

Microsoft 驱动程序是否支持 DMA 重新映射?

USB XHCI (3.x) 控制器、存储 AHCI/SATA 控制器和存储 NVMe 控制器的Microsoft收件箱驱动程序支持 DMA 重映射。

非 PCI 设备的驱动程序是否需要与 DMA 重新映射兼容?

否。 非 PCI 外围设备(例如 USB 设备)不执行 DMA,因此驱动程序无需与 DMA 重新映射兼容。

企业如何启用外部设备枚举策略?

外部设备枚举策略控制是否枚举与 DMA 重新映射不兼容的外部外围设备。 始终枚举与 DMA 重新映射兼容的外围设备。 非外围设备才能阻止、允许或仅用户登录 (默认) 后允许。

可以使用以下方法启用策略:

  • 组策略: 与内核 DMA 保护不兼容的外部设备的管理模板\System\Kernel DMA 保护\枚举策略
  • 移动设备管理 (MDM): DmaGuard 策略