基于安全规则的源代码分析方法研究
【摘要】:软件安全,作为互联网时代软件必然的需求,是一种对软件质量的更高要求。近年来,随着互联网技术的发展,软件安全形势变得越来越严峻,软件的安全性测试因此受到越来越多的重视。然而,应用软件的功能越来越强大,程序源代码的规模也随之增加,这使得采用传统的软件测试方法来检测源代码中潜在安全漏洞的难度增加,而且可被利用的安全漏洞形式也不再局限于以往的常见漏洞。所以能根据自定义安全规则准确高效地检测出源代码中潜在安全漏洞的源代码分析方法,成为了一个值得研究的课题。
基于安全规则的源代码分析方法在对源代码进行预处理分析的基础上,根据安全规则对源代码进行模式匹配,从而实现源代码的安全检测。具体来说,首先对源代码进行词法、语法分析并构造抽象语法树,然后通过遍历抽象语法树将源代码转化为中间表示,并利用依赖分析技术获得源代码的控制流图、数据流图和函数调用图。在完成源代码预处理分析的基础上,通过使用安全规则描述语言来自定义安全规则,将待检测的漏洞模式抽象为一个有限状态机,然后与源代码的中间表示进行匹配并完成源代码中相关变量的绑定,同时为每个绑定变量生成一个安全漏洞状态机,然后遍历相关图结构,并跟踪每个安全漏洞状态机的状态变迁。当安全漏洞状态机进入规则定义中的不安全状态时,则完成漏洞检测并生成漏洞报告。
实验表明,对较大规模的程序源代码进行检测,基于安全规则的源代码分析系统在规则定义的简洁性、检测效率和准确率方面均优于现有的安全性测试工具,能够达到预期的检测效果。