Veracode的2023 年软件安全状况报告发现,在给定月份内,应用程序中引入安全漏洞的可能性为 27%。发现许多因素会影响这种机会,包括扫描频率、扫描方法、开发人员教育程度和应用程序的语言。该报告还发现,与 Java 和 .NET 应用程序相比,JavaScript 应用程序的平均缺陷更少,缺陷解决速度更快。
该报告审查了 Veracode 平台内扫描的所有应用程序。一项重要发现是,编程语言的选择会影响缺陷的类型、数量和解决方案。虽然 JavaScript 应用程序仍然会引入缺陷,但它们往往可以更快地得到解决。这种在应用程序生命周期早期更快的解决方案会随着时间的推移导致改进的解决方案趋势。
平均每五个 Java 和 .NET 应用程序中就有四个至少有一个缺陷,而 JavaScript 应用程序中只有一半以上有一个或多个缺陷。此外,与 JavaScript 应用程序相比,Java 和 .NET 应用程序的严重性问题几乎是其两倍。
还包括在平台内进行的不同扫描发现的主要缺陷类型。静态分析发现的首要问题是回车换行 (CRLF) 注入,占 64.8%,紧随其后的是密码问题 (59.8%) 和信息泄露 (59.3%)。从动态分析扫描来看,服务器配置是发现的首要问题,发现的缺陷中有 96.5% 被标记为配置问题。
分析的项目表明,无论初始规模如何,应用程序每年都以大约 40% 的速度增长。此外,缺陷引入往往会随着应用程序的增长而出现,但也有一些例外。正如报告所指出的:
在应用程序初始启动后,我们看到了快速下降。然后应用程序进入我们所说的“蜜月期”,在最初的几年里,一切都很稳定。相反,接近 80% 的应用程序在生命周期的早期阶段根本没有引入缺陷。
在给定的一个月内,应用程序有 27% 的机会引入和发现一个或多个新缺陷。该报告有许多发现有助于向上或向下调整该数字。通过 API 扫描其应用程序的组织将这种可能性降低了 2%。作者认为通过 API 进行扫描往往是一项更成熟的活动,并且“我们可以假设它还有其他的东西,比如对管道的访问控制”。
让开发人员完成培训计划后,引入新问题的可能性降低了 1.8%。另一方面,安全债务较高的应用程序(以每兆字节代码一个缺陷的缺陷密度来衡量)引入缺陷的可能性要高 2.2%。
该报告提出了许多建议,以帮助更快、更早地推动修复曲线下降。这些建议包括优先考虑自动化、提供开发人员安全培训以及建立应用程序生命周期管理。对于应用程序生命周期管理,主要目标是确保明确谁拥有应用程序、应用程序服务的目的以及何时应将应用程序移至生命周期结束。
关于作者:马特·坎贝尔
Matt 领导 InfoQ 的 DevOps 编辑团队。他是教育技术公司 D2L 的云平台副总裁,负责其基础架构和云平台团队。他的重点领域是 DevOps 和 SRE 以及在企业范围内实施这些。