《2022年多维Fuzzing技术综述 .pdf》由会员分享,可在线阅读,更多相关《2022年多维Fuzzing技术综述 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、收稿日期 :2010-02-02 ;修回日期 :2010-03-12基金项目 :国家自然科学基金资助项目( 60972161) ; 解放军电子工程学院博士生创新基金资助项目( CX2007016)作者简介 : 吴志勇 ( 1982- ) , 男, 江苏大丰人, 博士 , 主要研究方向为网络安全、 软件测试 ( wuzhiyong0127gmail com) ; 夏建军 ( 1985- ) , 男, 硕士研究生 , 主要研究方向为网络安全; 孙乐昌 ( 1951- ) , 男, 教授 , 博导 , 主要研究方向为网络安全、 操作系统; 张旻 ( 1966- ) , 男, 教授 , 主要研究方向为
2、通信信号处理、 模式识别 、 智能计算 多维 Fuzzing 技术综述*吴志勇a,夏建军a,孙乐昌a,张旻b( 解放军电子工程学院a 604 研究室 ;b 309 研究室 ,合肥 230037)摘要 :Fuzzing 技术是一项有效的动态漏洞挖掘技术, 但是当前对多维Fuzzing 技术的研究还不多见。把多维Fuzzing 技术面临的问题归纳为组合爆炸、 覆盖脆弱语句和触发潜在漏洞三个问题, 对存在的多种多维Fuzzing 技术进行了研究和比较, 并总结出多维Fuzzing 技术的三个基本步骤: 定位脆弱语句、 查找影响脆弱语句的输入元素和多维Fuzzing 测试挖掘脆弱语句中的漏洞。最后 ,
3、 给出了多维Fuzzing 技术的进一步发展方向。关键词 :多维 Fuzzing 技术 ;组合爆炸 ;演化测试 ;遗传算法中图分类号:TP391文献标志码:A文章编号 :1001-3695 ( 2010) 08-2810-04doi: 10 3969 /j issn 1001-3695 2010 08 002Survey of multi- dimensional FuzzingtechnologyWU Zhi-yonga,XIA Jian-juna,SUN Le-changa,ZHANG Minb( aDivision 604,bDivision 309,Electronic Enginee
4、ring Institute of PLA,Hefei 230037,China)Abstract :Fuzzingis an effective dynamicvulnerability mining technology ,however ,there is not too much researchonmulti-dimensional Fuzzing This paper concluded that the problemsof multi- dimensional Fuzzingincluded combinational explosion,covering vulnerable
5、 statementsand triggering suspendvulnerabilitiesGavea researchand a comparisonon existing multi-di-mensionalFuzzingtechnologiesandgot that they could bedivided into three basic steps :locating vulnerable statements ,find-ing input elementswhich influenced correspondingvulnerable statementsandfinding
6、 the vulnerabilities with multi-dimensionalFuzzingtechnologyAt last,gaveits further improvementdirectionsKey words:multi-dimensional Fuzzing;combination explosion;evolutionary testing;genetic algorithm1Fuzzing 技术介绍漏洞挖掘技术可以分为静态漏洞挖掘技术 1 5和动态漏洞挖掘技术 , 动态漏洞挖掘技术又可以分为早期的软件测试技术和后来的融入了多种技术的Fuzzing技术6。早期的漏洞挖掘
7、技术包括传统的白盒测试技术、 黑盒测试技术和灰盒测试技术, 但是早期的动态软件测试技术更多的是测试软件的功能而并非挖掘软件存在的漏洞; 后来出现的Fuzzing技术则逐渐发展成为区别于传统软件测试技术的专门挖掘软件漏洞的一种动态测试技术 。Fuzzing作为一项动态的软件漏洞挖掘技术具备如下优点: a) 其测试目标是二进制可执行代码, 比基于源代码的白盒测试方法适用范围更广泛; b) Fuzzing是动态实际执行的, 不存在静态分析技术 1 4中存在的大量的误报问题; c) Fuzzing原理简单 , 没有大量的理论推导和公式计算, 不存在符号执行技术 1, 3, 4中的路径状态爆炸问题; d
8、) Fuzzing自动化程度高, 不需要逆向工程过程中大量的人工参与。因此 , Fuzzing 技术是一种有效且代价低的方法, 在许多领域受到欢迎, 许多公司和组织用其来提高软件质量 7, 8, 漏洞分析者使用它发现和报告漏洞 9, 黑客使用它发现并秘密利用漏洞。国内对 Fuzzing技术已有了初步的研究 10 12和简单的应用 13 16。19892002 年间的 Fuzzing技术本质上是随机测试技术,测试数据多数是随机产生的畸形数据 17 19。随机测试技术难以深入测试软件, 也没有较高的代码覆盖率, 所以会遗漏很多漏洞 。后来 , Fuzzing测试呈现出两个不同的发展方向, 即基于知
9、识的 Fuzzing 技 术 20和 基 于 软 件 测 试 技 术 的 Fuzzing 技术 21。2002 年, 文献 22 首次提出把文件格式知识和协议知识融入到了Fuzzing技术测试用例的构造当中, 大大地提高了Fuzzing测试用例的有效性, 其开发的工具SPIKE 23发现了许多未知漏洞 。2007 年, 文献 21, 24 26 则通过把静态分析技术、 符号执行技术 、 具体执行技术等多种技术与Fuzzing技术相结合 , 从而在达到一个较高的代码覆盖率的测试基础上进行Fuzzing测试 。基于软件测试技术的Fuzzing技术通过借助软件测试中的技术使Fuzzing技术得到一个
10、不错的代码覆盖率。该方法的缺点是仍然无法克服符号执行中的状态爆炸问题, 也无法突破应用程序中的验证或检查(像固定字段、校验和、长度计算 、 个数计算 、 hash 值计算 、 加密解密算法等) 进行更为深入的 Fuzzing测试 ; 另外 , 该方法采用了类似于穷搜索的思路,而且每次执行都需要复杂的符号运算, 效率低 。基于知识的Fuzzing技术除了应用文件格式知识、 网络协议知识 , 还在构造测试用例的过程中应用到了漏洞知识, 在知识获取和知识应用上也存在不同的方法。知识的获取上可以第 27 卷第 8 期2010 年 8 月计 算 机 应 用 研究Application Research
11、of ComputersVol 27 No 8Aug2010名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 分为半自动方法和全自动方法。半自动方法是指人工参与了知识的获取过程, 甚至主要依赖于人工分析, 典型的工具有SPIKE 23、 Peach 27、 Sulley 28; 全自动方法是指应用协议或者知识的 自 动 分 析 技 术 自 动 获 取 知 识, 典 型 的 工 具 有 Auto-def 29。由于当前协议的自动分析
12、技术的效果还很不理想, 全自动的知识获取方法的漏洞挖掘效果还远远落后于参与了人工分析的半自动知识获取方式。知识应用是指如何把获得的格式或者协议知识应用于测试用例的构造, 2004 年前后 , 测试用例的构造方式分为基于生成技术( generation- based)的测试用例构造技术和基于变异技术( mutation-based) 的测试用例构造技术 30。基于生成技术的测试用例构造技术通常基于网络协议知识或者文件格式知识构造测试用例, 该技术构造的测试用例的半有效性高, 代码覆盖率高, 但是前期需要大量的人工分析来获取知识 , 使得难以实现高度自动化, 效率偏低 ; 该技术代表工具有SPIK
13、E。基于变异技术的测试用例构造技术通常基于正常的样本数据( 如样本文件 、 网络数据包 ) , 根据一定的漏洞知识 ( 如构造易触发漏洞的畸形数据方法等) 变异其中的部分数据来生成测试用例, 该技术实现起来简单, 自动化程度高, 但是由于未考虑到各个数据元素的类型、 语义和各个数据元素之间的约束关系, 各数值的待测空间大以及生成测试用例的半有效性低 , 该技术效率低 , 挖掘效果不稳定, 该技术代表工具有 FileFuzz 31。2007 年左右 , Peach工具则把两种构造技术融合起来 , 其测试用例生成策略是利用协议或者结构知识对样本数据进行分析 , 基于分析的结果和漏洞知识再对样本数据
14、进行有效的变异 。该策略通过知识和样本文件互相弥补来提高测试用例的半有效性, 因此测试用例生成技术的漏洞挖掘效果好; 另外 , 该方法基于少量的知识就可以实现粗粒度的Fuzzing测试, 基于丰富的知识则可以实现细粒度的Fuzzing测试 , 因此, 该测试 用 例 构 造 技 术 灵 活、 高 效、 自 动 化 程 度 高。工 具SPIKE、 Peach 、 Sulley、 FileFuzz 在变异样本数据生成新的测试用例的时候 , 每次只变异其中的单个输入元素, 本文称之为单维Fuzzing技术 。通过上面的比较分析可以知道, 知识的应用对于单维 Fuzzing 技术 生 成 的 测 试
15、用 例 的 半 有 效 性 有 较 大 的影响。多维Fuzzing技术是指对多维输入同时变异的Fuzzing技术, 多维 Fuzzing技术会挖掘到单维Fuzzing技术无法挖掘到的漏洞 20,但是多维Fuzzing技术会带来组合爆炸的问题,而当前对多维 Fuzzing技术的研究还不多。2多维 Fuzzing 技术面临的问题1) 组合爆炸问题文献 20, 32 34 分别对简称为多维Fuzzing技术进行了初步的研究 , 均通过对脆弱语句( 文献 35, 36 称为脆弱语句,文献 20, 33 中称为不安全函数, 文献 34 称为潜在脆弱点,文献 32 称为攻击点 , 文献 33 称为潜在被攻
16、击位置) 进行有方向的多维Fuzzing测试而触发目标程序中潜在的漏洞, 这种方法产生的测试用例数目与潜在脆弱点的个数呈线性关系, 从而避免了组合爆炸的问题, 笔者在文献 20 给予了相关的证明。有方向的Fuzzing测试技术 ( directed fuzzing) 通常必须解决两个问题:覆盖脆弱语句问题,即生成的测试用例首先必须能够覆盖指定的脆弱语句, 只有这样才有可能触发脆弱语句当中包含的漏洞 33; 触发潜在漏洞问题, 覆盖了脆弱语句并不一定能够触发潜在的漏洞, 通常还要在覆盖该脆弱语句的基础之上作进一步的Fuzzing测试 。2) 覆盖脆弱语句问题关于定位脆弱语句的问题, 文献 35,
17、 36 使用静态分析工具 splint 5, 37 查找和定位脆弱语句的位置, 但是 splint 工具只适用于 C 源代码 ; 文献 20 使用扩展的基于二进制代码的不安全函数查找技术 38, 无须源代码 ; 文献 32 34 并没有给出具体的描述。3) 触发潜在漏洞问题针对触发潜在漏洞问题, 文献 33 通过提高代码覆盖率的方法反复对程序进行测试来发现程序中的漏洞; 文献 35,36 除了通过提高代码覆盖率、 脆弱语句覆盖率、 嵌套深度来发现程序中的漏洞, 还提出通过提高缓冲区的占用率来发现缓冲区溢出漏洞 , 该方法可以有效地指导生成触发缓冲区溢出漏洞的测试用例 ; 文献 32, 34,
18、39 则与 Fuzzing技术中简单的构造畸形数据技术相结合来触发脆弱语句中的测试用例; 文献 20 提出根据各种漏洞类型的触发特征设计出相应的适应度函数以指导生成触发漏洞的测试用例。就缓冲区溢出漏洞类型而言 , 文献 20 直接使用了文献 32 中缓冲区占用率的方法, 因为文献 20 中的适应度函数专门用来解决触发潜在漏洞问题 , 而文献 32 中的适应度函数的设计除了要解决触发潜在漏洞问题 , 还要解决覆盖脆弱语句问题。3多维 Fuzzing 技术实现的方法3. 1多维 Fuzzing 技术的基本步骤文献 20, 32 36, 39 本质上都是通过变异多维输入元素进行漏洞挖掘的技术, 文献
19、 20 综合应用了静态分析技术、 基于知识的 Fuzzing技术和演化测试技术; 文献 32 综合应用了静态分析技术 、 污点传播技术和简单Fuzzing技术 ; 文献 33进一步把演化测试技术应用到目标软件错误的发现上, 并且利用化石记录原理来改进其中使用的遗传算法发现错误的能力;文献 39 基于目标软件二进制代码的控制流程图利用演化测试的技术实施对目标代码中的不安全函数进行漏洞挖掘, 该文献中设计的适应度函数的计算方法可以在一定程度上解决覆盖脆弱语句的问题; 文献 34 中综合应用了静态分析技术、 简单 Fuzzing技术 ; 文献 35, 36 中综合应用了静态分析技术、 演化测试技术
20、, 较好地解决了多维Fuzzing技术面临的三个问题。上述所有多维Fuzzing技术实现过程中采用的基本步骤可以归结为 : a) 通过静态分析技术定位目标程序中的脆弱语句的位置 ; b) 通过动态分析技术找到输入元素和潜在脆弱语句之间的影响映射关系; c) 针对每个潜在脆弱点同时变异影响它的所有输入元素不断地生成新的测试用例以触发潜在漏洞。流程如图 1 所示 。3. 2定位脆弱语句关于定位脆弱语句的问题, 文献 37 给出的工具LCLint、文献 5, 37使 用 的 静 态 分 析 工 具 splint ( 该 工 具 的 前 身 是LCLint) 均通过轻量级的静态分析方法定位脆弱语句的位
21、置,但是该工具只适合对C 源代码进行分析和检测。 文献 37 给1182第 8 期吴志勇 , 等: 多维 Fuzzing技术综述名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - 出的工具 Flawfinder 可以用来自动检测容易导致漏洞的不安全函数 , 该工具根据不安全函数离输入元素的距离来判断不安全函数中出现漏洞的可能性, 该静态分析方法存在一定的误报率。文献 38 提出通过匹配关键指令序列来识别不安全函数展开形式的方法和通过
22、分析执行路径上指令的特征来识别Mov+ Jxx 型不安全函数的方法可以有效地减小发现脆弱语句的漏报率 , 而且该方法无须源代码, 可以直接对二进制代码进行操作 。几种常用的静态分析工具如表1 所示 。表 1常用静态分析工具简介工具作者平台适用范围splintDavid Evans等UNIX只适用于C代码Flaw FinderDavid AWheelerWindows适用于C/C +代码PC_lintGIMPEL Software公司Windows/UNIX适用于 C/C + 代码ITS4 40John Viega 等UNIX适用于 C/C + 代码RATS 41John Viega 等Wind
23、ows适用于 C/C + 代码3.3查找影响脆弱语句的输入元素关于查找影响脆弱语句的输入元素的问题, 文献 32, 35,36 应用了静态切片技术( slicing) 42, 43建立输入元素与脆弱语句之间的映射关系, 此方法对于指针操作难以给出准确的处理, 故存在误报率高的缺点; 文献 20 使用输入输出分析技术( I /O) 44寻找它们之间的映射关系, 这种方法得到的结果准确率高 , 但是需要动态执行许多的测试用例, 故效率偏低 。3.4多维 Fuzzing 测试挖掘脆弱语句中的漏洞在找到了影响某个脆弱语句的多维输入元素之后, 对这些多维输入元素进行变异生成新的测试用例对目标脆弱语句进行
24、动态漏洞挖掘时, 常常会带来组合爆炸的问题。使用不同的测试用例生成策略和测试用例生成算法会对多维Fuzzing漏洞挖掘带来很大的影响。一种策略是试探性攻击策略, 该策略引入Fuzzing技术中简单的畸形数据构造技术和随机测试技术, 针对每个脆弱语句逐个进行漏洞挖掘。文献 33, 34, 39 就是使用这种测试用例构造策略测试多种输入的边界来挖掘程序中的漏洞, 该策略随机性强 , 漏报率高 。一种策略是暴力搜索策略, 该策略会带来组合爆炸的问题 , 效率低 ; 一种策略是智能逼近策略, 该策略应用了遗传算法的智能性, 使用较少的测试用例可以达到很好的效果, 但是不同的适应度函数会带来不同的逼近效
25、果。文献 35, 36 中的适应度函数中考虑到了缓冲区占用率, 可以更直接地启发生成触发尤其是缓冲区溢出类型漏洞的测试用例, 其生成触发漏洞测试用例的效率明显好于文献 33, 34, 39 中生成触发漏洞测试用例的效率。文献 8 则直接提出了与漏洞类型直接相关的适应度函数设计方法, 具有更快的效率, 另外还添加了一些最新的基于知识的Fuzzing构造测试用例的技术( 见文献 20 中的 FTSG模型 ) , 即根据输入元素的类型、 初始值等对测试用例进行变异, 对变异完的数据还进行了进一步的修改以满足数据元素之间的约束关系, 从而提高测试用例的半有效性 45, 进一步提高了挖掘漏洞的效率。不同
26、测试用例生成策略的比较如表2所示。智能逼近策略是目前而言相对较好的测试用例生成策略, 但是当前的使用了智能逼近策略的多维 Fuzzing技术每次只逼近单个脆弱语句, 是一个智能逼近单目标策略 , 漏洞挖掘的效率仍然存在很大的提升空间。4结束语多维输入的动态漏洞挖掘技术一直是一个难题, 而多维Fuzzing技术提供了一种有效的动态挖掘漏洞的方法。本文对当前多维 Fuzzing技术进行了全面的分析和比较, 归纳出了多维 Fuzzing技术面临的主要问题, 总结出了解决多维Fuzzing技术的基本步骤 。表 2测试用例构造方法比较生成策略出处原理不足试探性攻击文献 33, 34, 39结合畸形数据构
27、造技术和随机测试技术,针对每个脆弱语句测试多种输入的边界随机性强,漏报率高智能逼近文献 35, 36文献 20设计适应度函数以计算缓冲区占用率在设计适应度函数计算缓冲区占用率的同时, 基于知识构造测试用例逼近漏洞速度快,效率较高测试用例的半有效性高 、 效率更高当前的多维Fuzzing技术存在许多不足, 下一步的发展趋势主要体现在以下几个方面:a) 提高高级 Fuzzing技术脆弱语句的覆盖率。文献 20尽管能够突破程序中的多种验证和检查, 从而覆盖脆弱语句,但是它覆盖的脆弱语句过多依赖于选择的样本文件。如何选择有效的样本数据组合, 从而达到较高的脆弱语句覆盖率, 提高整体的漏洞挖掘效果。b)
28、 提高查找影响脆弱语句问题的效率。文献 20 使用的是面向执行的方法, 准确率高 , 但是效率低 , 并且依赖于样本文件的选择 , 由于覆盖不了脆弱语句而会出现漏报率高的情况;文献 32, 36 使用了特定的静态方法, 效率高但是使用范围窄、 误报率高 。c)设计一套专门用于多维Fuzzing技术的遗传算法。多维Fuzzing技术当中大多数都使用了遗传算法, 但是还需要一个专门可以表示多种输入元素类型( 如字符串类型和数值类型)并可以进行相关交叉、 变异操作的遗传算法, 也需要相关的算法优化研究 。d) 扩大挖掘的漏洞类型的范围。文献 20, 36 的多维漏洞挖掘技术优于其他的漏洞挖掘技术,
29、其中的遗传算法的适应度函数的设计涉及到缓冲区溢出和整数遗传两种类型, 对其他类型的漏洞没有给出具体的适应度函数的设计, 从而限制了多维 Fuzzing漏洞挖掘技术挖掘漏洞的范围。参考文献 : 1 KING J CSymbolic execution and program testing J Journalofthe ACM ,1976, 19 ( 7) : 385-394 2 张翀斌 基于模型检测技术的软件漏洞挖掘方法研究 D 济南: 山东大学 , 2006 3 YANG J,SAR C,TWOHEY P,et alAutomatically generating mali-cious di
30、sks using symbolic execution C / /Proc of IEEE Symposiumon Security and Privacy Washington DC: IEEE Computer Society,2006: 243-257 4 ANAND S,GODEFROID P,TILLMANNNDemand-driven compo-sitional symbolic execution C/ /Proc of International Conference onTools and Algorithms for the Construction and Analy
31、sis of Systems 2008: 367-381 5 LAROCHELLE D,EVANS DStatically detecting likely buffer over-flow vulnerabilities C/ /Proc of the 10th USENIX Security Symposi-um Berkeley: USENIX Association,2001: 177-190 6 SUTTON M,GREENE A,AMINI PFuzzing: brute force vulnerabili-ty discovery M S l : PearsonEducation
32、 Inc,2007:162182计 算 机 应 用 研 究第 27 卷名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 7 LIPNER S,HOWARD M The trustworthy computing security deve-lopment lifecycle EB /OL ( 2005- 03) http : / /msdn microsoftcom/security /defaultaspx ? pull= /l
33、ibrary /en-us/dnsecure /html /sdl asp 8 MAXWELL S AThe bulletproof penguin EB /OL ( 2001-08-03 ) http: / /home pacbellnet/s- max/scott /bulletproof- penguin html 9 GRIMES RThe buzz about fuzzers EB /OL ( 2005-11-28 ) ht-tp: / /wwwinfoworldcom/article /05 /09 /09 /37OPsecadvise_1 html 10岳彩松 MS Office
34、 漏洞挖掘与利用技术研究 D上海 : 上海交通大学 ,2008 11李列锋 基于二进制可执行文件代码覆盖测试技术研究 D 郑州: 解放军信息工程大学,2007 12邵林 , 张小松 , 苏恩标 一种基于Fuzzing 技术的漏洞发掘新思路 J 计算机应用研究, 2009,26( 3): 1086-1088 13吴毓书 , 周安民 , 吴少华 , 等 基于 Fuzzing 的 ActiveX 控件漏洞发掘技术 J 计算机应用 , 2008,28( 9) : 2252-2254 14魏瑜豪 , 张玉清 基于Fuzzing 的 MP3 播 放 软 件 漏 洞 发 掘 技 术 J 计算机工程, 200
35、7,33( 24) : 158-160 , 167 15成厚富 , 张玉清 基于 Fuzzing 的蓝牙 OBEX 漏洞挖掘技术 J 计算机工程 , 2008,34( 19) : 151-153 , 156 16高峻 , 徐志大 , 李健 针对符合文档的Fuzzing 技术 J 计算机与数字工程 , 2008,36( 12) : 116-119 17MILLER B P,FREDRIKSON L,SO BAn empirical study of the re-liablity of UNIX utilities J Communicationsof the ACM,1990,33( 12)
36、: 32-44 18MILLERB P,KOSKI D,LEE C P,et alFuzzing tevisted:a re-examination of the reliabilityof UNIX utilities and services R Wis-consin: University of Wisconsin Madison,1995 19FORRESTER J E,MILLER B PAn empirical study of the robust-nessof Windows NT applications using random testing C/ /Proc ofthe
37、 4th USENIX Windows SystemSymposiumBerkeley: USENIX As-sociation,2000 20WU Zhi- yong,ATWOOD J W,ZHU Xue-yongA new fuzzing tech-nique for software vulnerabilitymining C/ /Proc of InternationalConferenceon SoftwareEngineering2009: 59-66 21GODEFROID P,de HALLEUXP,ADITYAV,et alAutomatingsoftware testing
38、 using program analysis J IEEESoftware,2008,25( 5) : 30-37 22AITEL DThe advantagesof block-basedprotocol analysis for securitytesting R Miami Beach: Immunity Inc,2002 23SPIKECP/OL 2009-06 http : / /wwwimmunitysec com/re-sources-freesoftwareshtml 24GODEFROID P,LEVIN M,MOLNAR DActive property checking
39、 C / /Proc of the 8th International Conference on Embedded Soft-ware New York: ACM Press,2008: 207-216 25GODEFROID P,LEVINM,MOLNAR D Automated whitebox fuzztesting C/ /Proc of Network and Distributed SystemSecurity Sympo-sium 2008 26ANDREA L,LORENZO M,MATTIAM,et alA smart fuzzer forx86 executables C
40、/ /Proc of the 3rd International Workshop on Soft-ware Engineering for Secure Systems Washington DC:IEEE Compu-ter Society,2007: 7 27Peach EB /OL 2009-06 http: / /wwwpeachFuzzer com;ht-tp:/ /peachfuzzsourceforgenet 28Sulley EB /OL 2009-06 http:/ /wwwfuzzingorg 29AutoDafe EB /OL 2009-06 http: / /auto
41、dafesourceforgenet/docs/autodafepdf 30MILLER C,PETERSON Z N JAnalysis of mutation and generation-basedfuzzing EB /OL ( 2009-03-01 ) 2009-06 http: / /securi-tyevaluatorscom/files /papers /analysisFuzzingpdf 31 FileFuzz EB /OL 2009-06 http: / /labs idefensecom /soft-ware/Fuzzingphp 32GANESH V,LEEK T,R
42、INARDM Taint-based directed whiteboxfuzzingC/ /Proc of the 31st International Conference on SoftwareEngineeringWashington DC:IEEE Computer Society,2009: 474-184 33BERNDT D,FISHER J,JOHNSON L,et alBreeding software testcaseswith genetic algorithms C/ /Proc of the 36th Hawaii Interna-tional Conference
43、 on System Sciences 2003: 338-348 34LIU Guang-hong,WU Gang,ZHENG Tao,et alVulnerabilityana-lysis for x86 executables using genetic algorithm and fuzzingC/ /Proc of the 3rd International Conferenceon ConvergenceHybird Infor-mation Technology 2008: 491-497 35Del GROSSOC,Di PENTA M,ANTONIOL G,et alImpr
44、oving net-work applications security:a new heuristic to generate stress testingdataC/ /Proc of Genetic and Evolutionary Computation Conference New York: ACM Press,2005: 1037-1043 36Del GROSSOC,Di PENTA M,ANTONIOL G,et alDetecting buf-fer overflow via automatic test input data generation J Computersa
45、nd OperationsResearch,2008,35( 10) : 3125-3143 37 EVANS D,LAROCHELLED Improving security using extensiblelightweight static analysis J IEEESoftware, 2002,19( 1) : 42-50 38任华基于不安全函数的缓冲区溢出发现技术研究 D 郑州:解放军信息工程大学,2007 39SPARKS S,CUNNINGHAMR,EMBLETON S,et alAutomatedvulnerabilityanalysis:leveraging contro
46、l flow for evolutionary inputcraftingC/ /Proc of the 23rd Annual Computer Security Applica-tions Conference 2007: 477-486 40VIEGA J,BLOCH J,KOHNO T,et alITS4:a static vulnerabilityscanner for C and C + code C/ /Proc of the 16th Annual Comput-er Security Applications Conference 2000: 3-17 41Securesof
47、tware solutions,RATS,the rough auditing tool for security CP/OL http:/ /wwwsecuresw com/rats / 42TIP FA survey of program slicing techniques J Journalof Pro-grammingLanguages,1995,3( 3) : 121-89 43LARSEN L,HARROLD M Slicing object-oriented softwareC/ /Proc of International Conferenceon SoftwareEngin
48、eering1996: 495-505 44SCHROEDER P J,KOREL BBlack- box test reduction using I /Oanalysis C / /Proc of International Symposium on Software and Ana-lysis2000: 173-177 45OEHLERT PViolating assumptions with fuzzing J IEEESecuri-tyand Privacy,2005,3( 2) : 58-62 46MICHAELC C,McGRAW G,SCHATZ M A Generating
49、softwaretest data by evolution J IEEETranson SoftwareEngineering,2001,27( 12) : 1085-1110 47McMINN PSearch-basedsoftwaretest data generation:a survey:re-search articles J SoftwareTesting,Verification Reliability,2004,14( 2) : 105-156 48BRIANDL,LABICHEY,SHOUSHA M Stress testing real-timesystemswith g
50、enetic algorithms C/ /Proc of Conference on Geneticand Evolutionary Computation New York: ACM Press,2005: 1021-1028 49WATKINS A,BERNDT D,AEBISCHER K,et alBreeding softwaretest casesfor complex systems C/ /Proc of the 37th Annual HawaiiInternational Conferenceon System Sciences 20043182第 8 期吴志勇 , 等: