|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一种基于遗传算法的Fuzzing测试用例生成新方法 + \! q+ q! ^+ A9 S9 x4 g {
摘要:本文根据传统漏洞挖掘Fuzzing技术的特点,针对其存在的不能求解非线性解和只能有单个的输入的问题,提出了一种基于遗传算法的漏洞挖掘测试用例生成的新方法.该方法能够利用遗传算法的优势,同时可以应对多输入测试用例问题和非线性求解问题.从自测程序的结果看出,相比于传统随机生成Fuzing测试用例的方法,本方案在效率和覆盖率方面具有明显的提高." s6 w! y2 h8 J/ |# a# K9 W _
关键词:遗传算法;非线性求解;多维Fuzzing技术8 y. h! k, D) b+ m% S& C2 C; h
1 @" u" t1 R, M' Y3 ]# }
1引言
9 ^1 h3 K( [$ A2 w在目前各类软件的安全测试中, Fuzzing 技术以其高度的自动化特性被广泛使用.但 Fuzzing技术在测试的过程中具有很大的盲目性,当遇到巨大的测试用例空间时测试效率受到很大影响.特别是在求解非线性解和只能有单个输入这两方面具有很大的不足.本文将遗传算法的思想应用到Fuzzing测试用例生成的过程之中,参考历史进化信息,使用适应度函数来影响进化方向.在不影响Fuzzing 测试高度自动化的前提下指导测试用例的生成规则,从而提高了Fuzzing测试的效率.最后通过设计实验证明了本方法(适应度函数构造方法)在提高测试效率方面的有效性.
; ^9 V I) b5 e d9 ~1 S8 E传统的漏洞挖掘主要使用Fuzzing测试技术,其基本框架如图1所示.目前常用的Fuzzing测试软件 Spike能够克服静态挖掘的测试效率不高,漏报率高的问题,从而具有较好的测试效果1~3].但是,由于传统Fuzzing技术~6]的测试用例是随机生成的,而在随机生成的测试用例中往往存在大量冗余无用的数据,占用了大量测试时间,造成系统资源的浪费,因此需要对以往Fuzz-ing测试用例的生成方法进行改进,提高生成有用测试用例的效率.
% |8 a" S* u3 V目前相关研究针对的目标程序多只有一个输入,即待测程序变量只有一个,并且程序中的大部分判断条件基本上都是简单的加减法,即一般线性判断条件(如a * x +b<0).但在实际的漏洞挖掘中,往往输入变量并不止一个,并且分支语句、循环语句的判断条件也不一定满足线性,故而本文针对这种情况提出了新的解决办法.0 \3 P. Z3 @0 S5 m1 [% v
8 P4 H4 `4 y9 U; w) N
8 x4 p5 C5 G6 f4 p. g6 N ~: d) T% N
. p! l. n+ d3 N
6 v- U% o9 d9 b1 G, b5 j6 R3 K |
|