尽管大多数人没有意识到这一点,但我们每天所依赖的许多技术都是在自由和开源软件(FOSS)上运行的。手机、汽车、飞机,甚至许多尖端人工智能程序都在使用开源软件,如Linux内核操作系统、Apache和Nginx 网页服务器(运行着世界60%以上的网站)和Kubernetes(支持云计算)。这些软件包的可持续性、稳定性和安全性是使用它们的每一家企业(实质上就是每一家企业)主要关注的问题。但与传统的闭源软件(由公司内部开发和销售)不同,FOSS是由一大群默默无闻、通常不计报酬的开发人员开发,通常也是免费赠送的。
在过去几年中,我们观察到,企业在开源软件中扮演了更加积极的角色,他们要么指派员工参与现有的开源项目的贡献,要么公开自己的代码,既让社区对其利用,又让社区帮助对其维护。随着企业将FOSS作为其商业模式的一部分,他们还收购了重要的FOSS生产商。两年前,IBM以340亿美元收购了Red Hat这家围绕FOSS建立的最成功公司之一。在那之前一年,其他科技巨头花费了数十亿美元收购FOSS股份,其中最著名的是微软(以75亿美元收购了GitHub)和Salesforce.com(以65亿美元收购了MuleSoft)。
企业界进入免费开源在线社区引起了一些严重的关注和摩擦。收购FOSS生产商可能会导致自愿贡献者被排挤出去,在一定程度上威胁到FOSS生态系统未来的健康。此外,世界上最大的云提供商在FOSS组件的基础上建立了数十亿美元的业务,这让FOSS贡献者们不禁要问,为何要把自己的空闲时间花来让富人更富?这些行动可能会让志愿者停止贡献,从而威胁到FOSS社区的基本理念。
一个特别有争议的案例是Elastic和亚马逊之间的冲突。Elastic是一家上市公司,其Elasticsearch软件支持沃尔玛、奥迪等众多企业网站的搜索活动。在亚马逊这家在线巨头采用了Elastic已经开放源代码的某一Elasticsearch版本、重新包装并以几乎相同的名称出售给客户后,Elasticsearch与亚马逊较上了劲。Elastic认为,从本质上讲,亚马逊采用的是为整个社区创造价值的免费代码,然后筑起屏障,以便他们是唯一能够从中获取价值的人。
在Linux基金会的支持下,协同跨行业的开源安全基金会(Open Source Security Foundation),我们已经开展了两项互补性的研究工作——一项研究的重点是进行FOSS使用的普查,另一项的重点是了解FOSS贡献者的动机——旨在寻求更好地了解这些关注点。对于第一项研究,我们与包括Snyk和Synopsys在内的软件成分分析和应用程序安全公司合作,通过对这种关键软件进行普查来确定使用最广泛的FOSS包,从而广泛了解FOSS在生产应用程序中的使用情况。对于第二项研究,我们对FOSS开发者社区进行了一次大规模的全球调查,询问开发者为何对特定的FOSS项目做出贡献,他们如何看待来自企业的重大财务投资,以及他们利用的是何种安全措施(Foss中相当重要的一个问题)。以下是我们的发现。
关于调查结果
关于企业越来越多地参与FOSS一事,最大问题是,这是否会对FOSS生态系统的未来健康无恙产生负面影响。开发我们所依赖之软件的开发人员是否会停止参与一个较少由社区意识所驱动、更多由利润追求所驱动的系统?企业是否会只关注可盈利的FOSS,而忽视社会所依赖的其他关键基础设施?维护这个软件的安全性难度是否更大?如果有关FOSS的更多工作是由单独的公司完成,那么寻找漏洞和潜在缺陷的人是否会更少?如果以上任何一个问题的答案是肯定的,这对开源软件的未来来说不是一个好兆头。
我们普查的初步结果揭示了两个令人担忧的趋势,它们可能使FOSS更容易出现安全漏洞。首先,我们发现许多商业软件中使用最广泛的FOSS包都是置于个人开发者(而不是更广泛的社区)账户之下,这不仅带来了安全问题,也带来了可靠性问题。一个人可能会接受一份新工作,可能会决定退休,或者——但愿不会这样——被俗话说的公共汽车撞到而无法维持项目。个人账户还可能不具备足够的安全保护措施来防止黑客的潜在危险攻击。其次,我们发现,许多企业正在使用过时的开源程序版本——这一发现即使不一定令人讶异,但也会令人担忧。不能保持更新意味着该软件更有可能包含已知的漏洞和安全缺陷。这两种趋势都反映出,安全通常是事后才想到的问题。
调查结果还显示,贡献者的动机可能要求企业使用非传统激励措施。虽然越来越多的贡献者得到了企业的赞助,但这些贡献者的主要动机不是钱。这意味着企业激励行为的传统杠杆可能不起作用,需要依赖的可能是更多的内在动机,包括学习热情、对FOSS社区的归属感以及程序员的职业身份。因此,任何希望提高FOSS安全性的企业、组织或政府都需要将关注的焦点放到吸引这些内在动机上,而不仅仅是付钱让贡献者解决安全问题。或者,企业可以花钱雇人来专门处理安全问题。不管怎样,我们的调查显示,期望贡献者自愿解决安全问题不太可能获得成功。
企业如何才能提供帮助
没有人(我们当然也不会)建议我们必须回到FOSS初期的日子,那时它主要是志趣相投的个人自愿做出的努力。但我们的确建议企业和政府这样的大玩家——它们开始越来越多地直接或间接赞助FOSS ——了解它们对FOSS生态系统未来的影响,并遵循几条指导原则。
首先,企业和国家的目标都应该是取得适当的平衡:确保FOSS在不扼杀社区精神的情况下继续发展,而社区精神一直是贡献的核心动机。这意味着,企业针对开源应该有一个明确的政策(如果可行的话,最好是鼓励员工为FOSS做贡献的政策)。我们的研究发现,许多员工对自己公司的FOSS政策并没有清晰的了解,这使得他们在公开使用FOSS项目并为其做出贡献时犹豫不决。此外,他们可以主动支持这些项目,以确保他们未来的健康。
其次,使用FOSS的企业(实质上是所有企业,不管他们知道与否)应该提高他们对所使用的FOSS的认识水平。最近的一项总统行政命令要求,对于政府采购的任何产品都必须提供一份软件材料清单(software bill of materials, SBOM),以便政府了解产品中包含哪些FOSS(以及专有软件),因而可以了解可能出现的漏洞。这是所有企业都应该考虑效法的一个重要例子。这样做可以让企业更好地了解他们对FOSS社区的依赖,而且会产生更大的透明度,使他们能够知道自己何时容易受到新发现的漏洞的破坏。
第三,随着企业继续参与对FOSS的贡献,我们建议他们心系所用软件的稳定性,激励他们的员工在贡献时重点关注对公司有用的功能以及总体的安全和维护,并认识到这些项目背后的志愿者社区至关重要,应该受到保护。通过这种方式,他们不仅会从自己正在添加的新功能中获益,而且确保了他们所依赖的FOSS未来的健康。
自由和开源软件是经济中一个至关重要的齿轮,就像州际公路、电网或通信网络一样。考虑到我们对这些关键基础设施系统的了解程度,对21世纪等同于它们的东西做同样多的了解,这难道不是很有意义吗?由于FOSS生态系统涉及的利益相关者众多,任何一个行动者都难以解决所有问题。因此,可能有必要让包括企业、政府组织和个人贡献者在内的多方共同努力,确保FOSS生态系统在未来的安全和活力。然而,首先必须做的是了解问题的范围。我们相信,我们的努力是朝着这一方向迈出的第一步。