|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一种基于遗传算法的Fuzzing测试用例生成新方法 # F% W. f) E1 t" R# U, E5 z7 Y! K+ H
摘要:本文根据传统漏洞挖掘Fuzzing技术的特点,针对其存在的不能求解非线性解和只能有单个的输入的问题,提出了一种基于遗传算法的漏洞挖掘测试用例生成的新方法.该方法能够利用遗传算法的优势,同时可以应对多输入测试用例问题和非线性求解问题.从自测程序的结果看出,相比于传统随机生成Fuzing测试用例的方法,本方案在效率和覆盖率方面具有明显的提高.- }2 x* n8 B/ r* C4 O8 a6 t' B4 b l
关键词:遗传算法;非线性求解;多维Fuzzing技术
% E3 q2 v0 w4 F( e, F) g9 m& `7 W4 [* c0 x1 J. N% a) s
1引言
4 O) g6 h9 \! A6 y在目前各类软件的安全测试中, Fuzzing 技术以其高度的自动化特性被广泛使用.但 Fuzzing技术在测试的过程中具有很大的盲目性,当遇到巨大的测试用例空间时测试效率受到很大影响.特别是在求解非线性解和只能有单个输入这两方面具有很大的不足.本文将遗传算法的思想应用到Fuzzing测试用例生成的过程之中,参考历史进化信息,使用适应度函数来影响进化方向.在不影响Fuzzing 测试高度自动化的前提下指导测试用例的生成规则,从而提高了Fuzzing测试的效率.最后通过设计实验证明了本方法(适应度函数构造方法)在提高测试效率方面的有效性.
+ ?# x; ~9 R9 b) v8 L( v" c6 L( p7 a传统的漏洞挖掘主要使用Fuzzing测试技术,其基本框架如图1所示.目前常用的Fuzzing测试软件 Spike能够克服静态挖掘的测试效率不高,漏报率高的问题,从而具有较好的测试效果1~3].但是,由于传统Fuzzing技术~6]的测试用例是随机生成的,而在随机生成的测试用例中往往存在大量冗余无用的数据,占用了大量测试时间,造成系统资源的浪费,因此需要对以往Fuzz-ing测试用例的生成方法进行改进,提高生成有用测试用例的效率.. h# i( j D) D3 n/ N/ P( G
目前相关研究针对的目标程序多只有一个输入,即待测程序变量只有一个,并且程序中的大部分判断条件基本上都是简单的加减法,即一般线性判断条件(如a * x +b<0).但在实际的漏洞挖掘中,往往输入变量并不止一个,并且分支语句、循环语句的判断条件也不一定满足线性,故而本文针对这种情况提出了新的解决办法.
5 k# z, X& C& {( ?2 V( o
1 `6 q- \" J3 i$ W' ^6 v
' V9 Q4 g. z2 P. _! O. l5 n' g2 R) A! q& v
! a1 V# C2 {( C0 L8 ~
|
|