|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一种基于遗传算法的Fuzzing测试用例生成新方法
M# F5 U+ A j1 [8 k/ G7 c+ j摘要:本文根据传统漏洞挖掘Fuzzing技术的特点,针对其存在的不能求解非线性解和只能有单个的输入的问题,提出了一种基于遗传算法的漏洞挖掘测试用例生成的新方法.该方法能够利用遗传算法的优势,同时可以应对多输入测试用例问题和非线性求解问题.从自测程序的结果看出,相比于传统随机生成Fuzing测试用例的方法,本方案在效率和覆盖率方面具有明显的提高.( }6 x* {0 l6 X3 B2 m' d
关键词:遗传算法;非线性求解;多维Fuzzing技术2 {* ]) A8 V* C
. v5 D/ ?" Y8 S7 j/ i' k1引言
' c: J' }, D* @3 a, ~% F3 ?在目前各类软件的安全测试中, Fuzzing 技术以其高度的自动化特性被广泛使用.但 Fuzzing技术在测试的过程中具有很大的盲目性,当遇到巨大的测试用例空间时测试效率受到很大影响.特别是在求解非线性解和只能有单个输入这两方面具有很大的不足.本文将遗传算法的思想应用到Fuzzing测试用例生成的过程之中,参考历史进化信息,使用适应度函数来影响进化方向.在不影响Fuzzing 测试高度自动化的前提下指导测试用例的生成规则,从而提高了Fuzzing测试的效率.最后通过设计实验证明了本方法(适应度函数构造方法)在提高测试效率方面的有效性.
) q1 I# E3 d6 x% U4 E! X9 d传统的漏洞挖掘主要使用Fuzzing测试技术,其基本框架如图1所示.目前常用的Fuzzing测试软件 Spike能够克服静态挖掘的测试效率不高,漏报率高的问题,从而具有较好的测试效果1~3].但是,由于传统Fuzzing技术~6]的测试用例是随机生成的,而在随机生成的测试用例中往往存在大量冗余无用的数据,占用了大量测试时间,造成系统资源的浪费,因此需要对以往Fuzz-ing测试用例的生成方法进行改进,提高生成有用测试用例的效率.# \$ p. O v2 x x7 _3 e; u. k. S
目前相关研究针对的目标程序多只有一个输入,即待测程序变量只有一个,并且程序中的大部分判断条件基本上都是简单的加减法,即一般线性判断条件(如a * x +b<0).但在实际的漏洞挖掘中,往往输入变量并不止一个,并且分支语句、循环语句的判断条件也不一定满足线性,故而本文针对这种情况提出了新的解决办法.
; U- R c5 f0 i6 L. G) K, X9 m4 n9 M Q" L, w5 ^8 \
* h; h) [( Q; U' N8 j4 _2 G
# C8 v; Q- r# m6 s! b
( c( Y( o" l9 ~5 t | |
|