各种类型的扫描均越来越频繁
图源:Veracode《2022年软件安全状况》报告
Veracode发布新版《软件安全状况》报告。报告指出,相较于十年前,公司加快了应用安全测试的节奏:接受扫描的应用数量增加了两倍,每个应用的扫描次数增加了20倍。
Veracode宣称,重视增加扫描频率、自动化测试与部署,以及进行开发人员教育,这些都是转向DevSecOps文化的标志,有效减少了三分之二的脆弱软件库,节省了三分之一的漏洞修复时间。尽管77%的第三方库在披露三个月后仍然存在已知漏洞,但库中漏洞的半衰期(即修复半数漏洞所需的时间)加快了三倍。
Veracode首席研究官Chris Eng表示,总体而言,开发人员正朝着正确的方向前进,但仍有很长的路要走。
“事情正朝着好的方向发展,表明大家更加重视[尽早发现漏洞]。企业不断纳入不同扫描类型,大幅减少了脆弱软件库的数量——不是减少了一点点,而是缩减了很多。”
Veracode观察公司数据库中各个应用并分析多年来的趋势之后编撰了此版报告。
报告指出,十年前,Veracode客户平均每年进行两到三次扫描,但现在大多数开发人员每天执行静态分析扫描,而动态分析扫描则是每周执行一次。例如,在2010年,只有10%的应用至少每周扫描一次,绝大部分应用甚至一个月都不扫描一次。而到了2021年,情况完全反转,90%的应用每周至少扫描一次。
报告指出:“包括管道安全扫描的持续测试与集成逐渐成为常态,用户扫描其应用的频率就反映出了这一点。在软件生命周期中越早发现问题,就越有可能尽快解决问题,避免小问题演变成大问题。”
表明敏捷开发崛起并对漏洞产生影响的另一个趋势是,开发团队似乎倾向于将单体程序分解为更小的服务集合(微服务架构)。Veracode的数据显示,2021年只有不到5%的应用使用多种框架和编程语言,远少于2018年的20%,表明涉及多种编程语言的大型软件项目变得越来越少。
Eng称:“你觉得应用总是会随着时间推移而变得越来越大——代码越来越臃肿,而且用户不会放弃任何功能。但我们观察到的是应用反而越来越小了,这些单语言应用表明开发人员正逐渐采用微服务架构。”
不同类型的测试往往会发现不同类型的漏洞,但信息泄露除外,这种漏洞太常见了,几乎每种测试技术都能发现。例如,静态分析就经常能找出CRLF(回车换行符)注入、信息泄露和加密问题,而动态分析通常会发现服务器配置、不安全依赖和信息泄露问题。软件组成分析(SCA)最常找到的问题是输入验证不足、信息泄露和封装问题。
每种编程语言都有其独特的漏洞倾向。Java应用往往存在CRLF注入漏洞,而Python程序最常见的缺陷与加密问题有关,C++的主要问题涉及错误处理。
软件组成分析发现的漏洞往往需要较长时间才能修复,这可能是因为修复必须从项目维护人员流向开发人员。Veracode的报告指出,对于动态分析、静态分析和SCA这三种技术所发现的漏洞,修复半数漏洞所需要的时间分别为143天、290天和397天。不过,SCA所发现漏洞的响应时间实际上已经大幅缩短了——2017年时修复半数此类漏洞需花费三年多的时间。
Veracode表示:“既然我们都知道,使用多种工具执行多次扫描可以缩短修复时间和减少安全债务,这种转变只能被视为有利于应用安全的未来。历史的钟摆是否会回到单体应用和瀑布式开发还有待观察,但现在看来似乎不太可能。”
至于开源软件库,Veracode发现,最流行的软件库在过去五年里一直没什么变化。例如,超过97%的Java应用代码来自于开源库。不过,过去五年来,存在缺陷的软件库占比有所下降,Java、JavaScript和Python都见证了脆弱库的大幅减少。
报告指出:“值得警惕的是,开发人员可能会坚持使用经验证的库,而不去尝试重构自己的代码库来引入新潮热门功能。如果代码库没有缺陷,更新就会很慢,而有缺陷的时候更新就相对较快。只要开源软件开发人员持续修复安全漏洞,开发人员就会继续使用这些库。”
Veracode《2022年软件安全状况》报告:
https://www.veracode.com/state-of-software-security-report
声明:本文来自数世咨询,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。