2021 · 会议论文

DICE:面向动态固件分析的 DMA 输入通道自动仿真

DICE: Automatic Emulation of DMA Input Channels for Dynamic Firmware Analysis

DICE 为既不模拟外设也不模拟 DMA 控制器的微控制器固件仿真器增加 DMA 输入仿真。它监视固件向内存映射 DMA 控制器区域写入的源与目的传输指针对,并根据固件随后的访问推断传输方向。当固件读取外设到 RAM 的目的缓冲区时,DICE 以分析器提供的输入(如模糊测试数据)作答,并以保守方式扩展缓冲区边界。原型修改了 P2IM(ARM Cortex-M)与一款 PIC32 仿真器(MIPS M4K/M-Class)所用的 QEMU 分支。在覆盖 5 家厂商 9 种 DMA 控制器的 83 个示例固件上,作者报告检测出 37 个输入通道中的 33 个且无误报,为 22 个缓冲区中的 21 个提供了正确输入,平均开销为 3.4%。对 7 个真实固件进行 48 小时模糊测试,发现 5 个此前未知的缺陷。

研究范围与局限

仅仿真 DMA 输入通道;它不模拟外设行为、不恢复外设语义,也不构建精确的设备复刻,所提供的输入是分析器数据而非真实外设流量。它假定传输描述符写入 DMA 控制器寄存器,因此不支持存放在 RAM 中的描述符。仅需目的地址的配置(如 nRF52832 EasyDMA 等两种控制器型号)也无法识别,占 52 个流配置中的 7 个。缓冲区大小为启发式估计。真实标签来自数据手册与固件检查,结果仅覆盖作者的 83 个示例固件及 7 个模糊测试固件。缺陷是在七个模糊测试固件中的两个里、借助简单的内存检测器发现的。PIC32 原型只能运行其他外设可由简单默认寄存器处理器应付的固件。

与本合集的关联

补充面向固件重托管的 DMA 输入通道仿真研究,与本合集中侧重 MMIO 建模及模糊测试的微控制器重托管研究互补。

发表与复核详情

发表载体
IEEE S&P 2021
发表状态
会议论文
出版/提交日期
2021 年 5 月
日期依据
出版方提交的 Crossref 元数据记录印刷出版时间为 2021 年 5 月,即 5 月 24 日至 27 日研讨会所在月份。无法自动访问 IEEE Xplore,本条目不记录具体出版日。
arXiv 首次提交
2020 年 7 月 3 日
arXiv
2007.01502
已复核的 arXiv 版本
v3
DOI
10.1109/SP40001.2021.00018

Crossref 确认四位作者顺序、2021 年 IEEE S&P 会议论文集、第 1938–1954 页及 DOI;IEEE Xplore 拒绝自动访问。所审阅的 2021-01-15 arXiv v3(v1 为 2020-07-03)载有期刊引用“42nd IEEE Symposium on Security and Privacy, S&P 2021”,并链接代码仓库。所审阅的 master 快照 2b3b8c8b 推送于 2023-10-14。其 LICENSE 规定除另有说明外 DICE 采用 Apache-2.0;AFL 及 P2IM 对 AFL 的修改为 Apache-2.0,QEMU、P2IM 对 QEMU 的修改、PIC32 扩展以及 P2IM 本身为 GPL-2.0;GitHub 未识别出单一 SPDX 许可证。p2im 与 mips-emulator 目录为子模块,分别固定在 RiS3-Lab/p2im 0a4870b4 与 sergev/qemu a2e0277d。README 仅支持 Ubuntu 16.04 或 18.04,并说明 20.04 上存在问题。DICE 以 QEMU 补丁形式应用,仓库还提供预编译 QEMU 二进制,以及评估用固件二进制、源码和脚本;其中收录的厂商示例固件保留各自条款。本次仅阅读源码文件,未构建、仿真或模糊测试任何内容。

来源复核于

本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。

报告条目过时 建议修正翻译

一手来源

  1. https://ieeexplore.ieee.org/document/9519398
  2. https://api.crossref.org/works/10.1109/SP40001.2021.00018
  3. https://arxiv.org/abs/2007.01502
  4. https://arxiv.org/pdf/2007.01502v3
  5. README.md GitHub · RiS3-Lab/DICE-DMA-Emulation · 修订 2b3b8c8
  6. LICENSE GitHub · RiS3-Lab/DICE-DMA-Emulation · 修订 2b3b8c8
  7. .gitmodules GitHub · RiS3-Lab/DICE-DMA-Emulation · 修订 2b3b8c8