
作者:Stephen Magill,Sonatype产品创新副总裁
今年的第八届年度 软件供应链状况报告 由Sonatype公司发布的报告发现,开源需求大规模增长,增长率为30-35%,而新组件的供应则增长了33%。该报告还发现,针对软件供应链的攻击在频率和复杂性上都有所提高--自去年以来,软件供应链攻击增加了633%。而挑战不仅仅是恶意攻击,研究显示,96%的开源Java下载是已知漏洞的组件,即使有更安全的版本可用。这表明,开放源码的消费者在选择组件版本时,要么不跟踪漏洞,要么不优先考虑漏洞。
识别易受影响的项目
一个可以帮助控制漏洞的杠杆是选择那些不太可能在其中发现漏洞的项目。为了了解这是否可行,Sonatype使用机器学习来评估 OpenSSF安全记分卡 检查和漏洞信息。由于OpenSSF公布了进入其Scorecard Score的各个检查,Sonatype能够测试仅基于这些软件开发最佳实践的模型能够正确识别具有已知漏洞的项目。该模型能够以78%的准确率成功地将项目标记为有无漏洞,这表明Scorecard检查提供了一个非常有用的漏洞信号。

Sonatype的研究人员还能够确定安全记分卡中的哪些实践是最重要的,如图2.2所示。毫不奇怪,代码审查成为了最重要的因素。长期以来,代码审查被认为是一种能够大幅提高代码质量的高影响力的做法。将二进制文件检查到版本库是与脆弱性相关的第二重要因素。二进制文件提供了一个攻击途径,降低了透明度,并减少了代码的可审计性。钉住依赖关系是第三重要的因素,暗示了依赖关系管理在维护安全软件方面的重要性。分支保护是第四个最重要的因素,它使代码修改有一个正式的批准过程,并与代码审查很好地配合。
依赖性管理
采用OpenSSF在其安全评分中规定的做法的项目,包括采用确保快速更新易受攻击的依赖关系的依赖关系更新工具,将提高其项目的安全性和依赖其的开源项目的安全性。依赖性管理至关重要,因为Sonatype的研究显示,影响项目的每7个漏洞中,大约有6个来自于横向依赖。
为了说明依赖性管理的重要性,Sonatype将平均更新时间(一种衡量依赖性管理卫生的方法)纳入模型。研究小组随后使用该模型为每个项目生成一个分数。这个分数从1(最低)到10(最高)不等,已作为Sonatype安全评级发布,并公布在 OSS指数 和 Maven中心.在测试中,该评级在识别易受攻击的项目方面是86%,现在Sonatype正在征求社区的反馈意见,以利用现实世界的数据进一步改进该指标。
报告建议
Sonatype建议,由于大多数漏洞都是由反式依赖引起的,所以要仔细考虑你使用的每一个库。倾向于那些依赖树较小的库。寻找那些在其依赖的新版本发布后能快速更新的项目(低MTTU)。尽量减少依赖关系的总数和保持你自己项目的依赖关系的低更新时间是两个关键的因素,以减少交叉性漏洞的风险。
这一建议不仅适用于开源组件的消费者,也适用于开源维护者。采用 "开放源码 "所规定的做法的项目 OpenSSF在其安全评分中包括采用确保快速更新脆弱的依赖关系的依赖关系更新工具,将提高他们项目的安全性和依赖他们的开源项目的安全性。
阅读全文 软件供应链状况报告》在此。