但是,渗透测试的全面性和覆盖率一直都是困扰着众多软件安全测试人员的问题。而且对于开发人员来说,他们更为关心如何能够在软件开发的早期阶段就能引入安全性的分析,让他们能够根据漏洞分析的提示,尽可能早地将安全问题 Fix 在开发阶段,这就引入了基于白盒的源代码安全分析。
如果把检测软件漏洞比作去医院看病,那渗透测试就如同中医的“闻问望切”一般,通过给软件把脉,将病例病因一一道来。而基于白盒的源代码分析,更像是西医的内观外治,先做完 X 片、B 超,然后对症下药。
其实长久以来,基于黑盒的渗透测试和基于白盒的源代码分析到底谁更为有效的问题一直争论不下,以至于还有了灰盒测试(Gray Box)的出现。接下来就让我们一起通过示例看看白盒黑盒孰优孰劣。
#FormatImgID_15# #FormatImgID_16# |
#FormatImgID_17#
|
给软件拍一张 X 光片—基于白盒的源代码分析
源代码分析技术由来已久,Colorado 大学的 Lloyd D. Fosdick 和 Leon J. Osterweil 1976 年的 9 月曾在 ACM Computing Surveys 上发表了著名的 Data Flow Analysis in Software Reliability,其中就提到了数据流分析、状态机系统、边界检测、数据类型验证、控制流分析等技术。随着计算机语言的不断演进,源代码分析的技术也在日趋完善,在不同的细分领域,出现了很多不错的源代码分析产品,如 Klocwork Insight、Rational Software Analyzer 和 Coverity、Parasoft 等公司的产品。而在静态源代码安全分析方面,Fortify 公司和 Ounce Labs 公司的静态代码分析器都是非常不错的产品。2009 年 7 月底,IBM 发布收购要约,将 Ounce Labs 纳入 Rational 产品线。在本示例中,我们选用 Ounce Labs 的安全分析器(Ounce Security Analyst 6.1)和 Rational Software Analyzer 来分别对示例代码进行静态源代码安全分析和代码质量分析。
为了保持示例一致性,我们选用 AltoroMutual 应用的源代码进行静态分析。首先,我们用 Ounce Security Analyst 6.1 进行源代码安全分析。
Ounce 的安全分析器(Ounce Security Analyst)支持多种部署方式,可以独立运行,也可以通过 Plug-in 的方式运行在软件开发人员的集成开发环境中。在软件开发生命周期(SDLC)中,对于开发人员,更多的是希望在日常的开发过程中能够进行源代码的安全分析和检查,因此在本文的示例中我们选择将 Ounce 安全分析器(Ounce Security Analyst)通过插件的方式 Plug-in 到基于 Eclipse 的 IBM Rational AppScan Developer Edition 7.8.1 中来使用。
图 12. Ounce Labs 在 RADE 中的插件
(点击查看大图)
下面我们在装有 Ounce Security Analyst 的 Rational AppScan Developer Edition 中,将 AltoroMutual 的源文件导入,我们发现 Plug-in 后的 Rational AppScan Developer Edition 上会多了一个名称为 Ounce 的菜单。
图 13. 在 RADE 中将 AltoroJ 项目编译通过
(点击查看大图)
对于一般的静态安全分析而已,保持代码在做静态安全分析前的可编译性是一项非常重要的工作。因此建议软件开发人员在进行静态安全分析前首先保证自己的代码是编译通过的。我们首先将 AltoroMutual 的源代码进行编译,然后在 Ounce 菜单中选择对 AltoroMutual 源代码进行扫描。
下图中所示的是进行扫描之后的情况。在 Rational AppScan Developer Edition 的控制台中,我们看到 Ounce Security Analyst 总共扫描了 AltoroMutual 项目的 97 个源文件,在 10625 行代码里发现了 742 个安全问题,总共用时 62 秒。
图 14. 利用 Ounce Security Analyst 进行源代码扫描
(点击查看大图)
将视图切换到 Ounce Labs Perspective 后,打开 Assessment Summary,我们可以查看发现的漏洞类别与数量。
图 15. 扫描发现的 Top10 的漏洞类别与数量
(点击查看大图)
文章来源于领测软件测试网 https://www.ltesting.net/