本周二,软件安全公司Snyk和Linux Foundation公布了一项调查结果,发现那些制定了开源软件安全策略的企业中,10家有7家认为他们的应用开发是高度安全的、或者有一定安全性的。相比之下,那些尚未制定安全策略的企业中,只有45%认为自己是有某种程度的安全性的。
Snyk公司开发者关系总监Matt Jarvis表示,开源软件对应用开发有很大的好处,但企业也必须认识到开源软件的缺点并为此做好准备。
他说:“虽然开源是创新和构建高质量软件的一种经过验证的机制,但取得成功的同时也成为了自身的牺牲品,因为开源软件无处不在导致它成为了供应链攻击的一大目标。企业需要加深对开源工作机制的理解,包括治理和代码,并通过采用开发者优先的安全工具和方法,来加强他们的供应链管理。”
规模较小的企业在开源软件安全策略方面有所落后
总体来看,只有大约一半的企业制定了开源安全策略来指导开发者使用各种组件和框架,而更多的小公司(60%)要么没有相关策略,要么根本不知道自己是否有策略。
报告指出,对于初创公司和小型公司来说,他们从经济性的角度考虑往往会降低制定安全策略的优先级。
报告指出:“小型组织的IT人员和预算很少,业务的功能需求往往优先考虑的,这样业务才能保持竞争力。缺乏资源和时间,是组织没有解决开源软件安全最佳实践的主要原因。”
来源:《Addressing Cybersecurity Challenges in Open Source Software》报告
研究表明,对不同的编程语言也要有不同的安全考量,例如用.NET编写的应用修复缺陷的平均时间最长,为148天,其次是JavaScript的49天。
JavaScript依赖项众多导致的问题
JavaScript应用的依赖项最多,根据Snyk的数据,每个项目平均有174个——大约是依赖项最少的Python语言的7倍,后者平均每个项目有25个。
Jarvis说,虽然大型传递依赖树可能会导致修复漏洞路径迂回,但如果组织有办法跟踪不同项目之间的关系,那么依赖性高并不一定是个劣势。
“与其他生态系统相比,JavaScript包的范围往往更小,因此虽然数量更多,但用于审计潜在缺陷的代码可能更少。最重要的问题是,你要了解你正在使用哪些依赖项,特别是作为依赖项的依赖项引入的传递性依赖项,这就要使用适当的安全工具来对这些项进行扫描。”
然而数据还表明,不同的语言的缺陷程度也有所不同,例如用Java编写的项目平均有超过47个高危漏洞和28个中危漏洞,远高于排名第二的JavaScript,后者平均有18个和21个漏洞,Python平均有20个。
“在数据中,有很多因素在起作用,例如项目的复杂性、开发人员的数量和受欢迎程度,这些都会对漏洞的数量和类型产生影响。那些备受开发者欢迎的项目,可能漏洞就更多一些。”
自动化=安全成熟度
根据调查结果显示,尽管发现依赖项中的漏洞很重要,但大多数安全成熟度比较高的企业(也就是那些制定了开源软件安全策略的企业)主要依赖于行业漏洞咨询(60%)、自动监控包中错误(60%)、来自包维护者的通知(49%) )。
自动化监控可以说是那些安全成熟度高的企业和那些没有策略的企业之间一个最显着的差距,那些没有策略的企业中,只有38%使用某种自动监控,而安全成熟度高的企业这一比例达到了60%。
Jarvis说,如果企业没有制定开源软件安全策略,那么他们现在就应该着手了,可作为加强其开发安全性的一种方式,即使是轻量级的策略也是一个很好的开始。
他说:“制定策略和表达意向之间是存在相关性的,我们认为,制定策略是安全成熟度一个合理的起点,因为这说明,企业组织已经意识到这些潜在问题,并且已经开始着手了。”