9.5.2  源代码安全审核原理

9.5.2 源代码安全审核原理

源代码安全审核工具的核心技术是静态分析技术。静态分析是在不执行程序的情况下对其进行分析的技术,是与动态分析(需要实际执行程序)相对应的代码分析技术。大多数情况下静态分析的对象都是源代码,只有极少数情况会使用目标代码。

静态分析越来越多的被应用到程序优化、软件错误和系统理解领域,其基本方法如下:

1.文本查找

文本查找是一种最简单的方法,即查找源文件中的有安全隐患的函数,如使用UNIX的工具grep。

2.词法分析方法

静态分析工具对源文件进行预处理和标记分析,这一点和编译系统的第一步操作相同。然后将得到的标记流结果与容易受到攻击的结构库重点内容进行匹配。词法分析方法比文本搜索方法高明,但是会产生大量的假阳性,即误报的错误。

3.基于语法树语义分析

为了增加精确度,利用更多的编译器技术,建立语法树(AST),对评估的程序进行语义分析。得到AST后,确定分析的范围。局部分析每次分析一个函数,不考虑函数间的关系。模块分析每次分析一个类,会考虑同模块中函数间关系。全局分析考虑整个程序中所有函数间的关系,通过这种方式,减少假阳性。

静态分析的方法还有很多,如语法分析、语义分析、数据流分析等。