面向 Arm TrustZone 的实用安全 USB 驱动复用(OSDI 2026)

原题:μUSB: Practical and Safe USB Driver Reuse for Arm TrustZone

一句话总结:μUSB 利用 USB 状态机在固定 I/O 函数上的确定性,把 Linux 驱动的具体 MMIO、DMA 和中断轨迹记录、提升为可接收少量动态输入的模板;在 Raspberry Pi 5 上覆盖存储、音频、视频和 HID,生成模板平均耗时 56.9 秒,所得驱动大小为 15–400 KB,并接近原生驱动性能。

问题与动机

Arm TrustZone 的 secure I/O 可以让 TEE 直接读取受保护的设备数据,但现有 TEE 基本没有 USB 支持。USB 的设备类别多、协议栈深、DMA 频繁,单个 Linux USB 音频驱动及其依赖就可能超过整个 OP-TEE-OS 的规模。直接移植会扩大 TCB 并带入内核漏洞;把驱动拆分到普通世界又会引入不可信 RPC、数据结构和 Iago 攻击面。

已有 record-and-replay 方法通常依赖人工标注或符号执行。人工追踪难以覆盖 USB 大量指针驱动的 DMA 访问,符号执行又无法及时跟上等时传输的严格时限。μUSB 将目标收窄为 trusted app 所需的具体 I/O 函数,而不是复现完整 USB 驱动功能。

关键观察 / 隐含假设

  • 观察 1:固定 I/O 函数会沿 USB 状态机的确定性路径运行。 对给定设备和输入,控制、DMA、MMIO 与 IRQ 事件的结构大体稳定;改变缓冲区地址等输入时,结构仍保持一致。该观察支撑了“具体轨迹可以成为驱动模板”的设计(§2.3、§3.3)。
    • 依赖假设:目标设备、固件和 I/O 函数不会引入未记录的状态分支。
    • 可能失效场景:热插拔、动态接口发现、电源管理、错误恢复或设备固件升级会增加轨迹分支。
  • 观察 2:USB 控制器的数据结构和寄存器规范具有架构独立性。 xHCI 的 MMIO、DMA 描述符和中断接口可以在录制机与 Arm TEE 之间复用(§2.3)。
    • 依赖假设:目标 SoC 使用可由 TrustZone 独占的 xHCI 实例,并能正确配置 TZASC/TZPC。
  • 假设 1:录制阶段使用可信的“金标准”驱动和设备。 μUSB 将原驱动是否充分检查设备状态视为外部前提;它的模板只会复现已观察到的检查(§3.1、§6.2.2)。
    • 证据强度:中;论文给出多类设备的人工核验和长时间压力测试,但没有形式化验证完整轨迹。
  • 假设 2:trusted app 的输入维度有限且设备连接相对静态。 录制器默认只让少数参数动态变化,并在收敛失败时要求开发者减少可变输入(§4.1.2)。
    • 证据强度:强;这是 API、变异停止条件和实验工作负载共同体现的范围约束。

核心方法

μUSB 分为变异录制、静态提升和运行时重放三步。录制器在轻量虚拟机中运行裁剪后的 Linux,通过 hypervisor 的 stage-2 page fault 捕获 xHCI MMIO、USB DMA 区域和中断,另用 ftrace/kprobe 记录调用轨迹。相比 stage-1 fault,KVM 录制每个 DMA/MMIO 事件约增加 0.03 ms,整体执行延迟仅 2.3%(§4.1、§6.3.3)。

录制器根据开发者声明的动态参数生成语义感知变异输入,并每次重启虚拟机以暴露 KASLR 和 DMA 地址变化。轨迹以事件顺序、类型和长度的同构作为收敛条件,默认至少运行 10 次。这样得到的是同一 I/O 函数的多条具体样本,而不是面向代码覆盖率的模糊测试。

提升器先做符号化差分轨迹分析:把控制器、DMA 缓冲区、用户输入、内核输入和设备读值标为符号,再跨轨迹比较,保留命令和描述符拓扑等不变量。随后执行限定污点跟踪(qualified taint tracking),用调用轨迹限定控制流路径,并用模板中的符号地址指导递归数据结构的别名分析,恢复用户输入到 DMA/MMIO 写入之间的运算和路径约束(§4.2)。首次出现的这种轨迹引导分析,是方法能在复杂 Linux 内核上结束的主要原因。

运行时模板被静态链接进 OP-TEE。重放器按顺序执行 MMIO、DMA 和 IRQ 事件,动态重算污点表达式,并检查设备读值和中断是否仍匹配模板。若设备偏离已记录路径,重放器停止、复位设备并重试;它不执行未记录的设备发现或恢复逻辑。视频和音频的重复访问模式还会被 peephole 优化为固定迭代循环,避免数十万事件直接膨胀模板。

设计取舍

  • 具体 I/O 函数优先于完整驱动兼容性:模板显著缩小了 TCB 和攻击面,但不能自然支持热插拔、任意配置或未录制的错误路径。
  • 依赖多次具体录制而非完整符号执行:录制速度和实时性更好,但覆盖范围取决于变异输入;轨迹未收敛时需要人工减少动态参数。
  • 偏离即失败:这避免了把不可信设备输入扩展成新的执行路径,也意味着可用性依赖设备稳定性,DoS 和设备更换仍需由上层处理。
  • 线性事件模板换取低运行时开销:模板容易审计、重放器只有约 500 SLoC,但对更复杂的 USB 状态空间和共享设备场景缺少通用机制。

