关键词:
静态检测
控制流分析
数据流分析
路径查找
Jimple
IFDS
摘要:
互联网产业的飞速发展,给人们的生活带来了非常多的便利,人们对计算机的需求日益增长,同时也刺激着软件行业的不断进步。软件需求量的增多,需求方式的多样性,促使软件开发者以新的开发方向和角度满足着用户的需求。Java语言作为代表性的程序设计语言,以通用性、高效性、跨平台型以及安全性的独特优势,占据着程序开发语言的主要市场份额。随着软件开发规模的增大,代码复杂度的提高,对软件安全性的检测的难度也随着增大,因此,基于Java源码的静态检测方法有着重要的研究意义。程序的静态检测方法,是基于程序的执行逻辑,依照程序的执行过程对程序的执行结果进行分析,在分析的过程中能够准确的定位程序漏洞节点位置,为后期的修改工作提供有效的支持。现有的基于Java源码的静态检测技术在分析效率和结果准确率这两个程序分析的重要指标上都有着亟待提高的空间,本文基于控制流分析和数据流分析方法的研究,提出的一种新的检测系统在这两个方面较以往的检测方法都有着较为明显的提升。本文的主要研究工作为:第一、基于控制流分析框架对Java源码进行控制流分析生成过程间控制流图,第二、结合IFDS问题的理论研究,将Java程序分析问题抽象为具体IFDS问题,第三、根据IFDS问题,定义IFDS问题求解器的接口类和接口类中的功能函数,其中最重要的功能函数为数据流函数;数据流函数定义了不同类型的数据流,并根据程序执行的逻辑,判断当前语句的类型,根据当前语句的类型,选择相对应类型的数据流函数,对程序进行数据流分析,得出分析结果。通过对该系统的实验测试,表明基于控制流分析和数据流分析的Java源码静态检测框架可以完成对程序的完整性分析,并且对程序的漏洞分析结果的准确率高于一般静态程序分析平均标准值,达到了预期的设计目标和要求。