> 文档中心 > 不再重蹈 Apache Log4j的覆辙,谷歌提出三项安全倡议

不再重蹈 Apache Log4j的覆辙,谷歌提出三项安全倡议

自过去的几年中,最令开发者和科技公司开心的事就是许多项目都在陆续开源,而最令他们心烦的是许多开源的项目都或大或小的出现了漏洞。因此开源项目的安全问题成为了一个令人关注的话题。

在近几年开源项目出现漏洞的事件中,影响力较大,破坏力较强的无疑就是在2021年发生的Apache Log4j出现漏洞事件,这次漏洞涉及全球近一半的企业,因其触发简单、攻击难度低、影响人群广泛等特点,被许多媒体形容为“核弹级”漏洞。在国内专注于软件开发安全的奇安信代码卫士的《2021中国软件供应链安全分析报告》也指出,现如今国内的软件项目中有80%-90%的代码都是来自开源项目。这也就意味着如果这些开源项目出现问题,将对全国绝大部分的软件项目造成影响。

 图片来源奇安信《2021中国软件供应链安全分析报告》

在全球大部分企业都在忙于修复该漏洞时,美国国家安全顾问Jake Sullivan安排了一次美国白宫会议。该次会议要求被邀请的公司,包括亚马逊、苹果、谷歌、IBM、微软和甲骨文,大家就如何提高开源项目的安全性分享一下自己的想法。

Google提出三项安全倡议

2022年的1月13日,在本次会议上,谷歌提出了三项加强国家网络安全的倡议。谷歌的首席法务官沃克在一篇博文中表示,开源软件与其他关键的基础设施一样,需要获得更多的关注。长期以来,开源软件由于是完全公开透明的,所以一直被许多使用者的眼睛盯着,并且在这个过程中发现和解决其中出现的问题。但是事实上,虽然有些开源项目确实有许多人在关注,但还有部分项目根本没有足够的人在保护它的安全。就比如仅仅只有三个人维护的Log4j。

在被问到谷歌为了解决这些问题中的一部分所做的努力时,沃克概述了谷歌在13日会议上提到的几种可能方法。

  1. 建立一个确定的重要开源项目清单
  2. 简历安全、维护、来源以及测试的基础标准
  3. 建立一个维护者市场,为有需要的开源项目匹配志愿者

即使这些想法并不新颖,但确实是值得称赞的。谷歌的软件工程师已经在考虑为开源软件定义“关键性”,就比如那些开软项目使用者更多,涉及的项目更广,那么它产生错误所影响的范围也就更大。事实上,已经有软件可以为其他软件生成临界点数了。点数越大的开软软件,所受到来自安全方面的重视度就会越高。

至于基础标准,有消息称开源安全基金会已经在做这个了,而且他们还有像谷歌开发的软件工程供应链级别的框架支持。所以这项工作也正在进行中。

沃克还描述了一个将开源项目与公司雇用的志愿者联系起来的组织,听起来像是开源可持续发展社区,只不过不像GitHub有赞助商或Patreon有具体货币那样。

开源安全需要集体的力量

GitHub的首席安全官Mike Hanley对这个问题也发表了自己看法。他在一篇博文中表示。首先,一定要有一个行业和社区联合起来的集体来确保软件供应链的安全。其次,需要让开源维护者得到更好地支持,使他们能更容易保护自己的项目。

网络安全公司Luta Security的创始人Katie Moussouris,在一次电话采访中表示,谷歌作为她所说的仅有的1%的维护开源安全的公司,它自愿在自己的产品安全和软件生态系统安全方面做出了很多相关工作。如果美国政府真的在乎开源代码的安全,那么就要更加认真并且脚踏实地的为开源社区提供支持,而不是向现在这样,让谷歌、微软、和其他今天被邀请到白宫的精英或大型服务提供商,让少数人或公司来进行对开源项目的维护工作。

开源社区更应该加强对某些只有少数开发人员的项目的帮助,而这其中的关键就是要确定那些项目更重要。因为一开始某些开源项目只是个人喜好,它后续的发展我们很难预测,就比如Linus的Linux项目一样。谁都没有想到,Linux能走到今天这一步。这些由几个人维护的项目往往不被重视,直到出现了漏洞,人们才意识到它可能只有几个维护者。Apache Log4j就是一个很好的例子。如果要解决这个问题,就不能只依靠这些少数的安全巨头公司来做慈善。

怎么让开源维护者获得经济上的支持

当Moussouris被问及对开源项目的大用户,施加财政支持义务的软件许可是否会有帮助时。Moussouris并不确定这是让开源项目能持续下去并提升安全性的理想方法。但她支持将开源项目的大用户赚到的钱,流通到那些为开源做出贡献的人的手里。当然如何把钱交给开源维护者这件事很复杂,通常我们不能确定这些钱该支付给谁或是怎么支付到他手里。更不可能直接开张支票给一个项目的某个维护者,这根本就不现实,所以对开源维护者的经济支持还要另想办法完善。

在谷歌的建议中有一个没有提到的问题,在修复漏洞的过程中修复人员需要一些特定的安全技能,Moussouris指出,开源维护者对Log4j出现的漏洞缺少根本原因的分析,导致后来出现的多个漏洞分支,完全绕过了最初对该漏洞的修复。Log4j的开发者并不了解已经被发现的漏洞范围。这个根源问题无法通过投入更多的开发人员来解决。

总的来说,无论是谷歌的三项建议,还是后来的Mioussouris对此事的谈论,都表明了维护开源项目的安全性。这是一个需要所有人一起进行的工作,要将它完善成为一个完整的体系。而不是仅仅让项目维护者,或者是少数的安全巨头企业做这件事。开源的安全真的可以说是非常重要,因为如果开源项目出现漏洞了,影响的不是单独的一家企业,而是许多家企业。

参考链接:Google says open source software should be more secure • The Register