# Jetset：面向嵌入式系统的定向固件重托管

> 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 内核中发现一个提权漏洞。

- 作者：Evan Johnson; Maxwell Bland; YiFei Zhu; Joshua Mason; Stephen Checkoway; Stefan Savage; Kirill Levchenko
- 原标题：Jetset: Targeted Firmware Rehosting for Embedded Systems
- 发表载体：USENIX Security 2021
- 发表状态：会议论文
- 出版／提交日期：2021 年 8 月
- 日期依据：USENIX 官方论文集引用信息给出 2021 年 8 月。本条目保留月精度，不以论文集封面上 8 月 11–13 日的研讨会日期替代具体出版日。
- 来源复核于：2026-10-19
- 收录于：2026-10-30
- 原始论文：<https://www.usenix.org/conference/usenixsecurity21/presentation/johnson>
- PDF：<https://www.usenix.org/system/files/sec21-johnson.pdf>
- 代码：<https://github.com/aerosec/jetset>
- BibTeX：<https://awesomerea.org/papers/citations/paper-jetset.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-jetset/>
- 记录 JSON：<https://awesomerea.org/papers/paper-jetset/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-jetset/index.md)

## 研究范围与局限

这是定向重托管，并非完整的设备仿真或固件反编译。MMIO 范围、入口点和目标地址需由分析人员提供；合成模型先重放一条满足约束的路径，之后对每个地址返回最后一个满足约束的值，因此不必与真实硬件一致，到达目标后也可能无法正确处理有状态或复杂的外设交互。不支持 DMA；需要 DMA 的两个目标分别依赖已有的 QEMU 设备模型或人工标为符号值的内存区域。控制流图不完整（例如跨越虚函数调用或 x86 任务切换）会削弱距离启发式，BeagleBoard-xM 仿真也因把合成的串口数据当作代码执行而崩溃。保真度检验只在部分目标上与硬件或人工构建的 QEMU 模型对比。作者称 VRTX 提权漏洞主要具有学术意义。

## 与本合集的关联

补充基于符号执行合成外设模型、使固件启动到分析位置的方法，与本节的 HAL 替换、MMIO 建模模糊测试及 Linux 用户态重托管研究互补。

## 发表与复核说明

USENIX 报告页面与最终论文集 PDF 按此顺序列出七位作者，记载第 30 届 USENIX 安全研讨会、第 321–338 页、ISBN 978-1-939133-24-3 及 8 月；19 页的 PDF 含一页论文集封面。该页面另链接一份预发表 PDF。未找到 DOI 或 arXiv 标识符。论文将 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 则未声明许可证。

## 一手来源

1. <https://www.usenix.org/conference/usenixsecurity21/presentation/johnson>
2. <https://www.usenix.org/system/files/sec21-johnson.pdf>
3. <https://github.com/aerosec/jetset/blob/a55dc69ef7b8a1d768df192065916fa4936258b1/README.md>
4. <https://github.com/aerosec/jetset/blob/a55dc69ef7b8a1d768df192065916fa4936258b1/LICENSE.GPL>
5. <https://github.com/aerosec/jetset/blob/a55dc69ef7b8a1d768df192065916fa4936258b1/Makefile>
6. <https://github.com/aerosec/jetset_engine/blob/b71990fb002948b221710233e519f3340344c91a/README.md>
7. <https://github.com/aerosec/aerosec.github.io/blob/c831d9d329bb1d0b788a5ce1d31baba1e7ea53ce/_data/publications.yml>
8. <https://github.com/aerosec/jetset_qemu/blob/ea9d17aad5edb030c836bcd7ab911a6cb275fedf/LICENSE>
9. <https://github.com/aerosec/jetset_public_data/tree/c1f387325bd102f248d6f4a02f86d616210fad74>

## 关于此条目

已依据论文及一手来源复核。请通过原始论文或 BibTeX 引用原作者。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
