论文部分内容阅读
随着社会信息化的不断加深,软件的安全问题越来越突出。安全漏洞是软件中的一种故障模式。此类漏洞的存在可能为他人攻击软件提供方便。而一旦软件被攻击成功,系统就可能发生瘫痪,所造成的危害可能更大,因此,此类漏洞应当尽量避免。为了避免软件漏洞被攻击者利用,软件发布前,对其进行测试是必需的,应尽力在发布前找到软件的Bug和漏洞。而真实的情况却是:很多软件根本没有经过严格的测试就投放到市场中了。Fuzzing测试是一种非常好的漏洞检测方法、自动化测试方法。但是fuzzing测试的效果,很大程度上取决于其使用的测试用例。而现在fuzzing工具使用的测试用例比较简单,且生成方法比较简陋。正则表达式是正则语法的一种描述方式,它广泛应用于模式匹配中,现在绝大多数程序设计语言都对其有所支持。本文提出了一种正则表达式的新颖用法——将正则表达转换成对应的数据。因为正则表达式是一种描述能力非常强的方法,特别适用于定义和描述各种结构化数据。本论文给出了这种能生成数据的正则表达式的完整定义,将其命名为“正则生成式”。同时,论文也实现了将给定正则生成式转换成数据的程序代码。依据本文设计的正则生成式,论文又设计和实现了两个Fuzzing测试框架,每个框架的测试数据都是由正则生成式生成。同时这两个框架也极具扩展性,一个是编写符合论文接口要求的动态库插件进行扩展,一个则是编写符合接口要求的Python脚本。使用这两个框架,测试者可以更专心的关注测试目标本身协议问题,可以更好的设计测试数据,从而更容易的发现测试目标的漏洞。进一步论文使用上述Fuzzing工具对实际的目标软件进行了测试,得到了非常好的实验结果。