软件源代码安全缺陷检测技术研究进展综述
作者:网络转载 发布时间:[ 2013/6/26 11:29:48 ] 推荐标签:
3.3 基于静态检测工具的检测方法
不同机理的源代码静态工具分析的手段不同,是机理大致相同的同一类工具的设计思想与实现细节也有所差别,能够发现的软件漏洞也有所区分。例如,漏洞规则库的不同、算法实现中启发式策略的不同、漏洞定义的危险等级不同等因素都会改变软件漏洞的识别率。以常用的、效率较高的几个工具如 Its4、Rats、Flawfinder 为例,有研究表明: 通过对相同的软件包进行测试,Flawfinder 发现的漏洞多,但并不是完全覆盖了Rats、Its4 发现的漏洞部分; Rats 和 Its4 两者发现的漏洞数目相差不大,但是有很多不相交的部分[4]。
如果能够充分发挥各个静态分析工具的优点和特点,将各个工具分析结果通过适当的方式进行统计分析,从而可以使漏洞结果集之间相互验证,互为补充,一方面,会降低源代码分析的漏报率,尽可能多地发现存在的漏洞; 另一方面,如果可以对融合的结果进行合理的等级评估,准确定位漏洞在源代码中的位置,那么漏洞的误报率也会降低。基于上述思想,本文提出一种基于统计分析的源代码静态分析方法:
a)集成。将不同机理的源代码静态分析工具(本文集成了 Its4、Flawfinder、Cqual、Splint 和 Cppcheck 五个工具)集成到一个平台,实现对程序源代码的静态检测。
b)预处理。对每一个工具的输出数据按照统一的格式进行预处理以符合数据库的设计。c)统计分析。将数据库中的数据进行统计分析,得到综合性的检测结果。
源代码静态分析工具平台设计与实现:将选定的 Flawfinder、Its4、Cqual、Splint、Cppcheck 五个静态分析工具集成封装到一个平台,即源代码静态分析工具平台。源代码静态分析工具平台总体上由四个模块组成。其总设计框图如图 1 所示。
1)静态分析检测模块:该模块集成 Its4、Flawfinder、Cqual、Splint 和 Cppcheck 工具,通过运行这些工具对用户选定的 C/C ++ 源代码进行扫描,定位源代码中使用的危险库函数或 API 函数。
2)输出结果解析模块:上述各工具的检测结果格式存在很大的差异,如 Its4 工具的检测结果TrojDetect. c: 2125: (VeryRisky) sprintf This function is high risk for buffer overflows Use snprintf if available,or precision specifiers,if available。对其结果进行解析,解析为具有统一标准格式的文件形式,一条记录为一个漏洞条目,即一个七元组序列: 工具名称、文件名、出现行号、危险等级、问题类型、引起出错函数、问题描述。其中危险等级分为 Some Risk、Risky、Very Risky、Urgent 四类,以 10分等级进行映射,则: f( Some Risk) = 2,f( Risky) = 4,f( VeryRisky) = 8,f( Urgent) = 10。因此工具 Its4 的以上结果解析成(Its4,TrojDetect. c,2125,8,overflow,sprintf,This function is high risk for buffer overflows Use snprintf if available,or precision specifiers,if available) 。同理,其他工具的检测结果也根据同样的七元组序列进行解析。3) 数据库模块 将上述由输出结果解析模块得出的具有统一标准格式的文件,即漏洞条目,以不同的工具名建立不同的表插入到 MySQL 数据库,然后采用统计分析方法对漏洞进行分析,即从事务数据库中得出数据进行统计,如图2所示。
3.4 一种创新的计算机入侵检测技术
计算机安全的目标是保证信息系统的保密性、完整性和可用性. 计算机安全十分复杂,由于配置错误和软件缺陷的原因,使得从底层操作系统到上层应用程序,从通信基础设施到网络应用服务,从系统配置管理到用户操作都有可能存在各种安全隐患. 配置错误,即没有正确定义访问控制规则,使入侵者有机可乘,这种错误通常由供应商和系统管理员产生. 软件缺陷,即软件编程中出现的错误. 软件缺陷有两种,一种是基本软件缺陷,即与安全有关的软件错误;另一种是任何与安全无关的程序中存在的软件缺陷,它可能会影响到系统的安全性. 配置和软件错误造成了不断有系统和应用软件漏洞被发现,不断有攻击被报道,供应商推出的新版本和补丁不断又带入新的漏洞,形成了恶性循环. 尽管广泛应用了各种安全技术和产品,如强有力的识别/ 验证系统、更好的访问控制工具、改进了的防火墙和密码系统等,仍然会遭到入侵者的攻击. 因此我们不得不承认,现有安全系统是不完备的,需要进一步引入入侵检测技术. 入侵检测不能阻止入侵者通过安全漏洞进行的攻击,但它能够事先寻找漏洞,并且在非法入侵者攻击系统时,能及时将它们捕获,引入入侵检测技术是目前保证计算机安全的必要手段。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11