The invention relates to a binary program fuzzy testing method based on multi-population genetic algorithm, belonging to the field of binary vulnerability mining in information security. In this method, a multi-population genetic algorithm is used to abstract each test data individual into chromosomes. Then a primary population and subpopulations 1 and 2 are initialized randomly or from the initial data. The fitness is measured by recording the number of newly discovered edges in the test data execution path and the number of edges associated with the test data. Secondly, the fine individuals of the sub population are migrated to the main population by ranking fitness. Finally, the main population and the sub-population are genetically manipulated (crossover and variation) to get new individuals for a new round of tracking implementation. The invention can effectively improve the coverage rate of the program execution path, can cover the specific program execution path, has significant guiding significance for the generation of test data, and has good application value and popularization value.
【技术实现步骤摘要】
基于多种群遗传算法的二进制程序模糊测试方法
本专利技术涉及二进制程序模糊测试方法,属于信息安全中的二进制漏洞挖掘领域。
技术介绍
模糊测试技术是目前安全领域最常用、综合效果较好的漏洞挖掘方法,该技术通过向目标软件系统提供随机构造的或者变异的测试用例,监视软件的执行过程是否出现崩溃等异常,以观测目标软件是否存在潜在漏洞。模糊测试系统生成的测试数据的代码覆盖率越高,发现漏洞的可能性越大,因此,可以把测试数据的代码覆盖率作为测试数据生成优劣的评价标准。一般模糊测试中,我们并没有被测程序的源码,所以其输入数据的格式是未知的。基于变异的方法通过直接修改现有的测试数据来生成新的测试数据。然而因为变异方式随机,不能够达到很高的代码覆盖率,漏洞挖掘效果并不好。因此,本专利技术将提供多种群遗传算法的二进制程序模糊测试方法来提高基于变异的模糊测试生成测试数据的代码覆盖率。多种群遗传算法的二进制程序模糊测试方法需要解决的基本问题是:基于变异的方法随机生成的测试数据不能达到很高的代码覆盖率的问题。综观现有的针对输入数据格式未知的二进制程序模糊测试方法,通常使用方法可归为两类:1.符号执行的方法基于符号执行的方法将测试数据作为符号值处理。通过收集程序处理符号值时的约束信息,进而利用约束信息求解生成新的测试数据来测试新的执行路径。理论上,该方法能够达到100%的代码覆盖率,然而对于复杂程序,符号执行有路径爆炸的缺点,严重影响了符号执行方法的应用范围。2.进化算法的方法基于进化算法的方法将测试数据转换为适当的格式以方便指导测试数据的生成,应用广泛的是遗传算法。目前遗传算法的使用需人工预 ...
【技术保护点】
1.基于多种群遗传算法的二进制程序模糊测试方法,其特征在于所述方法包括如下步骤:步骤3,首先得到基本块序列,并得到对应的边的序列,接着合并相同的边得到包含出现次数信息的边的集合Ee,然后把每条边出现的次数分为8种类型,并用一个字节的不同位进行表示,分类之后得到一个新的边的集合E‘’e,最终得到了程序的执行路径信息,即边的集合E‘’e;步骤4.1,通过f1(Xi)=card(Ei‑Et),计算测试数据在被测程序中执行后新发现的边的个数;步骤4.2,对于整个模糊测试过程中所有曾经发现的边的集合Et={et,1,et,2,et,3,...}中任意一条边et,i,假设最后一次发现这条边的测试数据为Xt,i,那么可以得到一个边与测试数据相对应的集合Wt={(et,1,Xt,1),(et,2,Xt,2),(et,3,Xt,3),...},并使用函数
【技术特征摘要】
1.基于多种群遗传算法的二进制程序模糊测试方法,其特征在于所述方法包括如下步骤:步骤3,首先得到基本块序列,并得到对应的边的序列,接着合并相同的边得到包含出现次数信息的边的集合Ee,然后把每条边出现的次数分为8种类型,并用一个字节的不同位进行表示,分类之后得到一个新的边的集合E‘’e,最终得到了程序的执行路径信息,即边的集合E‘’e;步骤4.1,通过f1(Xi)=card(Ei-Et),计算测试数据在被测程序中执行后新发现的边的个数;步骤4.2,对于整个模糊测试过程中所有曾经发现的边的集合Et={et,1,et,2,et,3,...}中任意一条边et,i,假设最后一次发现这条边的测试数据为Xt,i,那么可以得到一个边与测试数据相对应的集合Wt={(et,1,Xt,1),(et,2,Xt,2),(et,3,Xt,3),...},并使用函数计算集合Wt中与测试数据相关的边的数量f2;步骤4.3,两个测试数据适应度的比较,首先比较两个测试数据的f1值,如果相等,就更新集合Et和Wt,最后计算测试数据的f2值进行比较;步骤5,交叉过程使用2-opt交换,并随机生成0到D的交叉点,以主种群为基准给不同的子种群设置不同的交叉率和变异率,一个低于主种群,一个高于主种群,从而避免算法陷入早熟收敛。2.根据权利要求1所述的基于多种群遗传算法的二进制程序模糊测试方法,其特征在于:步骤3通...
【专利技术属性】
技术研发人员:罗森林,侯留洋,潘丽敏,焦龙龙,张笈,
申请(专利权)人:北京理工大学,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。