[发明专利]一种针对软件缺陷的检测方法无效
申请号: | 201010266806.7 | 申请日: | 2010-08-30 |
公开(公告)号: | CN102385550A | 公开(公告)日: | 2012-03-21 |
发明(设计)人: | 胡昌振;秦强;王崑声;闫怀志 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 付雷杰 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种针对软件缺陷(software vulnerability)的检测方法,属于信息安全技术领域。其具体操作步骤如下:①收集包含已知缺陷的软件源代码程序;②获取缺陷代码表;③获取待测试程序的控制流图CFG和汇编代码;④确定待测试程序汇编代码中的重点分析代码段并通过待测试程序的控制流图CFG获取经过重点分析代码段对应的节点的所有路径;⑤对每条可疑路径,利用改进的Fuzzing测试方法进行检测,得到待测试程序的检测结果。本发明在确定适应度函数时,消除了对被测程序的源代码的依赖,并保持了信息的可用性;消除了抽象语法树中的冗余信息并保持有用信息的完整性因此具有更好的实用性和更高的效率。 | ||
搜索关键词: | 一种 针对 软件 缺陷 检测 方法 | ||
【主权项】:
一种针对软件缺陷的检测方法,其特征在于:其具体操作步骤如下:步骤一、收集包含已知缺陷的软件源代码程序;步骤二、获取缺陷代码表;对步骤一中所述的软件程序进行处理,确认引发缺陷的相关代码,并利用反汇编工具得到引发缺陷的相关代码的汇编代码,构造缺陷代码表;步骤三、获取待测试程序的控制流图CFG和汇编代码;分析待测试程序的可执行文件,利用反汇编工具可得到待测试程序的控制流图CFG和汇编代码;控制流图CFG表示为G=,其中N为控制流图CFG中的节点的集合,E为控制流图CFG中的边的集合;控制流图CFG中的每个节点对应待测试程序的可执行文件中的一个汇编代码段;控制流图CFG中的每条边表示各节点之间的跳转关系,并为集合N建立一张节点起始地址表,其记录每个节点对应的汇编代码段的起始地址;步骤四、确定待测试程序汇编代码中的重点分析代码段并通过待测试程序的控制流图CFG获取经过重点分析代码段对应的节点的所有路径;具体为:步骤4.1:根据步骤二得到的缺陷代码表,在步骤三得到的待测试程序的汇编代码中查找缺陷代码表中的代码;如果在待测试程序的汇编代码中出现缺陷代码表中的代码,则记录其位置,确定其为重点分析代码段;步骤4.2:在待测试程序的控制流图CFG中标记该重点分析代码段对应的节点位置;步骤4.3:获取经过标记节点的所有路径,称之为可疑路径;步骤五、对每条可疑路径,利用改进的Fuzzing测试方法进行检测,得到待测试程序的检测结果;所述改进的Fuzzing测试方法与已有Fuzzing测试方法的区别在于:对已有Fuzzing测试方法的第1步生成的测试用例采用遗传算法,从中挑选出仅经过可疑路径的测试用例,并通过多次迭代不断生成经过可疑路径的测试用例;其具体过程如下:步骤5.1:将迭代次数generation的初始值为0,并随机生成一组测试用例X(generation)={x1,x2,……,xs};s为正整数,表示生成的测试用例的数量;设置记录X(generation)中的测试用例经过节点i的次数mi的初始值为0;表示节点i转向节点h的次数ni,h的初始值为0;节点i∈N;节点h∈N;步骤5.2:设置遗传算法中使用到的参数值,包括:交叉概率Crossover Rate、变异概率Mutation Rate和最大迭代次数Max的值;步骤5.3:设置表示测试用例序号j的初始值为1;j的取值范围为正整数;步骤5.4:将待测试程序的控制流图CFG中每个节点的状态参数设置为0,表示测试用例未经过该节点;步骤5.5:输入测试用例xj,并对测试用例xj在执行过程中所经过每个节点,作如下操作:步骤5.5.1:在节点i,测试用例xj是否使待测试程序出现异常退出或出错的情况,如果使待测试程序出现异常退出或出错,则结束对该条可疑路径的检测,开始对下一条可疑路径的检测;否则,执行步骤5.5.2的操作;步骤5.5.2:当测试用例xj使程序从节点i转向下一节点时,判断下一节点的起始地址是否出现在步骤三中所述节点起始地址表中,如果出现在步骤三中所述节点起始地址表中,称下一节点为节点h,同时mi和ni,h的值均增加1,并且如果节点h的状态参数为0,则将其状态更新为1;然后执行步骤5.6的操作;如果该节点的转向地址不在步骤三中所述节点起始地址表中,结束对该条可疑路径的检测,开始对下一条可疑路径的检测;步骤5.6:j的值增1,并判断j>s是否成立,如果成立,则执行步骤5.7;否则,重复执行步骤5.4;步骤5.7:判断generation≥Max是否成立,如果成立,则认为当前可疑路径上不存在潜在缺陷,结束对当前路径的检测;如果不成立,则执行步骤5.8;步骤5.8:使用公式1,依次计算待测试程序的控制流图CFG中的节点i到节点i的下一节点h的适应度值: f ( i , h ) = n i , h m i - - - ( 1 ) 步骤5.9:计算每个测试用例经过的路径的适应度值F′,计算方法为:将该测试用例经过的所有节点i到其下一节点h的适应度值的和或乘积作为该测试用例的适应度值F′;步骤5.10:计算可疑路径的适应度值F;计算方法为:将该可疑路径上的所有节点i到其下一节点h的适应度值的和或乘积作为该可疑路径的适应度值F;步骤5.11:在X(generation)中删除适应度值F′不等于可疑路径的适应度值F的测试用例;步骤5.12:在X(generation)中进一步删除测试用例经过的路径的第二个节点与可疑路径经过路径的第二个节点不同的测试用例;步骤5.13:对X(generation)中的每一个测试用例转换成二进制编码;步骤5.14:在X(generation)中随机选取两个测试用例xp和xq,采用单点交叉的策略,将测试用例xp和xq的二进制编码中的第r(r为正整数)位上的值以交叉概率Crossover Rate互换,生成两个新的子测试用例xp’和xq’,将其保存在X(generation+1)中;其中交叉位置r随机生成,并且确保测试用例xp和xq的二进制编码中的第r位上的值不相等;步骤5.15:重复步骤5.14,直到X(generation)中的测试用例都被选中为止;步骤5.16:在X(generation)中随机选取一个测试用例xa,在测试用例xa的二进制编码中的第v(v为正整数)位上的值,以变异概率Mutation Rate取反,生成一个子测试用例xa’,将其保存在X(generation+1)中,其中v随机生成;步骤5.17:将X(generation+1)中的测试用例的二进制编码转换成原编码方式;步骤5.18:迭代次数generation增加1;重复执行步骤5.3到步骤5.18的操作,直到完成对该可疑路径的检测;重复执行步骤5.1到步骤5.18的操作,直到完成对所有可疑路径的检测;经过上述步骤的操作,即可检测出待测试程序是否存在缺陷。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010266806.7/,转载请声明来源钻瓜专利网。
- 上一篇:潜水飞机机翼变换机构
- 下一篇:一种石油仪器故障诊断装置及诊断方法