论文部分内容阅读
日益严重的蠕虫和网络攻击的发生大多是由于软件中存在着安全缺陷,对软件安全缺陷的研究已经成为网络攻防的焦点。现有的软件安全缺陷分析方法根据程序的结构特征或者行为特征发现和限制软件中存在的安全缺陷,但普遍分析粒度过粗,尤其在源代码不可获得的情况下缺乏对安全缺陷精确识别的支持。uSVR项目组提出了一种新的安全缺陷分析方法-基于执行路径的安全缺陷挖掘方法,旨在解决没有源码的情况下对应用软件中的安全缺陷进行精确识别的难题。该方法将研究视角扩展到对执行路径的整体行为特征的把握,以逆向工程和程序分析技术为基础,在计算机的辅助下进行安全缺陷特征提取和识别,并通过与手工分析方法对比来验证方法的有效性。
实现uSVR项目的第一步,需要将二进制执行代码转换为一种能够支持安全分析的中间语言,一方面确保程序的微观安全特征不会丢失,另一方面易于人工分析和自动化分析。
本论文介绍的二进制可执行程序结构化与分析器BESTAR采用静态分析方法将二进制可执行代码表示为面向安全分析的中间语言PANDA。BESTAR首先利用静态反汇编工具得到汇编代码,然后利用控制流分析CFA识别程序的执行流,恢复程序的结构化,构造程序控制流图,并利用数据流分析DFA与符号执行方法,重构数据结构、表达式和函数,最后将汇编代码转换成具有高级程序设计语言特征的面向安全分析的PANDA语言表示。并在上述过程中逐步消除常见混淆和部分编译优化对理解程序的影响。
在完成格式化表示之后,能得到与编译优化、代码混淆、程序设计语言、系统平台无关的中间语言程序代码。这种程序代码含有源代码不具有的底层信息,同时是面向安全分析的,不仅能为进一步进行缺陷特征提取与缺陷分析打基础,还可以支撑目前应用在源代码阶段的各种技术,如逆向工程、程序理解等,具有重要的研究意义和巨大的研究价值。