关键词:
Java
模糊测试
模糊测试驱动程序
依赖分析
静态分析
摘要:
Java语言一直是最受欢迎的程序设计语言之一,具有面向对象、多线程、健壮性、动态性、安全性、分布式、可移植性等优点,被广泛运用于各种程序的开发。模糊测试技术是软件测试最有效的手段之一,能够有效提高各种软硬件系统的安全性。当前,面向Java库程序的模糊测试技术还存在依赖人工编写模糊测试驱动程序,难以大规模拓展的问题。研究面向Java库的模糊测试驱动程序生成技术,可以提高Java库程序安全性的测试效率,可进一步丰富Java程序的测试途径,对于提高Java程序质量,保护网络应用安全有着积极的意义。本文围绕提高面向Java库程序的模糊测试的效率的迫切需求,开展面向Java库的模糊测试驱动程序生成技术研究,解决了单库和多库情况下的Java库模糊测试驱动程序生成的问题,本文主要工作和贡献如下:(1)提出了一种基于单库依赖分析的Java模糊测试驱动程序生成方法。针对面向Java库程序的模糊测试驱动程序生成的问题,本文提出了基于依赖分析的Java模糊测试驱动程序生成方法。该方法首先通过静态分析,得到API调用的依赖关系;接着通过值集分析,得到API参数依赖关系。在API调用依赖关系的基础上,得到API依赖关系图;最后,以API依赖关系图为指导,综合生成模糊测试驱动程序。(2)提出了一种基于多库依赖分析的Java模糊测试驱动程序生成方法。针对现有模糊测试驱动程序生成方法仅面向单个库的依赖关系进行分析的问题,本文提出了一种基于多库依赖的Java模糊测试驱动程序生成方法。在依赖分析阶段对多个库的API进行分析,从而生成更加全面的API依赖关系图。通过对多个库的依赖关系的分析,能有效提高模糊测试驱动程序的生成能力。(3)设计实现了一个基于依赖分析的Java模糊测试驱动程序生成系统。本文将上述方法设计实现为原型系统,实际测试验证了其生成模糊测试驱动程序的能力,能够有效提高对Java库程序模糊测试的效率。在测试中发现了2个0 day拒绝服务漏洞,并提交有关部门。据公开资料查阅,实现基于依赖分析的Java模糊测试驱动程序生成系统尚属首次。