实验与结果

  • 在 USB Mass Storage、Audio、Video 和 HID 四类设备、五家厂商的六个设备上生成 8 个模板;单个模板原始事件数从约 1K 到超过 400K,优化后视频模板显著缩小(表 4、§5.2)。
  • 存储读写平均吞吐分别为 16.26/11.01 MiB/s;原生 Linux 为 17.42/6.68 MiB/s,μUSB 读性能接近原生,写性能更高(图 6、§6.3.2)。
  • 两个摄像头的单帧延迟为 2964 ms 和 87 ms,分别比原生快 3% 和 20%;长突发场景最高比原生快 26%(图 7(a)(b))。
  • 音频 10 秒录音的 MFCC 余弦相似度均大于 0.99,论文报告没有失真或丢包;HID 延迟平均比原生快 4.5 倍,比 Circle 快 1.3 倍(图 7(c)(d)、图 8)。
  • 模板生成平均耗时 56.9 秒,最长为 135.1 秒;静态提升平均 11.6 秒。μUSB 驱动大小为 15–400 KB,比原生驱动小一到两个数量级(表 7、图 9)。
  • 端到端 trusted surveillance app 连续采集并写入 USB 存储,1080P 和 480P 摄像头分别稳定达到 1.92 FPS 和 11.6 FPS,接近原生的 1.94 FPS 和 10.7 FPS(§6.3.4)。

论断—证据表

论断证据评测边界置信度
具体 USB I/O 函数可以被提升为可重放模板8 个模板覆盖四类设备,变异轨迹结构收敛(表 4、表 8)Raspberry Pi 5、xHCI、六个设备
模板能在 TEE 内维持接近原生的吞吐和实时流存储吞吐、摄像头延迟、音频相似度和长时间流式测试(图 6–8)固定设备、固定函数,未覆盖热插拔和广泛故障
轨迹限定的污点分析解决了复杂内核的可扩展性问题有调用轨迹时分析平均 11.6 秒;不限定路径时超过 12 小时并消耗超过 64 GB 磁盘(§6.3.3)论文选定的 Linux USB 路径和设备
μUSB 缩小了 TEE 的代码和漏洞暴露面重放器约 500 SLoC,驱动 15–400 KB,列举多项 USB/内核 CVE(表 6、表 7)安全性依赖可信录制、签名模板和模板完整性

批判性分析

论证链条

论文的链条在选定范围内闭合:USB 轨迹具有稳定结构,差分分析找到变化值,限定污点跟踪恢复动态依赖,顺序重放复现设备交互。性能结果也支持“运行时不需要完整内核”的收益。但“读值匹配即可获得与原驱动相同的正确性”依赖 gold driver 假设,并没有证明所有设备状态变化都会被观察到。论文的附录给出轨迹等价的抽象论证,但录制覆盖不足时,形式化结论并不自动成立。

假设压力测试

最脆弱的是状态空间边界。摄像头、音频设备的固定格式和固定采样率适合模板化;USB hub、网络设备、动态接口和强依赖电源管理的设备可能需要大量未记录状态。论文明确排除 hub、USB gadget 和网络设备,也没有评估多 trusted app 细粒度共享同一设备。

输入变异只逼近开发者声明的动态参数。若应用以后需要改变分辨率、采样率、格式或访问模式,可能需要重新录制,而不是只替换一个参数。论文的收敛判据证明的是样本间结构稳定,不是对未采样输入的完备覆盖。

实验可信度

实验覆盖了四类具有代表性的 USB 外设,并同时比较 native 和 Circle,包含吞吐、延迟、音频质量、模板生成成本和长时间运行。其不足是硬件平台集中在 Raspberry Pi 5,设备数量仍有限,缺少不同 xHCI 实现、SoC 内存系统、恶意设备和系统负载下的尾延迟数据。安全性主要来自设计分析、人工检查和 CVE 对照,而非攻击实验或形式化验证。

系统性缺陷

模板失败时只能停止、复位和重试,论文未讨论设备复位对外部状态、数据幂等性或持久化写入的影响。模板静态链接进 TEE,也未充分讨论升级、版本协商、撤销和多设备资源隔离。录制机和设备必须可信,开发流程本身仍是供应链边界。μUSB 规避了大量 Linux 内核漏洞,但没有消除模板生成器、lifter、重放器和 xHCI 固件的风险。

局限与后续工作

  • 局限 1:方法依赖固定 I/O 函数和稳定设备状态,动态发现、热插拔、复杂错误恢复未覆盖。
  • 局限 2:正确性依赖 gold driver,论文仅做静态交叉检查、人工验证和压力测试,未完成完整形式化验证(§6.2.2)。
  • 局限 3:录制和模板签名链路需要可信开发环境;论文没有量化恶意录制设备或被攻陷工具链的影响。
  • 后续工作 1:为每个模板建立可检查的状态覆盖报告,系统地枚举输入边界、设备响应和错误路径,并测量未采样输入的拒绝率。
  • 后续工作 2:在不同 Arm SoC、xHCI 实现和多设备并发负载下评估 P99 延迟、DMA 内存压力和故障恢复语义。
  • 后续工作 3:研究可验证的模板升级与撤销协议,以及对写入类 I/O 的复位、重试和幂等保证。

相关