DMA攻击

DMA攻击是计算机安全领域中的一种旁路攻击，攻击者利用允许直接記憶體存取（DMA）的高速扩展端口来侵入计算机或其他设备。 DMA技术允许与计算机相连的设备（例如摄录一体机（英语：camcorder）、网卡、儲存裝置，或其他附件或内置的PC卡）使用直接硬件访问来读写主内存，无需操作系统的任何监督或交互，得以最大化数据传输速度。采用DMA技术的正当用途配件和连接已广泛存在，但攻击者可以用同样方式制作一个与端口连接的恶意附件，然后可能直接访问计算机物理内存的部分或全部地址空间，进而绕过一切操作系统安全机制和鎖定螢幕，读取计算机执行的所有操作，窃取数据或密钥，安装或运行间谍软件，或侵入其他漏洞，以及修改系统来允许軟體後門或其他形式的恶意软件。 对此类端口进行物理连接防护可预防DMA攻击。许多计算机的BIOS或UEFI中可以禁用DMA连接，以减少或消除此类攻击。 使用DMA技术且可能存在漏洞的连接包括FireWire、CardBus、ExpressCard、Thunderbolt、USB 4.0、PCI、PCI-X和PCI Express等。 现代操作系统中，非系统级（即用户模式）的应用程序不能访问任何未被虚拟内存控制器（即内存管理单元，MMU）明确授权的内存位置。除预防可能因软件缺陷造成的损害，并提升物理内存使用效率外，这种架构也是操作系统安全性的一部分。但是，内核模式驱动程序、许多硬件设备以及用户模式中的漏洞，都能允许直接、无障碍地访问物理内存地址空间。物理地址空间包括全部的主系统内存，以及内存映射总线和硬件设备（由操作系统通过类似普通内存读写的方式控制）。 OHCI（英语：Open Host Controller Interface） 1394规范允许设备出于性能原因绕过操作系统并直接访问物理内存，没有任何安全限制。而SBP2（英语：Serial Bus Protocol 2）设备能被轻易伪造，从而欺骗操作系统，攻击者能够读取和写入物理内存，进而未经授权地访问内存中的敏感数据。 具有FireWire、ExpressCard、Thunderbolt或其他扩展端口（如司空见惯的PCI和PCI Express）的系统均可能容易受到外部设备的DMA攻击，连接到系统的设备可能直接访问物理内存地址空间，而非安全的虚拟内存地址空间。即便系统本身没有FireWire端口，如果它允许通过PCMCIA/CardBus/PC Card或ExpressCard端口安装FireWire端口设备，也可能受到此攻击。 攻击者可能使用社会工程学攻击向“中奖者”发送恶意的Thunderbolt设备。连接到计算机后，设备能直接、毫无阻碍地访问物理地址空间，绕过操作系统的几乎全部安全措施，并能读取加密密钥、安装恶意软件或控制其他系统设备。如果攻击者可以物理访问目标计算机，同样可以轻松展开攻击。 除上述恶意用途外，DMA也可用于内核调试等合法目的。 名为Inception的工具可发起这种攻击。知名间谍软件FinFireWire（英语：FinFireWire）也能对运行中的Windows、Mac OS或Linux计算机进行非授权访问。 防护潜在恶意设备的物理安全（英语：physical security）措施可以避免DMA攻击。 内核模式驱动程序有许多可能危及系统安全性的权限，因此仅应加载受信任、无缺陷的驱动程序。例如，较新版本的64位Microsoft Windows要求驱动程序必须经过微软测试并取得数字签名，且防止安装任何没有数字签名的驱动程序。 输入输出内存管理单元（IOMMU）是一种将“虚拟内存”概念应用于此类系统总线的技术，可用于杜绝此类安全漏洞，并能提高系统稳定性。英特尔的IOMMU技术命名为VT-d，AMD的IOMMU技术命名为AMD-Vi。Linux和Windows 10支持上述IOMMU技术 并运用它们来阻止非授权的I/O事务。 较新的操作系统本身也可能提供预防DMA攻击的措施。近年的Linux内核包含禁用FireWire设备DMA的选项，且不会影响其他功能。Microsoft Windows 8.1会阻止访问无人值守、控制界面已锁定的设备的DMA端口。但截至2019年，主流操作系统尚未考虑可能被恶意设备利用的，多个模拟外围设备之间复杂交互方式所产生的漏洞。 另一个抵御DMA攻击的缓解方案是，不在未加密的内存中存储敏感数据。但禁止读取内存内容的措施并不周全，通过DMA写入内存可能实现代碼注入，进而损害看似安全的内存外存储设备。其中一个例子是TRESOR-HUNT，通过覆盖操作系统的某些部分，它能暴露出从未存储于物理内存、仅存在于特定CPU寄存器中的加密密钥。 对于有忧虑的用户，微软建议更改Windows的默认配置。 冷启动攻击 引脚控制攻击（英语：Pin control attack） Freddie Witherden. Memory Forensics Over the IEEE 1394 Interface (PDF). 2010-09-07 [2011-04-02]. （原始内容存档 (PDF)于2021-05-02）.  Piegdon, David Rasmus. Hacking in Physically Addressable Memory - A Proof of Concept (PDF). Seminar of Advanced Exploitation Techniques, WS 2006/2007. 2006-02-21 [2022-03-30]. （原始内容存档 (PDF)于2021-05-08）.  Blocking the SBP-2 Driver to Reduce 1394 DMA Threats to BitLocker. Microsoft. 2011-03-04 [2011-03-15]. （原始内容存档于2012-08-13）.  Tom Green. 1394 Kernel Debugging: Tips And Tricks. Microsoft. [2011-04-02]. （原始内容存档于2011-04-09）.  Inception is a physical memory manipulation and hacking tool exploiting PCI-based DMA. The tool can attack over FireWire, Thunderbolt, ExpressCard, PC Card and any other PCI/PCIe interfaces.: carm... 28 June 2019 [2022-03-30]. （原始内容存档于2022-04-01）.  Tactical IT Intrusion Portfolio: FINFIREWIRE (PDF). Gamma International. October 2011 [2014-04-28]. （原始内容存档 (PDF)于2022-01-20）.  /linux/Documentation/Intel-IOMMU.txt. 14 July 2014. （原始内容存档于14 July 2014）.  Linux Kernel Driver DataBase: CONFIG_AMD_IOMMU: AMD IOMMU support. cateee.net. [2022-03-30]. （原始内容存档于2021-05-11）.  Dansimp. Kernel DMA Protection (Windows 10) - Microsoft 365 Security. docs.microsoft.com. [2021-02-16]. （原始内容存档于2020-04-22） （美国英语）.  Hermann, Uwe. Physical memory attacks via FireWire/DMA - Part 1: Overview and Mitigation. 14 August 2008. （原始内容存档于4 March 2016）.  Countermeasures: Protecting BitLocker-encrypted Devices from Attacks. Microsoft. January 2014. （原始内容存档于2014-03-24）.  Thunderclap: Exploring Vulnerabilities in Operating System IOMMU Protection via DMA from Untrustworthy Peripherals – NDSS Symposium. [2020-01-21]. （原始内容存档于2019-08-06） （美国英语）.  Blass, Erik-Oliver. TRESOR-HUNT. Proceedings of the 28th Annual Computer Security Applications Conference on - ACSAC '12. 2012: 71. ISBN 9781450313124. doi:10.1145/2420950.2420961.  KB2516445: Blocking the SBP-2 Driver to Reduce 1394 DMA Threats to Bitlocker. Microsoft. 2011-03-04 [2011-03-15]. （原始内容存档于2012-08-13）.  0wned by an iPod - hacking by Firewire由 Maximillian Dornseif 在 PacSec/core04 会议上的演讲，日本，2004 通过 Firewire/DMA 进行物理内存攻击 - 第 1 部分：概述和缓解（更新）