论文部分内容阅读
代码安全缺陷一直是困扰IT产业发展的一颗绊脚石,究其缘由主要是安全缺陷检查的成本高,效率低下。目前主要靠手工或者工具两种方式来应对此问题,人工的效率比较低,靠工具来检查是时下比较热门的话题,我们一般把代码安全缺陷检查工具分为两类:一类是使用传统静态分析的工具,另一种是使用动态测试的工具。符号执行是一种程序分析的技术,它主要靠收集符号的约束信息,再利用约束求解器求解来得到测试用例,理论上能够覆盖全部的路径。本论文的主要工作如下:(1)针对符号执行中路径指数爆炸问题,提出基于CFG(Control Flow Graph)的执行状态选择算法。该算法利用静态分析提取出所需的CFG,然后在此基础上结合执行状态的权值产生一种新的执行状态选择算法,可以在路径爆炸时覆盖更多的路径;(2)利用无用函数分析的思想来优化动态符号执行。无用函数分析是本文提到的一种静态分析方法,分为两个阶段:第一阶段是死代码消除,第二阶段是无用函数消除,通过这两个阶段消除不必要分析的代码,以此达到优化的目的;(3)提出基于数组模型的改进设计,将数组模型用树表示,便于内存安全的检测。同时,针对数组模型不能处理大小不确定类型的数据做了改进,使得改进之后的内存模型能够处理大小不确定类型的数据;(4)在上述内容的基础之上实现了一个简易的动态符号执行的代码安全缺陷检查工具,该工具能够检查内存越界、二次释放、野指针访问、内存泄露、加法溢出、除零等错误;(5)分别针对整个系统、无用函数分析优化以及执行状态选择算法做了实验分析,实验充分表明了本文实现的工具的有效性。