2021 · 会议论文
Jetset:面向嵌入式系统的定向固件重托管
Jetset: Targeted Firmware Rehosting for Embedded Systems
Jetset 只将固件重托管到分析人员指定的目标地址,例如模糊测试器可以注入输入的位置。给定体系结构、MMIO 地址范围、入口点与目标地址后,它使用 angr 配合修改过的 QEMU 对固件进行符号执行,将外设读取视为符号值、轮流触发中断,并借助控制流图距离与禁忌搜索向目标推进。求解得到的约束被转换为供 QEMU 使用的 C 语言外设模型,重放推断出的取值与中断,使固件以具体执行方式启动到目标处。作者在 x86、ARM 与 Motorola ColdFire 上评测了 13 个目标,包括 Raspberry Pi 2 上的 Linux、BeagleBoard-xM 引导程序、SEL-751 继电器、波音 737 的 CMU-900 以及九个 P²IM 固件,并利用 CMU 模型结合 AFL 在其 VRTX 内核中发现一个提权漏洞。
研究范围与局限
这是定向重托管,并非完整的设备仿真或固件反编译。MMIO 范围、入口点和目标地址需由分析人员提供;合成模型先重放一条满足约束的路径,之后对每个地址返回最后一个满足约束的值,因此不必与真实硬件一致,到达目标后也可能无法正确处理有状态或复杂的外设交互。不支持 DMA;需要 DMA 的两个目标分别依赖已有的 QEMU 设备模型或人工标为符号值的内存区域。控制流图不完整(例如跨越虚函数调用或 x86 任务切换)会削弱距离启发式,BeagleBoard-xM 仿真也因把合成的串口数据当作代码执行而崩溃。保真度检验只在部分目标上与硬件或人工构建的 QEMU 模型对比。作者称 VRTX 提权漏洞主要具有学术意义。
与本合集的关联
补充基于符号执行合成外设模型、使固件启动到分析位置的方法,与本节的 HAL 替换、MMIO 建模模糊测试及 Linux 用户态重托管研究互补。
发表与复核详情
- 发表载体
- USENIX Security 2021
- 发表状态
- 会议论文
- 出版/提交日期
- 2021 年 8 月
- 日期依据
- USENIX 官方论文集引用信息给出 2021 年 8 月。本条目保留月精度,不以论文集封面上 8 月 11–13 日的研讨会日期替代具体出版日。
USENIX 报告页面与最终论文集 PDF 按此顺序列出七位作者,记载第 30 届 USENIX 安全研讨会、第 321–338 页、ISBN 978-1-939133-24-3 及 8 月;19 页的 PDF 含一页论文集封面。该页面另链接一份预发表 PDF。未找到 DOI 或 arXiv 标识符;本条目采用经审核的 USENIX Security 报告页面与最终 PDF 规则。论文将 jetset.aerosec.org 列为开源发布地址,但本次审阅时该主机名无法解析。aerosec GitHub 组织的网站列出了该论文,其 aerosec/jetset 仓库含前两位作者的提交;README 称仓库包含复现论文结果所需的代码与数据,但不含属于专有或安全敏感的 CMU-900 与 ICS 二进制。所审阅的 2024-03-21 提交采用 GPL-2.0,其 Makefile 通过 SSH 克隆 jetset_engine、jetset_qemu 与 jetset_public_data 仓库;GitHub 未能为修改版 QEMU 仓库 jetset_qemu 识别出单一许可证,jetset_public_data 则未声明许可证。本次未运行代码、固件或实验。
来源复核于
本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。
一手来源
- https://www.usenix.org/conference/usenixsecurity21/presentation/johnson
- https://www.usenix.org/system/files/sec21-johnson.pdf
- README.md GitHub · aerosec/jetset · 修订 a55dc69
- LICENSE.GPL GitHub · aerosec/jetset · 修订 a55dc69
- Makefile GitHub · aerosec/jetset · 修订 a55dc69
- README.md GitHub · aerosec/jetset_engine · 修订 b71990f
- _data/publications.yml GitHub · aerosec/aerosec.github.io · 修订 c831d9d
- LICENSE GitHub · aerosec/jetset_qemu · 修订 ea9d17a
- https://github.com/aerosec/jetset_public_data/tree/c1f387325bd102f248d6f4a02f86d616210fad74