不均衡的维护实践和开发人员愿意下载高风险代码,使得开源存储库成为攻击者青睐的一种初始访问策略。
软件供应链管理公司Sonatype在其年度软件供应链状况报告中表示:从不同的角度来看,数据表明,仅在一年内,我们看到的供应链攻击事件就是前几年累积数量的两倍,这个增长速度非常惊人,这表明,供应链是攻击者执行恶意代码增长最快的媒介之一。此外,我们还看到,利用这些载体的民族国家行为者有所增加。
然而,一个企业对软件供应链的担忧不应止步于过去12个月检测到的245032个恶意包,而应包括数百万个已知存在安全漏洞的包。根据Sonatype的数据,在过去的一年里,每8次开源组件下载中就有一次存在已知的安全风险。
需要针对恶意开源程序包采取更多措施
许多开源语言的包库都是社区维护的,这意味着恶意包的报告和删除是在自愿的基础上进行的,而不是经常自动检测的结果。在防止现有开发人员帐户被劫持并用于推送恶意组件方面有所改进-例如引入了强制多因素身份验证——但这并不能阻止从新帐户上传流氓程序包的攻击。
Sonatype的研究人员表示:“通常,包含恶意代码的包与具有新安全漏洞的包的处理方式非常相似--它们完全基于志愿者的努力,在漏洞删除过程之后进行删除,这是不合适的,因为代码从一开始就被设计为恶意的。”这种方法可能会导致恶意程序包的运行时间超过必要的时间,从而使开发人员面临风险。
与前几年相比,研究人员注意到,更多专业犯罪团伙甚至网络间谍企业采用了这种供应链攻击策略。最近的一个例子发生在8月份,当时朝鲜政府资助的黑客企业之一拉撒路集团(Lazarus Group)将恶意程序包VMConnect上传到了Python组件的公共注册机构PyPI。该程序包伪装成合法的VMware模块,并在安装到系统上时下载额外的恶意有效负载。
开发人员继续下载有风险的开放源码包
减轻恶意包和易受攻击的包带来的威胁的任务也应该落在包的消费者身上,而不仅仅是存储库管理器。不幸的是,数据显示,用户继续以高速率下载高风险的包。
根据Sonatype从其软件供应链管理工具以及该公司运行的Java组件Maven存储库收集的数据,2022年和2023年分别有12%和10%的组件下载是针对存在已知漏洞的版本。其中超过三分之一存在严重漏洞,另有30%存在严重缺陷。更令人担忧的是,96%的这些易受攻击的下载本可以避免,因为使用的组件已经更新了没有漏洞的版本。
Sonatype的研究人员表示:“严重易受攻击的组件使用量的增加可能是因为这些漏洞主要是在更流行、更广泛采用的开源软件中发现和报告的。”人气会吸引更多好演员和坏演员的注意,导致出现关键问题的可能性增加。同样值得注意的是,这些更受欢迎的组件有一个官方的披露流程来进行沟通。这意味着,平均而言,这些关键漏洞应该是最受关注的。但是,正如我们在易受攻击的Log4j版本中所看到的那样,“知道”只是一半的打击。企业必须关心,他们必须有一种自动化的方法来解决这个问题。
开源维护质量参差不齐,正在下降
组件开发人员也必须尽自己的一份力,尽快响应报告和修补程序缺陷,而这一过程的质量在整个生态系统中差异很大。事实上,Sonatype已经看到越来越多的项目不再由创建者维护。
2020年,开放源代码安全基金会(OpenSSF)发布了一个新的项目评分系统,称为Scorecard,基于它们对安全最佳实践的采用。根据数据,根据提交和问题跟踪活动,Java和JavaScript生态系统中超过24000个被列为2021年维护的项目不再符合2022年维护的条件。
另一个被跟踪的重要度量称为“代码评审”,指的是在将请求提交到项目之前对其进行评审的实践。根据Sonatype的说法,这是与良好的安全结果最相关的做法,但并未被广泛采用。事实上,在过去的一年里,使用代码审查的项目数量总体上减少了15%,如果只计算符合维护条件的项目,则减少了8%。
Sonatype的研究人员说:“去年18.6%的项目停止维护的事实突出表明,不仅需要选择良好的依赖项,还需要监控这些依赖项的质量变化。”代码审查率总体较低,即使在考虑刚刚维护的项目时也是如此,这为开源开发实践提供了一个明显的改进领域--特别是考虑到代码审查在预测安全状态方面的重要性。
“根据我们的发现,希望将开源漏洞风险降至最低的企业应该选择维护良好的项目,执行代码审查并对其进行监控,以确保它们没有达到生命周期的终点。”研究人员总结道。