关键缺陷减少不等于安全无忧,软件安全债务仍是重中之重!
据Veracode的研究显示,在过去几年里,尽管应用程序中高度严重的安全漏洞的流行率显著下降,但仍有众多组织存在着严重的安全债务问题。
该研究基于Veracode最近的静态应用程序安全测试(SAST),动态应用程序安全测试(DAST)和软件组件分析(SCA)扫描超过100万个应用程序收集的数据。
"人工智能生成的代码广泛传播产生了大量不安全代码,这可能会产生安全债务,"Veracode的首席研究官Chris Eng表示。"考虑到我们发现的安全债务的严重性,有必要考虑使用人工智能辅助的修复工具来偿还债务,而不是需要重新分配开发团队或扩大其规模。"
这项研究还指出,在整个软件开发生命周期(SDLC)的过程中,应重视对本地和第三方代码的测试,以发现其中存在的大量缺陷。
01
减少关键缺陷,而不是淘汰
研究发现,截止至2023年,应用程序中严重缺陷的流行率已经降至2016年的一半,仅为37.9%。尽管只有约3.2%的缺陷被认为是极其严重的(CVSS评分达到9或更高),但几乎占所有缺陷的16%都被认为“极有可能”被恶意攻击者利用。
这意味着在2023年发现的所有漏洞中,仅有不到百分之一(0.7%)是非常重要的,并且具有高度的可利用性。
总的来说,使用Veracode的SAST、DAST以及SCA工具发现,在所有被扫描的应用程序中,有80%的活动应用程序存在未解决的安全漏洞,而在只针对开发阶段的程序进行SAST扫描的情况下,这一比例下降到了73%。
根据Veracode的研究,在第三方开源组件和本地代码中发现的缺陷比例基本相当。实际上,大约有63.4%的应用程序在本地代码中存在缺陷,而在第三方代码中则有70.2%的应用程序存在缺陷。这种情况与人工智能技术的广泛应用有关,因此我们需要对软件供应链的这两个来源进行深入扫描。
另外,通常情况下,一个典型的应用程序中每1MB的代码就会有42个缺陷。其中,跨站脚本、注入、路径遍历以及易受攻击和过时的组件是最常见的缺陷,它们的强度(每个应用程序的平均发现)和数量(应用程序的百分比)都非常高。
02
安全债务堆积如山
软件安全债务,在研究中被定义为持续一年以上未得到修复的缺陷,这种缺陷存在于所有应用程序中,占总数的42%。如果把不足一年的应用程序也考虑进去,这个比例会下降到23%,也就是说,有57%的应用程序存在缺陷,但是它们还没有形成债务。
在考虑关键安全债务(未修复的关键缺陷)时,情况有所不同。研究显示,“绝大多数组织(71%)在某种程度上有安全债务”。此外,“将近一半的公司(46%)存在严重的持续性缺陷,我们将其归类为关键安全债务。”
研究表明,有安全债务的组织中,有四分之一在其在不到17%的应用程序中有安全债务,有四分之一的组织在超过67%的应用程序中有债务。平均来看,约一半的安全缺陷(47%)源于安全债务。
为了解决软件安全债务问题,该研究提出了几项建议,其中包括将安全性融入到软件开发生命周期中,持续进行修复,优先处理重要安全债务,提升开发人员的安全能力,并了解自己语言所涉及的安全债务情况。