内核 DMA 保护

适用于

  • Windows 10
  • Windows 11

在 Windows 10 版本 1803 中,Microsoft 推出了一项名为“内核 DMA 保护”的新功能,用于保护电脑免受使用连接到外部可访问的 PCIe 端口 (例如 Thunderbolt™ 3 端口和 CFexpress) 的 PCI 热插设备的驱动器直接内存访问 (DMA) 攻击。 在 Windows 10 版本 1903 中,Microsoft 扩展了对内核 DMA 保护支持,以涵盖内部 PCIe 端口 (例如 M.2 槽)

路过式 DMA 攻击可能会导致泄露驻留在电脑上的敏感信息,甚至会注入恶意软件,从而允许攻击者绕过锁屏界面或远程控制电脑。

此功能无法通过 1394/FireWire、PCMCIA、CardBus、ExpressCard 等来防范 DMA 攻击。

Background

PCI设备具有DMA功能,这使得它们可以随意地读写系统内存,而无需让系统处理器参与这些操作。 DMA 功能使 PCI 设备成为目前可用的最高性能设备。 这些设备过去仅存在于电脑机箱内,可以作为卡连接或焊接在主板上。 访问这些设备需要用户关闭系统电源并拆解机箱。

如今,热插 PCIe 端口 (例如 Thunderbolt™ 和 CFexpress) 不再如此。

热插 PCIe 端口(如 Thunderbolt™ 技术)为新式电脑提供了以前不适用于电脑的扩展性。 它允许用户将外部外设的新类 (如显卡或其他 PCI 设备) 附加到具有与 USB 相同的热插体验的电脑上。 将 PCI 热插端口置于外部并易于访问会使电脑容易受到路过式 DMA 攻击。

路过式 DMA 攻击是在系统所有者不在场的情况下发生的攻击,通常需要不到 10 分钟,攻击工具从简单到中等 (价格低廉,现成的硬件和软件),而无需要拆卸电脑。 一个简单的示例是电脑所有者离开电脑去喝咖啡,而在休息的时候,攻击者走进来,插入类似 USB 的设备,然后带走了机器上的所有机密,或者注入恶意软件,使他们能够远程完全控制电脑。

Windows 如何防范 DMA 路过式攻击

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

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

用户体验

内核 DMA 保护用户体验

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

系统兼容性

内核 DMA 保护需要新的 UEFI 固件支持。 预计该支持仅适用于新推出的、与 Windows 10 版本 1803 一起转运的、基于 Intel 的系统 (并非所有系统)。 无需基于虚拟化的安全性 (VBS)。

若要查看系统是否支持内核 DMA 保护,请检查系统信息桌面应用 (MSINFO32)。 Windows 10 版本 1803 之前发布的系统不支持内核 DMA 保护,但它们可以利用其他 DMA 攻击缓解措施,如 BitLocker 对策 中所述。

备注

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

如何检查内核 DMA 保护是否已启用

运行支持内核 DMA 保护的 Windows 10 版本 1803 的系统确实由 OS 自动启用这一安全功能,而无需用户或 IT 管理员配置。

使用 Windows 安全中心应用

从 Windows 10 版本 1809 开始,可以使用 Windows 安全应用来检查是否启用了内核 DMA 保护。 单击 开始 > 设置 > 更新和安全中心 > Windows 安全中心 > 打开 Windows 安全中心 > 设备安全中心 > 核心隔离详细信息 > 内存访问保护

Windows 安全中心内核 DMA 保护

正在使用系统信息

  1. 在命令提示符或 Windows 搜索栏中启动 MSINFO32.exe。

  2. 检查 内核 DMA 保护 的值。

    系统信息中的内核 DMA 保护。

  3. 如果 内核 DMA 保护 的当前状态为关闭,并且 Hyper-V - 在固件中启用的虚拟化 为否:

    • 重新启动到 BIOS 设置
    • 启用 Intel 虚拟化技术。
    • 启用适用于 I/O (VT-d) 的 Intel 虚拟化技术。 在 Windows 10 版本 1803 中,仅支持 Intel VT-d。 其他平台可以使用 BitLocker 对策 中所述的 DMA 攻击缓解措施。
    • 重新启动系统进入 Windows。

    备注

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

    备注

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

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

    对于不支持内核 DMA 保护的系统,请参阅 BitLocker 对策Microsoft Windows® 10 操作系统上的 Thunderbolt™3 安全性 的其他 DMA 保护手段。

常见问题解答

市场内系统是否支持 Thunderbolt™ 3 的内核 DMA 保护?

在升级到 Windows 10 版本 1803 后,使用 Windows 10 版本 1709 或更早版本发布的市场内系统将不支持 Thunderbolt™ 3 的内核 DMA 保护,因为此功能需要 BIOS/平台固件更改,并保证无法回传到以前发布的设备。 对于这些系统,请参阅 BitLocker 对策Microsoft Windows® 10 操作系统上的 Thunderbolt™3 安全性 的其他 DMA 保护手段。

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

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

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

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

用户对内核 DMA 保护的体验

*对于 Windows 10 版本 1803 和 1809,设备管理器中的属性字段使用 GUID,如下图中所示。

用户对内核 DMA 保护的体验

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

如果外围设备确实具有 Windows 提供的类驱动程序,请在系统上使用这些驱动程序。 如果 Windows 没有为外设提供类驱动程序,请与外围供应商/驱动程序供应商联系来更新驱动程序,以支持DMA 重新映射

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

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

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

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

在 Windows 10 版本 1803 及更高版本中,用于 USB XHCI (3.x) 控制器、存储 AHCI/SATA 控制器和存储 NVMe 控制器的 Microsoft 收件箱驱动程序支持 DMA 重新映射。

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

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

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

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

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

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

相关主题