当前位置: 首页 > article >正文

【论文速读】| FirmRCA:面向 ARM 嵌入式固件的后模糊测试分析,并实现高效的基于事件的故障定位

图片

基本信息

原文标题:FIRMRCA: Towards Post-Fuzzing Analysis on ARM Embedded Firmware with Efficient Event-based Fault Localization

原文作者:Boyu Chang, Binbin Zhao, Qiao Zhang, Peiyu Liu, Yuan Tian, Raheem Beyah, Shouling Ji

作者单位:浙江大学,佐治亚理工学院,加州大学洛杉矶分校

关键词:嵌入式固件、故障定位、事件驱动、模糊测试

原文链接:https://arxiv.org/pdf/2410.18483

开源代码:https://github.com/NESA-Lab/FirmRCA

论文要点

论文简介:尽管模糊测试在揭示嵌入式固件中的漏洞方面已证明其有效性,但发现崩溃测试用例只是提升这些关键系统安全性的第一步。随后的故障定位过程,旨在精确识别观察到的崩溃的根本原因,是一个至关重要但耗时的后期工作。然而,针对嵌入式固件崩溃的自动化根因分析仍然是一个尚未充分研究的领域,并面临多重挑战:(1)嵌入式固件的模糊测试缺乏足够的调试机制,导致难以自动提取分析所需的关键运行时信息;(2)由于嵌入式固件通常以原始二进制形式存在,往往会产生过度污染和噪声指令,从而为分析人员提供有限的指导,进而影响手动定位根因和修复潜在漏洞的过程。

为了解决这些问题,研究者设计并实现了FIRMRCA,一个专门针对嵌入式固件的实用故障定位框架。FIRMRCA引入了一种基于事件的痕迹收集方法,通过在崩溃重现过程中利用具体的内存访问,显著加快了逆向执行过程。为了解决复杂的内存别名问题,FIRMRCA提出了一种基于历史驱动的方法,通过追踪数据在执行轨迹中的传播,能够精确识别崩溃的深层根源。最后,FIRMRCA还提出了一种新颖的策略,能够突出与根因相关的关键指令,为最终的调查工作提供了实用的指导。

为了验证FIRMRCA的有效性,研究者对17个固件镜像中的41个崩溃测试用例进行了评估。结果表明,FIRMRCA能够有效地(92.7%的成功率)在前10条指令内识别崩溃测试用例的根本原因。与现有的最先进技术相比,FIRMRCA在执行轨迹分析能力上提高了27.8%,在整体效率上加速了多项任务,且在前10条指令的效果成功率上提高了73.2%。

研究目的:当前嵌入式固件的崩溃分析面临多个挑战,包括缺乏足够的运行时调试信息、二进制文件数据噪声干扰大,以及分析过程中出现的内存别名问题。本文旨在开发一个高效的工具,帮助分析人员精准定位嵌入式固件崩溃的根本原因,降低人工操作的复杂性,提高分析效率。

研究贡献

1. 创新框架设计:提出了FIRMRCA,一个专为嵌入式固件设计的后模糊测试故障定位框架,利用事件驱动的足迹采集方法显著提升了分析效率。

2. 新颖分析方法:提出了一种两阶段的根因分析策略,通过分配可疑评分,优先标记关键指令。

3. 实际应用验证:在41个崩溃案例中验证了框架的高效性和准确性,与现有技术相比表现优异。

引言

嵌入式固件广泛评估各类硬件设备,如智能医疗和工业制造,其安全性直接关系到设备运行稳定性。硬件漏洞可能导致数据泄露、设备控制损坏甚至远程攻击。模糊测试是发现这些漏洞的重要工具,通过随机生成测试用例触发异常行为。但是,仅发现崩溃点即可提升安全性,定位崩溃根因是后续分析的重要步骤。

传统的手动分析过程运行且容易出错,现有的自动化工具对嵌入式硬件的装备性有限。FIRMRCA框架就是为了解决这些问题而设计的,通过高效收集运行时信息和逆向执行技术,提供了一种快速定位根因的创新方法。

研究背景

嵌入式硬件是硬件运行的核心软件,广泛评估物联网、智能制造和医疗设备等领域。然而,嵌入式硬件的封闭性和缺乏调试符号的功能,使得漏洞设备分析变得更加接近。此外,嵌入式硬件设备资源确定(如内存和计算能力),增加了调试和分析开销。

模糊测试是一种常用的方法,通过随机生成输入数据触发异常行为。然而,其只能发现崩溃点,无法自动定位根源。传统方法如基于色彩的分析和学习驱动的技术,往往依赖于丰富的调试信息,难以适应嵌入式固定的环境。复杂的内存别名问题和数据噪声进一步增加了分析的复杂性。

针对上述问题,FIRMRCA结合事件驱动的数据采集和历史追踪技术,显着提高了故障定位效率,为嵌入式的崩溃分析提供了一种精准、高效的解决方案。

概览

图片

FIRMRCA框架由三个模块组成:足迹收集、反向执行根因分析

1. 跟踪收集:为了有效分析固件崩溃,FIRMRCA首先执行固件二进制文件并使用崩溃测试用例收集运行时数据,以支持后续的逆向执行和根因分析。为了解决调试机制不足的问题,FIRMRCA提出了一种基于事件的痕迹收集方法。

2. 逆向执行:逆向执行的主要目的是构建崩溃测试用例中的数据动态传播过程。为了应对内存别名问题,这一问题常常会掩盖数据流分析,FIRMRCA采用了一种基于历史驱动的逆向执行方法。通过利用在痕迹收集阶段捕获的具体内存访问,FIRMRCA高效且准确地解决了内存别名问题,从而能够更精确地追踪数据依赖关系。

