想象一下,你拥有一个全新的、被锁定的黑盒(一段计算机固件),它控制着像医疗植入物或智能恒温器之类的设备。你想破解它以寻找隐藏的弱点,但你无法打开这个盒子,你没有蓝图(源代码),甚至在它运行时你也无法看到内部的情况。这就是“黑盒”问题。
通常,为了有效地测试软件,专家们会使用“灰盒”方法。他们拥有观察代码的窗口。他们可以看到软件进行的每一次转向,就像 GPS 追踪驾驶员的路线一样。如果驾驶员换了一条路,GPS 会说:“太棒了!我们发现了一条新路径!”然后测试者就会专注于那个区域。
但面对一个锁定的黑盒,测试者是盲目的。他们向盒子投掷随机输入,并寄希望于能发生一些有趣的事情。这就像在黑暗中投掷飞镖;你最终可能会击中目标,但这极其低效。
迎来 PowerFuzz:“电力侦探”
佛罗里达大学的研究人员发明了一个巧妙的技巧,叫做 PowerFuzz。与其试图看透盒子内部,不如去倾听这个盒子消耗了多少电量。
其核心思想是:每当盒子内部的计算机做出一个决策(例如“如果温度过高,则开启风扇”),它都会消耗微小且独特的电量。 这就像一个人的心跳会根据是在走路、跑步还是睡觉而发生轻微变化一样。
PowerFuzz 的工作原理(类比)
想象你正在尝试绘制一个迷宫的地图,但你看不见墙壁。你的一个朋友就在迷宫里,他无法和你说话,但你可以通过地板听到他的脚步声。
倾听脚步声(功率迹线/Power Traces):
PowerFuzz 向设备发送一条测试消息(一个“飞镖”)。当设备处理这条消息时,PowerFuzz 会记录其功耗图表。这个图表就是设备“思考”的“足迹”。
“滑动窗口”侦探(寻找转折点):
系统会将新的功率图表与旧的图表进行比较。
- 问题: 有时设备运行相同的路径,但由于微小的电学“噪声”(就像朋友走在嘎吱作响的地板上),功率图表看起来会有所不同。
- 解决方案: PowerFuzz 使用了一种称为**动态时间规整(Dynamic Time Warping)**的数学工具。你可以把它想象成一把灵活的尺子,它可以拉伸或收缩图表,使它们完美对齐,从而忽略微小的嘎吱声,专注于大局。
- “增长窗口”: 一旦它找到了图表可能出现差异的大致位置,它就会通过一个“增长窗口”进行放大,以精准定位设备转向的确切时刻。
绘制地图(TCFG):
每当 PowerFuzz 发现一个新的转折点(代码中的一个新分支)时,它就会在名为**追踪引导控制流图(Trace-guided Control Flow Graph, TCFG)**的地图上绘制一个节点。
- 起初,地图只是一条线。
- 随着它发现新的路径,地图会像树木一样分叉。
- 至关重要的是,这张地图完全是通过倾听电力信息构建的,从未真正“看到”过代码。
智能向导(分支选择):
现在 PowerFuzz 有了地图,它不再随机投掷飞镖。它观察地图并说道:“嘿,我们还没有探索树底部那个深邃、黑暗的分支。让我们把下一个飞镖瞄准那里。”它会优先考虑那些最难到达的路径,就像一个聪明的探险家一样。
结果:效果如何?
研究人员在真实硬件(如路由器和医疗设备中使用的微控制器)上进行了测试,使用了十种不同的软件程序。他们将 PowerFuzz 与以下对象进行了对比:
- 随机测试: 在黑暗中投掷飞镖。
- Fuzz'EMup: 当前最优秀的“黑盒”方法,它使用电磁波(类似于无线电)而非电力。
- 灰盒模糊测试(Gray-Box Fuzzing): 这是“金标准”,即他们可以看到代码的方法(用作基准,以获得最佳结果)。
研究结果:
- 击败竞争对手: PowerF enough 发现的隐藏路径明显多于随机测试者和电磁波方法(Fuzz'EMup)。在某些情况下,它发现的代码路径比之前的最佳黑盒方法多出 22%。
- 追赶“上帝模式”: 尽管 PowerFuzz 无法看到代码,但它找到的路径数量几乎与能够看到代码的“灰盒”方法持平。它达到了完美得分的 13.5% 以内。
- 通用性应用: 它在不同类型的计算机芯片(ARM 和 AVR)上表现同样出色,证明了它是一个多功能的工具。
总结
PowerFuzz 就像一位侦探,他解决谜题的方式不是通过阅读嫌疑人的日记(代码),而是通过倾听他们脚步的节奏(功耗)。通过绘制这些节奏,它构建出了软件逻辑的心理地图,从而能够比在黑暗中瞎猜更快、更有效地搜寻隐藏的弱点。它证明了,你不需要看透黑盒内部也能理解它的思维方式;你只需要倾听它如何通电运作。
技术摘要:PowerFuzz
问题陈述
嵌入式系统构成了关键基础设施的骨干,然而由于难以在没有直接访问二进制文件或调试基础设施的情况下观察执行行为,其固件的研究程度远低于传统软件。现代固件通常是专有的、加密的或经过混淆的,且硬件保护机制(如锁定的熔丝位、安全启动)阻止了二进制提取。因此,依赖于二进制插桩来监控分支覆盖率的标准覆盖率引导模糊测试技术不再适用。
现有的黑盒方法缺乏有效的反馈回路。对于具有状态依赖性的固件,随机测试效率低下,而此前尝试使用侧信道(例如电磁辐射)的方法通常需要昂贵且专业的近场探测设备。核心挑战在于,如何在不修改固件或访问其二进制文件的情况下,为一个内部控制流完全不透明的“全黑盒”目标重建覆盖率引导的反馈回路。
方法论
本文介绍了 PowerFuzz,一种统计黑盒模糊测试框架,它利用功耗侧信道测量取代了二进制插桩。该框架基于以下洞察:微控制器(MCU)的功耗编码了其内部执行的细粒度信息,其数值会根据执行的指令和分支决策发生可测量的变化。
核心组件
功耗轨迹获取:
- 每当向目标发送新输入时,系统会同步捕获 MCU 的功耗时间序列信号(P=⟨p1,p2,…,pn⟩)。
- 为了减轻测量噪声,每个输入采集 N=10 条轨迹并进行平均处理。
相似性分析(分支识别):
- 为了确定新输入是否触发了不同的执行路径,PowerFuzz 通过两阶段算法将新轨迹与先前捕获的轨迹进行比较:
- 第一阶段:带有滑动窗口的动态时间规整(DTW): DTW 对两个时间序列进行对齐以处理时间抖动。通过对生成的偏移剖面进行滑动窗口分析,以检测持续性的分歧(指示分支转换),同时过滤掉瞬态噪声。
- 第二阶段:带有增长窗口的皮尔逊相关分析: 一旦识别出粗略的分歧窗口,便进行皮尔逊相关分析。首先使用滑动窗口定位近似偏差位置,随后使用增长窗口从分歧开始处开始逐步扩展,直到相关性降至阈值以下。这可以精确锁定执行路径发生分歧的精确样本索引。
轨迹引导控制流图(TCFG)构建:
- PowerFuzz 动态构建一个名为 TCFG 的层次化树状结构,该结构作为控制流图(CFG)的代理。
- 节点结构: 每个节点代表一个基本块,并存储:(1)对应于该块的功耗轨迹段,(2)到达该块的输入,以及(3)代表分支跳转(branch-taken)和分支未跳转(branch-not-taken)的左右子节点指针。
- 更新机制: 当分析新轨迹时,算法递归地遍历 TCFG。如果新轨迹在现有节点内发生分歧,则拆分该节点:一个父节点存储共享的前缀,而原节点和新的分歧路径分别成为其左、右子节点。这使得图表可以在无需预知固件知识的情况下实现增量增长。
分支选择与变异:
- TCFG 指导基于 LibAFL 构建的模糊测试引擎进行分支探索。
- 随机选择: 在 TCFG 尚稀疏的早期阶段使用。
- 深度优先选择: 随着 TCFG 的增长,模糊测试器会优先考虑深度较大的节点,从而针对嵌套条件逻辑和更难触达的复杂状态依赖行为。
- 导致 TCFG 更新(产生新覆盖率)的输入会被保留在种子库中;其余输入则被丢弃。
核心贡献
本文声称了以下贡献:
- 首个基于功耗的黑盒框架: 提出了第一个利用功耗侧信道测量来实现全黑盒固件覆盖率引导模糊测试的框架,无需内部可见性。
- 创新的分支识别方法: 实现了一种结合滑动窗口分析、增长窗口全轨迹相关性和动态时间规整的方法,用于从功耗轨迹中识别执行的分支。
- 动态 TCFG 生成: 实现了在无需二进制访问的情况下,利用累积的功耗轨迹动态构建轨迹引导控制流图。
- 实证验证: 通过广泛评估证明,PowerFuzz 可以实现与灰盒模糊测试工具相当的分支覆盖率,并显著优于最先进的黑盒替代方案。
实验结果
该框架在三个嵌入式硬件平台(STM32F0、STM32F3 和 XMEGA)上进行了评估,涵盖十个固件基准测试,包括大规模应用(GPS、步进控制器、CNC、焊台)和小型库(cjson、zlib、加密实现)。
覆盖率对比:
- 对比灰盒测试: PowerFuzz 实现的分支覆盖率达到了最先进灰盒模糊测试工具(具有完整二进制可见性)的 13.5% 以内。
- 对比黑盒测试(Fuzz'EMup): 在分支覆盖率方面,PowerFuzz 在各项基准测试中显著超过了使用电磁辐射的黑盒模糊测试工具 Fuzz'EMup,提升幅度高达 22%。
- 对比随机测试: PowerFuzz 达到更高覆盖率平台的速度始终快于随机测试,在不同平台上的覆盖率优势在 20% 到 30% 之间。
结构准确性:
- 通过与使用
angr 提取的地面真值(ground-truth)CFG 进行对比,推断出的 TCFG 显示出 97.66% 的节点精确度(precision) 和 77.61% 的节点召回率(recall)。高精确度表明分歧检测很少产生虚假拆分,而较低的召回率归因于为避免噪声引起的碎片化而采取的保守设计。
跨架构适用性:
- PowerFuzz 在无需针对特定架构进行调优的情况下,在 32 位 ARM 和 8 位 AVR 架构上均表现出一致的性能,在不同类型的 MCU 上均实现了稳定的覆盖率。
重要性与主张
本文将 PowerFuzz 定位为嵌入式系统安全领域的一项关键进展,解决了在无法进行传统插桩的情况下,验证专有或加密固件的“根本挑战”。通过利用功耗作为二进制插桩的替代方案,PowerFuzz 为全黑盒环境下的覆盖率引导反馈回路提供了可能。
作者声称,PowerFuzz 弥合了盲目低效的随机测试与难以获取的灰盒模糊测试之间的鸿沟。结果表明,物理侧信道测量可以有效地近似从二进制分析中获得的结构性见解,从而使严谨的自动化测试对于包括在安全敏感和关键环境中广泛的嵌入式设备变得可行。这项工作确立了功耗轨迹——传统上用于密码学攻击——可以被重新利用,作为一种稳健的软件验证机制。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。