自动源代码分析
大中型企业不能保证每次执行代码审查时对所有应用都逐一排查。相反,许多审查可能都依赖于自动源代码分析器的帮助。
典型的软件开发优先项包括日程,功能和质量——在大多数情况下,它们的先后顺序就是如此。时间和市场的双重压力对软件之类和弹性都有负面影响,有时甚至会推迟软件新功能的增加。
负责软件开发的企业经理通常都相信:对软件质量的偏重会增加开发成本并延迟项目。对于软件质量的研究则证明了这是悖论。具备成熟SDLC进程的企业通常因软件质量和弹性所支付的额外费用并不多,而从代码改进中节约的成本要大于因提高质量而付出的成本。
静态源代码分析器支持用查找和列出代码库潜在安全漏洞的方式保护程序的开发。它们提供了大量有关代码库安全趋势的分析报告,而这些报告可作为一种有效机制来收集指示进程和软件安全成熟度的矩阵。源代码分析器的运行速度极快,可以节约大量人力。自动工具也为每个漏洞提供了风险级别,这样有助于企业对补救措施进行优先。
更重要的是,自动代码分析器可以帮企业在SDLC中早一点发现未覆盖的漏洞,这样便可以节省开支。
1 自动审查与手动审查作比较
尽管自动源代码分析器可以在减少额外成本的情况下执行审查,可以捕捉典型的漏洞,可以扩展代码还可以快速执行重复任务,但它仍然存在不足。自动工具会出现大量误报的情况。有时可能会让企业花上几个月来调试工具以减少误报,但是某些级别的误报还是会存在。源代码分析器在寻找业务逻辑漏洞方面的能力不足。某些自动分析不能查探出的攻击类型是复杂的信息泄露,设计漏洞,主观漏洞,如假冒的跨站点请求,居心不良的竞态条件和多步骤进程攻击。
2 有偿/免费的源代码分析器
下面是一些源代码分析器,包括有偿的,免费的和开源的软件。
有偿的软件——多语言
Armorize Codesecure——带网页界面的工具,多种嵌入式语言,支持ASP.NET, VB.NET, C#, JAVA/J2EE, JSP, EJB, PHP, Classic ASP和VBScript。
Coverity Software Integrity——识别安全漏洞和代码漏洞,支持C,C++,C#和Java。
Compuware Xpediter——适合基于主框架的应用,提供COBOL,PL/I,JCL, CICS,DB2,IMS和其他主流主框架语言的分析。
Fortigy 360——帮助程序员识别软件安全漏洞,支持C/C++,NET,Java, JSP, ASP.NET, ColdFusion, Classic ASP, PHP, VB6, VBScript, JavaScript, PL/SQL, T-SQL和COBOL以及配置文件。
KlockworkInsight和适合Java程序员的Klockwork ——提供安全漏洞的检查以及架构的分析,支持C,C++,C#和Java。
Ounce Labs——自动源代码分析,可以让企业识别并消除软件中的安全漏洞,支持Java,JSP,C/C++,C#,ASP.NET和VB.NET。
开源软件——多语言
以下是用于源代码分析的开源产品。
O2——开源模式集合,有助于Web应用安全专家最大化自己的努力,通过自动化应用安全知识和工作流程,可以快速获得应用安全文件的可视性。
RATS(安全粗审)——可以扫描用C,C++,Perl,PHP和Python源代码。
YASCA——基于插件的扫描任意文件类型的架构,具备扫描C/C++,Java,JavaScript,ASP,PHP,HTML/CSS,ColdFusion,COBOL和其他文件类型的插件;融合了其他扫描器,包括FindBugs,Jlint,PMD和Pixy。
支持.NET的
FxCop——用于编译CIL的Microsoft.NET程序的免费静态分析,独立且融合了一些微软Visual Studio 版本。
StyleCop——分析C#源代码以加强风格和连贯性;可在微软Visual Studio内部运行或整合到MSBuild 项目中。
支持Java的
Checkstyle——除了可进行一些静态代码分析,还可以用来展示违反配置代码标准的示例。
FindBugs——马里兰大学研发的用于Java语言的开源静态代码分析器(基于Jakarta BCEL)。
PMD——基于套件的Java源代码静态规则。