3. 根因分析:FIRMRCA主要针对由无效内存访问或无效指令执行引发的崩溃进行分析。在这两种情况下,FIRMRCA将相应的寄存器和内存地址视为“污染源”。FIRMRCA随后执行一种新颖的两阶段根因分析方法。首先,FIRMRCA进行常规的反向污染分析,以获得初步的指令集。

整体框架通过创新的事件驱动设计和深度优化的分析流程,在复杂的崩溃场景中表现出卓越的性能。

实验设计

实验使用了 41 个来自公共数据集的嵌入式硬件崩溃案例,涵盖了多种典型场景。实验设计包括全报表分析和局部报表分析,从而分别验证 FIRMRCA 中的长报表并简化条件下的表现。此外,与POMP和POMP++等现有方法进行对比,评估其在准确性和效率上的提升。

通过消融实验,进一步验证了FIRMRCA核心模块(如事件驱动收集和打策略分)的重要性。实验结果显示,FIRMRCA在准确性和效率上均显着着先前方法,尤其在复杂的核心根本原因分析中表现突出。

实现方法

FIRMRCA的实现分为三个主要模块:足迹收集、反向执行根因分析,它们共同构建了一个高效的嵌入式支架故障定位工具。

1. 足迹收集:基于Unicorn模拟器的钩子机制,FIRMRCA设计了两种事件类型——数据事件和行为事件。数据事件记录内存读写器的具体地址和行为,事件记录指令的执行顺序和注册状态。信息通过精准的触发条件捕获,为后续的反向执行和分析提供丰富的运行时数据。

2. 反向执行:利用Capstone反框架,FIRMRCA解析每条指令的语义,构建使用定义链(Use-Define Chain),实现数据流的逆向追踪。为解决内存别名问题,框架结合数据事件的具体内存访问信息,大幅提升了数据恢复的准确性。通过自定义的指令处理器,FIRMRCA能够对寄存器状态进行高效的反向计算,从而还原执行报表。

3. 根因分析:在分析阶段,FIRMRCA通过逆向污点分析确定潜在问题指令集合,并为每条指令结合问题评分。评分了循环循环因子和历史写入优先策略,优先标记关键指令,帮助分析人员快速锁定根本原因。

整体框架通过事件驱动的数据采集和深度优化的逆向分析,为嵌入式硬件提供了高效、精准的故障定位解决方案。

研究评估

FIRMRCA通过多角度验证了其在嵌入式支架崩溃分析中的效果和性能。实验覆盖41个支架崩溃案例,重点评估了实验的根因定位准确率、效率以及根因处理能力。结果展示,FIRMRCA成功率为92.7%的案例中定位到崩溃根因,且在超过50%执行轨迹距离的根因分析中表现极其突出。与对比方法POMP和POMP++相比,FIRMRCA在效率检查上出示优势,包括全读数分析的相当于加速和内存别名处理的显着提升。

图片

另外,消融实验表明,事件驱动的数据收集和指令打分策略是提高分析效果的关键因素。整体而言,FIRMRCA在复杂嵌入式崩溃场景中实现了准确性和效率的双重突破,为后期模糊分析领域提供了一种创新解决方案。

图片

论文结论

FIRMRCA框架的设计有效解决了嵌入式固件崩溃分析中的核心挑战,包括调试机制不足、数据噪声干扰及内存别名问题。在多个真实案例中展现了其效率和准确性,为嵌入式系统的安全性提供了重要支持。未来工作将进一步优化事件驱动策略,并探索对更多架构和场景的适应性。


http://www.kler.cn/a/446464.html

相关文章:

  • STM32-笔记5-按键点灯(中断方法)
  • 【libuv】Fargo信令1:client发connect消息给到server
  • Elasticsearch-DSL高级查询操作
  • 使用React构建一个掷骰子的小游戏
  • 32单片机串口数据接收、空闲IDLE中断详解
  • Soul Android端稳定性背后的那些事
  • 推送本地仓库到远程git仓库
  • 问题解决:发现Excel中的部分内容有问题。是否让我们尽量尝试恢复? 如果您信任此工作簿的源,请单击“是”。
  • 解析基于 SSM 框架 Vue 电脑测评系统:把握电脑测评精髓
  • Dash:数据可视化的未来之星
  • 【从零开始入门unity游戏开发之——C#篇23】C#面向对象继承——`as`类型转化和`is`类型检查、向上转型和向下转型、里氏替换原则(LSP)
  • 用bootstrap搭建侧边栏
  • uniapp新建项目hello,什么都没干提示应用未关联服务空间,请在uniCloud目录右键关联服务空间
  • Linux中部署项目
  • 精准采集整车信号:风丘混合动力汽车工况测试
  • Solon 集成 activemq-client
  • Next.js v15- Metadata
  • vimdc
  • 【活动邀请·深圳】深圳COC社区 深圳 AWS UG 2024 re:Invent re:Cap
  • 【c++笔试强训】(第四十一篇)
  • 4_使用 HTML5 Canvas API (3) --[HTML5 API 学习之旅]
  • 青少年编程与数学 02-004 Go语言Web编程 13课题、模板引擎
  • Linux之磁盘管理相关命令
  • nginx长连接配置
  • 二维码:理解二维码 / 生成二维码 / 小程序支持哪种类型的二维码 / 小程序识别GS1码
  • 【postgresql初级使用】小小索引大用途,奇妙的索引让大数据查询提升成百上千倍,多种索引类型的区别,你用对索引了吗?