关键词:
Java源代码安全检测
静态分析
动态监测
双向污点分析
摘要:
随着我国软件行业和互联网行业的高速发展,人们对软件安全性的要求越来越高。然而软件开发人员往往缺乏信息安全意识,因此在开发过程中会不自觉地引入很多的安全漏洞。对于大型及中型的程序代码,人工排查是低效、易错的。因此高效准确的软件源代码安全检测工具就显得非常必要且紧迫了。本文提出了静态分析与动态监测相结合的Java源代码缺陷检测·系统,主要工作如下:(1)设计了基于关系数据库的静态分析架构。在开源代码的基础上,将Java源代码转化为关系数据库,并设计规则以关系数据库查询的方式进行静态分析。(2)提出了双向污点分析方法。在静态分析过程中,本文在单向污点分析基础上,又进行了逆向的污点分析,该方法可以提高静态分析的准确率,同时也可以在流不敏感的污点分析过程中获取污点传播路径,本文也提出了穷举递归的污点传播路径计算算法。(3)针对SQL注入漏洞,本文提出了基于静态分析的测试用例构造方法。本文针对SQL注入漏洞设计了测试用例结构,并通过静态分析的结果填充测试用例,生成动态监测的测试用例集合。(4)提出基于静态分析结果的、面向Aspect的动态监测方法。本文利用静态分析结果生成Aspect代码,利用面向Aspect的程序设计技术进行动态监测,该方法简单易实施,且动态监测代码独立于被测源代码,方便监测代码的删除和修改。(5)对webgoat、snipsnap等开源代码进行实际的漏洞检测。实验结果表明,该系统可以对大中型源代码进行检测,且检测的准确率高、误报率低。