论文部分内容阅读
近年来,在PC软件防护手段日益加强的背景下,嵌入式设备固件已成为网络攻击者的优选目标,针对固件程序的攻击事件层出不穷。作为一种重要的程序分析技术,混合符号执行具有自动化的程序状态空间探索、测试用例生成、漏洞检测等能力,如何将混合符号执行技术应用到固件分析领域是目前网络安全领域的研究热点之一,对于提升嵌入式设备的安全性具有重要意义。本文以嵌入式Linux系统固件为研究对象,研究与面向固件程序的混合符号执行相关的方法和关键技术,主要工作与贡献如下:1.给出了一种新型的面向固件程序的混合符号执行系统设计。调试主机采用调试插桩方法监控设备上的固件程序的具体执行,从设备内存提取被执行的基本块代码,经语义提升变换为中间表示后进行符号执行,并可将路径约束求解后得到的测试用例注入到设备内存,进而控制固件程序的执行路径,实现程序状态空间探索。该设计避免了常见的基于软件仿真构建固件符号执行系统带来的不精确性和不稳定性,且具有固件代码片段按需符号执行、支持多种嵌入式处理器架构固件符号执行等特点。2.实现了一款面向固件程序的混合符号执行系统原型F3CE。F3CE基于GDB远程调试及扩展脚本技术实现了对固件程序的动态二进制插桩,以监控固件程序的执行并提取运行时信息;基于VEX中间表示对固件程序指令进行语义提升,并实现了面向VEX中间表示的符号执行器;基于后备存储对固件程序内存进行符号化表示,按需提取固件程序的数据页面并转换为架构无关的符号存储;基于深度优先和路径制导两种策略实现了路径探索功能,可控制固件程序的具体执行路径。3.进行了混合符号执行系统原型F3CE的详细测试。对F3CE的动态二进制插桩、指令向中间表示的转换、符号执行、符号数据引入、路径约束提取及求解等基本功能进行了测试,验证了F3CE的跨平台混合符号执行能力;首先对二进制插桩模块和中间表示转换器进行了单元测试,证明了关键模块的有效性;然后对混合符号执行框架的基本功能进行了测试,验证了框架在多种架构下具备符号执行的能力,证明了本文方案解决了符号执行用于固件程序分析时的环境建模问题;最后结合静态分析,测试了框架的按路径探索算法,证明了本文方案部分缓解了路径爆炸问题。