长亭百川云 - 文章详情

G.O.S.S.I.P 阅读推荐 2024-06-12 DMAAUTH:针对DMA攻击的防护架构

安全研究GoSSIP

66

2024-07-13

今天为大家推荐的论文来自浙江大学网络空间安全学院申文博研究组投稿并发表在 USENIX Security 2024 上的最新工作 DMAAUTH: A Lightweight Pointer Integrity-based Secure Architecture to Defeat DMA Attacks。该工作提出了一种全新的软硬件协同的安全架构,来从根源上防护 DMA 攻击,可扩展到异构架构,保护GPU/XPU等异构算力安全。

图 1:DMAAUTH 监测并校验所有来自 PCIe 的流量,实现互联设备对内存的完全安全访问

该工作基于 Kintex Ultrascale 系列 FPGA 实现了带有 PCIe 的 SoC 设计作为测试基线。在逆向了 AMD Xilinx 提供的用来构建板级支持包的 PetaLinux 工具后,该工作成功为 Rocket Chip Generator 生成的 CPU 核添加了 PCIe 支持,构建了首个可定制PCIe总线协议的RISC-V 片上系统SoC 异构研究平台。该平台允许研究者轻松地将基于 AXI4 的硬件模块嵌入 SoC 来定制内存控制器和 PCIe 总线之间的数据交互,进而进行更多软硬件协同的性能和安全研究。研究组正在进行该平台的开源准备工作,为后续工作提供基础,助力相关的架构和系统研究。

图 2:异构计算内存安全研究平台

该工作对在该平台上扩展实现了DMAAUTH和IOMMU,并将两者的性能与安全性进行了对比。结果表明,DMAAUTH在性能和安全性上均显著优于IOMMU。由于其仅引入了极少的内核代码,并无需对驱动代码进行任何修改,这一架构具有在实际生产环境中应用的可行性。

该论文贡献如下:

  • 完成了高安全性的细粒度、轻量化的针对 DMA 攻击的保护硬件 DMAAUTH 设计,并兼容IOMMU以及现有的外设;

  • 提出了APAC技术,在支持指针算术操作的同时保证指针完整性;

  • 在 FPGA 上完成了高度可扩展的基于 Rocket Chip 的RISC-V SoC基线设计和实现,构建起外部设备与内存互联的研究平台;

  • 在该研究平台其上添加 DMAAUTH,并通过极小的内核修改,实现了针对 DMA 攻击的完全防护;

  • 在 ARM 和 RISC-V 的 QEMU 上均实现了 DMAAUTH 来监测并校验 PCIe 总线流量,验证了 DMAAUTH 的跨指令集架构能力。

背景

DMA(直接内存访问)是一项历史悠久的技术, 允许系统中的外设独立直接读写内存,而不需要 CPU介入,从而将 CPU从繁重的数据搬运工作中解放出来,执行其他工作负载。但是 DMA 引入了新的安全问题,具有 DMA 能力的外部设备可以直接窃取或篡改内存,进而控制整个系统。

早在 2004 年,Michael Becher 等人就展示了这一威胁,他们通过一台 iPod 利用 FireWire 接口成功攻击了计算机,实现了内存的任意读写。这一事件揭示了 DMA 技术的双刃剑属性:尽管它能显著提升系统性能,但也为攻击者提供了直接接触内存的通道。

而 IOMMU (输入输出内存管理单元)的引入一定程度上防护了 DMA 攻击。IOMMU 将物理地址空间虚拟化为IOVA(输入输出虚拟地址)空间,并且仅允许外部设备访问那些被映射到 IOMMU 的物理帧,实现了对 DMA 攻击的页粒度防护。但和输入输出缓冲区位于统一页内的敏感数据仍然会被暴露给外部设备,引发空间维度漏洞。同时为了保障 IOMMU 的性能,IOMMU 的 TLB 刷新通常会被聚集起来执行,这就导致了已经被取消的映射会短暂地存在于 TLB 中,引发时间维度漏洞。

设计

为了从根源上防护 DMA 攻击,彻底解决空间和时间维度的漏洞,该研究工作提出了一种全新的软硬件协同架构——DMAAUTH。该架构基于指针完整性和字节粒度的边界检查,实现了对 DMA 攻击的全面防护。

图 3:DMAAUTH 软硬件协同架构工作流程

上图是 DMAAUTH 的软硬件协同工作流。图中的绿色部分是 DMAAUTH 为了 DMA 安全而引入的步骤。

在开始进行传输之前,内核会为外部设备创建好 DMA 缓冲区的映射,并为其准备好用于进行 DMA 指针。在 IOMMU 被启用时,DMAAUTH 是基于 IOVA 来进行边界检查和签名校验的;而在没有 IOMMU 的情形下,DMAAUTH 直接使用物理地址来进行防护,并且能够实现同样的安全性,完全防护 DMA 攻击。

1. 当设备需要内存时,操作系统内核为I/O分配一个对象,但只有该对象的一部分(图中的块标记I/O Buffer)应该允许设备访问。在没有 DMAAUTH 保护的情形下,对象的其余部分以及映射页面(图中标记为红色)会暴露给外设,导致了空间维度漏洞。 

2. 在内存分配之后,内核显式地将缓冲区映射到页面,并获得DMA指针,在没有IOMMU 的情况下这是物理地址;如果启用IOMMU则为IOVA。

