论文部分内容阅读
随着应用软件的不断丰富,信息安全面临的挑战也日益严峻。一般来说,软件安全问题大都由代码缺陷引起。因代码缺陷产生的安全漏洞,很可能被攻击者利用,进而达到窃取信息、控制系统等目的。按检测过程中是否需要执行程序,软件安全缺陷检测可分为静态检测和动态检测两大类。然而,无论是静态检测技术还是动态检测技术都存在误报率和漏报率较高的问题,不能满足当前软件代码的安全需求。因此,如何实现高效准确的代码审计已成为当今国内外学者致力研究的一个热点问题。静态检测相对来说效率较高,但对常用的静态源代码扫描工具Its4、Rats、Flawfinder、Splint、Cppcheck进行实验,发现它们的误报率都非常高,导致单独使用某一个工具并不合适,然而不同工具的检测结果可以在不同程度和不同方面反映源代码存在的安全问题。在单个工具检测结果的误报率较高的情况下,如果能将采用不同静态分析原理的源代码扫描工具的检测结果进行综合利用,得到的结论将比只利用单个工具进行检测更具说服力。本文在对数据融合技术进行研究之后,将一种改进的D-S证据理论应用于静态代码审计技术当中,为基于静态检测的代码审计技术提供了一种新思路。首先,采用不同的静态源代码扫描工具对检测对象进行综合扫描,并对各个工具的检测结果进行标准化处理;然后,利用各工具的误报率和漏报率计算它们的可信度值,并把可信度值当作权值对原始证据进行加权平均;接着,对证据进行n-1次Dempster规则合成;最后,利用新的m函数值进行漏洞判决。实验表明,相比于单个工具,新方法在保证正确率的同时显著降低了误报率;相比于传统D-S证据理论,新方法的正确率更高且误报率的改善也更加明显,是一种性能更好的代码审计方法。