跳转到主要内容
Chinese, Simplified

应用程序开发过程的一个基本要素是扫描软件以发现潜在的漏洞。静态应用程序安全性测试工具因返回大量结果(通常是数千个,甚至是相对较小的应用程序)而臭名昭着,这可能会让开发人员感到不堪重负。但无论他们对结果如何看待,软件开发人员必须明白,只运行一个应用程序安全测试工具 - 即使是市场上最好的 - 他们也缺少代码中的大多数弱点。

一个工具只涵盖了冰山一角。单个分析工具可能存在数千个缺陷,这可能导致错过严重的缺陷,可能会使有价值的数据面临被利用的风险。

一个SAST工具仅提供14%的覆盖率


根据美国国家安全局(NSA)保证软件中心(CAS)的一项研究,平均静态代码分析工具涵盖了13个弱点类别中的8个(例如缓冲区处理,文件处理,初始化和关闭以及数字处理) ,这是61.5%。该研究还发现,平均工具仅涵盖13个弱点类别中每个缺陷的22%。如果缺陷的百分比乘以所涵盖的弱点类别的百分比,则平均工具的总覆盖率仅为14%。

对于许多软件开发人员来说,这应该是一个令人大开眼界的统计数据,他们认为他们的漏洞扫描程序覆盖范围更广。缺少应用程序代码中80%以上的弱点,任何组织都不应该接受。

其他研究支持这些发现。一项研究评估了三种商业静态代码分析工具,并确定它们在检测应用程序漏洞时的性能接近或低于平均值。对九种工具的另一项评估发现平均回忆率为0.527,精度为0.7,而另一项评估的结果确定任何一种工具的最高回忆率为18.4%。

除了发现每个分析工具都未能报告所研究的大部分缺陷之外,NSA CAS和后续研究发现这些工具在各种语言和弱点类别上表现不同。

SAST弱点


鉴于这些研究的结果,我们认为必须牢固地了解静态应用程序安全测试工具的一般弱点。这些知识可用于确保为应用程序安全性测试选择正确的SAST工具组合。

SAST的弱点包括无法:

  1. 解释结果 - 您仍然需要确定一个发现是否是真正的积极因素以及对您的应用程序的影响。
  2. 认识到应用程序设计或体系结构中的缺陷。
  3. 识别新类型的错误。这可能通过一些自定义来实现,但这需要团队的一些额外工作。
  4. 证明应用程序代码没有缺陷。换句话说,仅仅因为给定的SAST工具没有发现问题,并不意味着它不存在。

这就是采用组合方法并使用多个SAST工具非常重要的原因。事实上,研究发现可以将补充工具结合起来以获得更好的结果。

两个或更多工具不仅会覆盖更大的代码区域,而且每个工具都专注于不同的弱点类和不同的语言,这消除了工具之间的大量重叠。当存在重叠时,这是一个强有力的指标,表明已识别的缺陷不是误报,开发人员可以专注于确保这些缺陷得到修复。

不仅仅依赖SAST工具也很重要。使用其他类型的工具,例如动态应用程序安全性测试(DAST)工具和交互式应用程序安全性测试(IAST)工具,以及手动代码审查,以实现全面的应用程序安全性。

如何管理多个应用程序安全测试工具


使用多个工具确实带来了挑战,即设置和运行工具所需的额外时间,比较结果以及添加更多工具所需的成本。比较结果可能是艰苦的,因为每个工具都会产生一系列具有自己的命名约定和严重等级的弱点。

这是我们开发Code Dx的原因之一:识别所使用的各种工具的重叠。无论是使用商业扫描程序,开源漏洞工具还是两者的组合,Code Dx都会显示每个工具的结果,并确定每个工具发现的漏洞(并且由多个工具发现)。

Code Dx应用程序漏洞管理器将商业和开源工具的结果进行关联和规范化,以提供一组统一的结果,从而更好地覆盖源代码中的潜在漏洞,并更好地评估组织的整体企业风险。

重复数据删除,补救管理,报告和合规性检查在一个简化的工具中处理。工作流集成选项允许您的开发人员在解决应用程序漏洞问题的同时保留其首选环境 -  Eclipse,Jira,Jenkins和其他环境。

此工具最有价值的好处之一是应用程序漏洞关联(AVC),也称为混合分析。这是指SAST结果(识别潜在漏洞)与DAST结果(确定哪些威胁实际可利用)的组合。这使您可以确定代码中存在哪些威胁,并且可以被外部攻击者利用,因此您可以先解决这些威胁。

不要满足于14%的覆盖率;这会使您的应用程序和您的声誉面临严重威胁。全面的方法涉及多个SAST,DAST和其他应用程序安全测试工具,可以提供最安全的应用程序,其优势将逐渐降低到您的底线。

幸运的是,使用多个工具比看起来更容易。 Code Dx简化了应用程序安全测试过程。您的团队可以使用所有必要的工具来全面覆盖您的应用程序代码,而无需管理多个工具和他们提供的脱节结果。

原文:https://codedx.com/14-percent/

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

Article
知识星球
 
微信公众号
 
视频号