3. 根据映射的缓冲区,受保护的内核会生成该次映射的元数据,其中包含映射缓冲区的上下界和一个随机生成的标识符。

4. 受保护的内核使用整个元数据对DMA指针进行签名,以保护指针和元数据。签名的APAC指针随后准备传递给设备。

5. 元数据存储在相应的条目中,准备由DMAAUTH硬件引用。所有元数据都保存在元数据表的专用内存中,即使外设劫持数据流也无法泄露,提供了额外的弹性。

然后外设将会接管传输阶段,并使用经过保护的指针直接或带有偏移量作为DMA地址。

6. 拦截DMA内存访问时,I/O总线上的校验器首先获取元数据,然后使用整个元数据条目验证指针签名,以确定指针是否被恶意外设伪造或已过时。此外,硬件还会使用元数据中的边界检查访问是否在合法范围内。

7. DMAAUTH硬件最后会从APAC指针中剥离出签名,形成合法的物理地址或IOVA,如果指针通过了完整性和边界检查,则继续进行外设请求的数据访问。这个认证过程不需要CPU和操作系统内核的参与。

在开始设计架构前,该论文就已经针对不同类型的外部设备的 DMA 行为进行了统计和分析。发现映射的缓冲区大小是十分不规律的,其中有 69.8% 的缓冲区不是页大小的整数倍,也即存在空间维度漏洞。同时有75.2% 的DMA访存是在缓冲区的基地址上添加了一个偏移量后才进行的,这违反了传统的指针签名机制定义的指针完整性。于是该工作提出了 APAC (可进行算数运算的指针签名)机制。

图 4:APAC 机制的原理,仅对高位签名并允许地位部分的算术运算

该机制直接仅对指针的高位进行签名,允许外设对指针低位部分进行算数运算,进而使得添加偏移量后的指针仍然可以通过签名校验,又保证了指针高位部分的完整性。而对指针进行签名使用的元数据被独立保存在专有存储中,在 APAC 指针到达 DMAAUTH 硬件后,由硬件用签名索引元数据,并对指针进行校验。

基于该签名机制,该研究工作构建起的 DMAAUTH 在保障指针的完整性的同时,允许外部设备在 DMA 指针上添加偏移量后进行访存,实现了对外部设备的完全透明。

实现

在本文的实现部分,该工作基于其所实现的研究平台的扩展性为该 SoC 分别添加了 DMAAUTH 和 IOMMU 两类硬件。该实现过程证明了该研究平台拥有着极佳的扩展性,允许 CPU 通过 MMIO 为添加的外部设备进行配置,并能获取到所有 PCIe 设备发出的内存读写请求,进行进一步的数据处理或数据校验。

图 5:在研究平台的 Vivado Block Design 中添加 DMAAUTH 硬件模块截获流量并进行校验

基于该平台提供的定制总线与内存互联的能力,该工作在 SoC 的 PCIe 总线与内存控制器之间添加了 DMAAUTH 硬件进而实现了对所有 DMA 请求的截获和校验。在此之外,该研究工作还便捷地将 IOMMU 扩展到了该平台上,并作为对比的基线之一。该 IOMMU 实现有着与商业化 SoC 上的 IOMMU 相近的性能。同时使用该平台评估了 DMAAUTH 架构的安全性和性能开销,并与 IOMMU 的安全性与性能开销进行了对比。

部署成本是许多安全机制的痛点,一旦引入大量的修改,机制就难以被应用在实际生产环境中。而 DMAAUTH 简洁的设计达成了仅用约 100 行 C 语言代码就在内核的 DMA API 中嵌入 DMAAUTH 的驱动逻辑,并且在对外设零修改的情况下就实现了对 DMA 攻击的完全防护,因此有很强的被实际应用的潜力。

评估

图表 6:DMAAUTH、无保护系统与 IOMMU 保护下的系统的安全性与性能对比。

在安全性对比中,DMAAUTH 机制可以防护六类常见的 DMA 攻击,而 IOMMU 仅能部分防御其中的两类。而在性能评估中,该研究工作使用真实的网卡和固态硬盘两类硬件评估了 DMAAUTH 的性能开销。DMAAUTH 对设备吞吐量的开销约为 1.0%,引入的 CPU 运行时间开销为 1.8%,分别比 IOMMU 低 82.1% 和 68.9%.

通过一系列实验和对比,DMAAUTH 在安全性和性能上都表现出色,比 IOMMU 更加优秀。本文认为 DMAAUTH 是一种低开销、轻量化的防护架构,能够从根源上防护 DMA 攻击,为异构系统的内存安全提供了一个强有力的解决方案。

作者简介

王行楷,2023 级浙江大学计算机科学与技术学院硕士生,本科毕业于浙江大学竺可桢学院图灵班,导师为申文博老师。研究方向为软硬件协同安全和操作系统安全。在 USENIX Security,TDSC 上发表过相关研究成果。

申文博,浙江大学百人计划研究员,博士生导师,研究方向为操作系统安全,云原生系统安全,软件供应链安全。发表论文40余篇,获得包含CCF-A类会议NDSS,CCF-B类会议ACSAC以及CCF-C类会议AsiaCCS等三项杰出论文奖(NDSS 16, AsiaCCS 17, ACSAC 22)。

个人主页:https://wenboshen.org/

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2