一、静态检测基本概念
软件安全检查技术主要用于对软件中的安全缺陷或漏洞进行分析测试,以期发现软件中的安全隐患,也是漏洞挖掘的一个过程。
软件安全监测技术主要包括软件静态安全检测技术、软件动态安全检测技术和软件动静结合的安全检测技术。
软件静态安全检测技术是针对未处于运行状态的软件所开展的安全分析测试技术。软件静态安全检测技术可以用于对软件源代码和可执行代码的检测。
静态检测——源代码检测
静态安全检测技术——词法分析
词法分析通过对源代码进行基于文本或字符标识的匹配分析对比,以查找符合特定特征和词法规则的危险函数、api或者简单语句组合
通过词法分析来找到特点的危险函数或者特定危险操作的组合。
特定:快速检测、算法简单、检测性能高
缺点:只能进行表面词法检测,误报率较高
常见的工具包括:checkmarx和ITS4等
静态检测技术——数据流分析
数据流分析是通过分析软件代码中变量的取值变化和语句的执行情况,来分析处理逻辑和程序的控制流关系,从而分析软件代码的潜在安全缺陷。
适用情况:适合检查因控制流信息非法操作而导致的安全问题,如内存访问越界、常数传播等。
误报率高
常见的工具包括:covertiy和klockwork等
静态检测技术——污点传播分析
污点传播分析技术是通过分析代码中输入数据对程序执行路径的影响,以发现不可信的输入数据导致的程序执行异常。