《新思科技(Synopsys):2021开源安全和风险分析报告(27页).pdf》由会员分享,可在线阅读,更多相关《新思科技(Synopsys):2021开源安全和风险分析报告(27页).pdf(27页珍藏版)》请在三个皮匠报告上搜索。
1、开源的可持续性在Black.Duck审计服务团队2020年审计的1,500多个代码库中,居然有91%使用了在过去两年中没有发生任何开发活动的开源依赖项,这意味着91%的被审代码库中包含在过去两年中没有进行过功能升级、代码优化和任何安全问题修复的依赖项。开源受欢迎的原因之一是志愿者社区不断更新代码并解决修复漏洞问题。软件开发者兼写作者Eric.Raymond将其称为行之有效的“林纳斯定律”:当许多人一起研究代码时,所有的bug都将浮出水面。普渡大学的一项研究表明,林纳斯定律对此确实行之有效4.通常来说,开源社区发布补丁的速度确实领先于专有软件提供商。但是,没有人能够保证任何开源项目背后的志愿者社
2、区都会无限期地维护代码,也不能保证该社区一直拥有熟悉相关项目代码的成员。Black.Duck审计服务团队2020年审计的代码库中,85%的代码库含有至少四年未曾更新的开源依赖项。也就是说,代码库使用的开源库并非最新版本,甚至经常是很旧的版本。如前所述,开发团队显然难以维护开源依赖项的时新性。回到“前十大漏洞”一节中提到的lodash漏洞,尽管自2019年七月以来已经针对该漏洞的代码库进行了升级,但在2020和2019年的审计中,仍有29%的代码库包含CVE-2019-10744。是否开发人员认为漏洞风险很低,所以可以推迟更新?他们是否认为“只要功能都还正常,为何要修复它呢”?他们是否知道应用程
3、序调用的依赖项是哪个版本?他们可能认为将依赖项更新推迟半年到一年是合理的,但是,对于85%的被审代码库中包含至少四年未曾更新的开源库,我们该怎么做呢?得帕克原则“能力越大、责任越大。”-出处不明,通常认为出自Stan.Lee作为参与变革的一员,感觉如何?正如2021年OSSRA报告所示,如今已经很难找到不依赖于开源强大功能的应用程序了。不仅开源代码的使用越来越普遍,而且参与编写开源代码的开发者也越来越多。Linux基金会赞助的".2020年FOSS贡献者报告”指出,近一半的受访者对开源项目的参与是由其所在单位提供资助的。6.CyRC调查“2020年DevSecOps实践与开源管理”.
4、(DevSecOps. Practices.and.Open.Source.Management.in.2020)显示,从事软件开发业务的大多数组织.(65%)都制定了允许开发人员为开源项目做贡献的政策。如本报告所述,开源的普及也带来了风险的增长,特别是开源安全性、代码质量和可持续性方面的风险。部分原因是开源代码使用增加导致管理动态、变化的风险格局变得更加困难。为应对这一挑战,开发团队需要可靠的、及时的漏洞信息,软件所用开源代码依赖项的完整清单,漏洞严重性和可利用性的准确指导,以及有关如何修补受影响开源代码的明确指导。无心之失还是恶意为之诚然媒体喜欢报道恶意攻击,但无心之失的编码错误所引入的缺
5、陷同样具有破坏性,并且更有可能影响到开源项目。据“2020年Octoverse状态”.(2020.State.of.the. Octoverse)报告显示,2019到2020年间,GitHub发出警报的漏洞中有83%源于编码错误而非恶意为之。7如果大多数攻击都是利用了代码中无心之失引入的漏洞,那么,防范这些漏洞就变得尤为重要。对开发人员进行软件安全培训便是防范措施之一。例如,edX上免费提供OpenSSF课程,许多软件安全公司如Synopsys提供应用安全在线课程。鼓励开发者在代码提交之前使用静态分析等检测工具,这是减少开源代码错误的另外一种方法。静态分析根据一组编码规则检查源代码,从而发现常见的编码错误。Synopsys为在注册项目的开源开发者提供免费的静态分析服务。Coverity.Scan与Synopsys的商用静态分析工具Coverity使用相同引擎,帮助开发者识别代码缺陷,从而快速轻便地进行修复。Linux基金会调查的受访者“一致表示Coverity.Scan和clang.security.Checker”是其主要使用的静态分析工具。8下一页详细介绍了有关Coverity.Scan如何帮助确保NGINX开源代码质量和安全的案例研究。