图 20. Rational Software Analyzer 中基于数据流分析发现的资源泄漏问题
(点击查看大图)
相似的,在 Ounce 中也可以发现这样既是安全也同样存在质量因素的漏洞。
图 21. Ounce 中针对相同资源泄漏问题的分析
(点击查看大图)
# |
总结
在本文中,我们通过对 Web 应用 AltoroMutual 进行渗透测试和源代码安全扫描,来对比黑盒动态测试和白盒静态分析在发现软件安全漏洞方面的功效,并利用 Rational Software Analyzer 在代码质量方面进行了粗浅的分析和与安全扫描的对比。
通过上述示例,我们发现源代码静态分析在代码扫描的覆盖率、发现安全问题的数量上有着不错的表现,并且能够找到大部分通过渗透测试发现的安全问题。但这并不能说静态分析在软件安全检测方面要优于渗透测试。静态分析的高覆盖率和扫描器的不同设置也导致了相对较高的误报率,而且静态代码的非运行性会导致了很多跟运行环境相关的安全漏洞通过静态安全分析无法发现。相对于此,渗透测试刚好可以弥补静态分析的这些劣势,虽然渗透测试发现安全问题的数量不如静态分析那么多,但是渗透测试的准确率和针对运行时态的实时检测都是其优势所在。所以渗透测试在软件开发生命周期中是不可或缺的一个环节。同样,我们看到软件的质量问题在源代码分析中也不能忽视。因此,一个理想的选择是:在整个软件开发生命周期中的不同阶段,针对不同的人员,引入相应的安全策略,制定合理的开发流程,从而达到提高软件安全性的目的。
文章来源于领测软件测试网 https://www.ltesting.net/