开源安全的危机在于太相信 GitHub?——专访Apache之父amp;OpenSSF基金会总经理Brain Behlendorf

【CSDN 编者按】Apache 软件基金会与Linux基金会作为全球开源的一面旗帜,创立二十余年已深深影响着全球数十亿开发者。随着开源在全球的渗透率逐年加深,引发巨大影响的开源供应链等安全问题也在向开源从业者发起挑战,本文将跟随Apache 创始人之一、OpenSSF 基金会总经理 Brain Behlendorf 的视角,直面这位开源奠基者对开源生态与安全的深度思考。

作者 | 王启隆 责编 | 何苗

出品 | 《 新程序员 》编辑部

在开源开发者心中, Apache 与Linux 的意义不言而喻。开源能够发展至今,离不开众多非营利开源软件组织的帮助,而它们便是这些组织中的佼佼者。时至今日,早年间由 Brian Behlendorf 带领程序员们重写开源程序 NCSA 之父” 的尊称。

同时,国内开发者耳熟能详的Apache ShardingSphere、Apache SkyWalking、Apache Doris 等也都是 Apache 孵化的顶级开源项目。Apache 的开源文化深深地影响着全球开发者。“Apache Way” 向技术人指明了一条“如何去做开源?怎样做好开源?”的大道。其中“没有在邮件中发生的事就没有发生”这一准则,更是沿袭自 Brian Behlendorf 的一个偶然举措,早年间他为了更好地进行沟通,建立了一个邮件列表,将大家召集在一起,更好地协同工作。

如今的开源已经步入一个全新的阶段,先驱者们已经从拓荒中归来,开始研究更加现实的开源安全问题,“Apache” 创始人之一的 Brian Behlendorf 也加入了OpenSSF 开源安全基金会担任总经理,致力于全球开源生态系统安全方面的建设。

Brain Behlendorf,Apache 创始人之一、OpenSSF 基金会总经理

本期《 新程序员005 》有幸邀请到了这位开源大师展开专访,他不仅向我们分享了许多开源安全领域建设的实践经验和宝贵思考,还吐露了自己最真挚且崇高的开源理想。

以下是 Brian Behlendorf 访谈记录:

“ Apache 之父 ” 的成长之路

《 新程序员 》:据了解,你的父母在科技领域工作,但你大学却并没有主修计算机,那时候的你对什么更感兴趣?后来又是什么引发了你对计算机编程的兴趣?

Brian:1991 年的时候,我高中毕业,就在同一年,Tim Berners-Lee 推出了世界上第一个网络浏览器和网络服务器,但在那时候还没有多少人知道这件事。当我上高中的时候,我的父母在 IBM 工作并相识,得益于此,我们家里有一台个人电脑。但我的父亲是个 COBOL 程序员,而 COBOL 语言对我来说又索然无味,所以当时并没有打算将编写软件作为未来的工作。

在加州大学伯克利分校上大学期间,一开始我主修的是物理,但后来我在大学里建立了自己的第一个电子邮件账户,并接触到了互联网,慢慢地对计算机科学更感兴趣。也是从那时起,我开始经营一些独立的编程项目,也因此得到了一份协助管理 Unix 机器的实验室工作,对计算机编程行业的工作和运营有了一定了解。后来我对电子音乐产生了浓厚的兴趣,所以在 1992 年建立了一个关于电子音乐的网站,并开始在那里建立一个社区,这也导致我最终没有时间完成本科学位。

《新程序员》:那么你第一次听说 Unix 操作系统时,对它有什么看法?

Brian:我对 Unix 的第一印象是——它是命令行驱动的,这一点让我欣喜若狂。对我来说,输入命令行就像和电脑说话,我可以通过命令行给电脑下达非常精确和具体的要求。命令行甚至比图形用户界面更好操作,因为我不需要打开一个个文件夹,然后试着找到正确的按钮或输入方式。从这个角度来看,Unix 的诞生是鼓舞人心的。

现在回想 1991 年到 1993 年左右的时候,当时的互联网氛围乃至社会文化非常鼓励相互帮助。那是个一切都很完美的时代,你会因收到陌生人的邮件感到兴奋,你会去遐想自己在互联网接触的每一个人都是友善且风趣的,你会希望让更多的人能接触到互联网。这种文化甚至早于开源软件诞生之前,但我认为它至今仍在被发扬光大,现在许多开源社区都是富有生产力和创造性的。

《新程序员》:还记得自己写的第一个比较有趣的程序是什么吗?你早期的编程风格是否有延续到如今的工作中?

Brian:大约在八岁的时候,我读过一本关于如何用 BASIC 为 TRS-80 计算机编写程序的书,也曾用这本书编写过一些简单的游戏和程序。至于我写的第一个真正的程序,那得回溯到我上小学四年级的时候。当时我需要每两周为班里安排一次随机座位表,于是我写了一个程序,可以随机分配座位且把结果打印出来。有意思的是,如果我被随机分配坐在不喜欢的人旁边,我就会让它再运行一遍,就可以“随机”坐在班上那些很酷的孩子旁边——所以这个座位表并不是完全“随机”的。老师不了解原理,所以也没能发现我的小动作。

但在那之后,我职业生涯的大部分时间里,都不经常编程了。还记得在建立Apache Web 服务器的早期我编写了不少程序,在 Apache 的第一个赞助网站上线时也写了很多东西。我现在仍然会维护自己的邮件服务器,但我从不以一个伟大的软件开发者自居,我并不伟大。

《新程序员》:1993 年告别校园后,你曾与伙伴们创立了 Organic.Inc,但当时的网络服务器软件无法处理公司需求,因此你尝试了修补开源代码,那是你第一次接触开源吗?你是如何与开源结缘的?

Brian:不,并不是那时候。我第一次接触开源应该是 1991 年第一次到伯克利的时候,我当时开始探索早期的互联网是什么样子,我看到互联网上有很多软件可以下载,可以轻而易举地下载每一个软件并且在自己的电脑上运行。从那时起我就有了一个想法:软件并不应该是让一两个人去编写,并且卖 30 多美元一份的东西;相反,软件应该是成百上千的人把小段代码拼在一起编写,将所有的东西都集中在一起的存在,这可能就是我开源思想的雏形。这段经历发生在 1991年,那是我第一次使用你们如今所认为的“开源软件”,但直到 1998 年,它才被称为开源,开源这个术语是在那之后发明的。

安全的开源开发需要公开的“配料表”

《 新程序员 》:自去年 12 月 Log4j2 曝出“惊天”漏洞以来,引发了全球多个国家政府以及科技巨头纷纷的关注与反思,同时关于开源软件的安全性问题的探讨也变得越来越紧迫。对你来说,开源安全领域过去几年发生了哪些大的变化?

Brian:开源安全是政府和企业需要共同努力的事情。我记得当时他们在 Log4j事件之后发布了相当多的报告,但在一份大约 3 周前发布的报告里表示:是很多不同的情况导致了这场危机,因此希望像 OpenSSF 这样的开源安全基金会越来越多。OpenSSF 被那份政府报告引用了 29 次。在我看来,至少在过去几年里,国家安全委员会不再会在修复漏洞的问题上对我们发表意见,所以基金会能取得如今这样的成果和地位,不仅是非常令人满意的,也是非常令人生畏的。开源安全是摆在我们面前的一项艰巨的任务,社会依赖它来运转,就像依赖桥梁、高速公路、电网或社会的其他部分一样,我们的生活不能没有它。

《新程序员》:2021 年 10 月,Linux 基金会宣布筹集 1000 万美元新投资,以扩展和支持开源安全基金会( OpenSSF ),保护开源供应链。为什么开源供应链如此重要?它在开源的发展中占据什么位置?

Brian:供应链代表着一切,可以说我们所生活的世界就是由供应链组成的,现在我的电脑旁边能有一只鼠标存在,都是因为供应链的存在。而软件自然也不例外,很少有哪个软件是由一个人写成,然后直接把它发送给终端用户的,因为开源软件就是离不开供应链的存在。

正因如此,供应链现在也是被主要攻击的对象。十年前我们肯定想不到,可能会有人在我们的包数据库里偷偷安插了一个坏包,更想不到某个 Java 模块的作者可能会把账户卖给某个黑客,而这个黑客可能会在我们的网站上设置后门……我们的事业是在一个彼此之间高度信任的时代建立起来的,当时我们不必担心这些类型的攻击。现在我们已经意识到了,要帮助开源开发者做出更加安全的决定。

《新程序员》:你认为开源软件的安全性目前面临的最大挑战是什么?

Brian:现在的开发者经常忽视一个问题,那就是平台的选择。比如,当我需要添加一个功能时,一般会在现有库的基础上进行构建,构建的过程中就需要平台的帮助,但我们从来都是默认了一个平台并且依赖它,没有去思考深层的安全性问题。你可以认为这是因为大部分程序员都很“高效”,但其实也是一种“懒惰”。所有人在开发过程中都给予 GitHub 这样的中心组织很大的信任,甚至从未质疑它们。

当然,我希望 GitHub 永远不会被黑客入侵,一旦 GitHub 被入侵了,很多人都会遭殃。到目前为止,GitHub 做得很好,但我们真的应该把所有的信任都交给一个组织吗?

我也不清楚这个问题的答案。我们在 OpenSSF 中有一个名为 Sigstore 的项目,它使用了非常轻量的 Let’s Encrypt 方式来用密钥对研发流程中的制品进行签名,以便将其嵌入到每个人用来进行构建和发布的工具中。这就像我们生活中随处可见的配料表:如果你拿起一瓶番茄酱,那么制造商必须告诉你瓶子里装的是什么,以免有的人过敏。总之,开发者现在还需要更好的软件工具来促进开源安全。

开源开发也需要这样的“配料表”,需要透明公开的协作流程。很多企业通常不知道他们运行的是什么软件,Log4j 也是因此出现了问题。开发者们在部署软件时需要理解目标对象的构建,需要了解整套工作的运行流程。我们要尽量避免那些只有一个开发人员看过的软件、来源不可信的软件或者那些你不能保证构建服务器是否被入侵的软件。

跨越语言障碍,OpenSSF 助推中国开源安全建设

《 新程序员 》:很多问题到了中国可能又会有所不同,从而衍生新的问题。你对中国开源的现状有哪些看法吗?

Brian:开源安全是每个国家都存在的问题。在这一点上,大家的利益其实是一致的,毕竟 Log4j 的漏洞就是由阿里巴巴(阿里云)的研究人员发现的。我们需要一起努力,而这也是我参与本次访谈的原因之一,我真的希望看到中国社区、企业、开发商、甚至政策制定者在这方面真正统一起来。

当然,我也很清楚中国开发者现在面临的一些问题,最主要的肯定是语言的问题。如果你的母语不是英语,可能与中国以外的开发人员合作会是一个挑战,由于不知道如何提出正确的问题而阻碍合作和发展。Linux 正在与 OpenSSF 合作,我们试图创建一个中文子社区,专注于服务和帮助中国开发者采用这些先进技术,同时也让中国开发者帮助我们改进技术,最终在中国开设我先前提到的Sigstore 项目。这些都应该本地化到中国,让中国社区能够更广泛地学习和使用。

《新程序员》:要想降低开源软件的安全风险,安全意识也很重要,OpenSSF 是如何帮助开源使用者有效提升安全意识的?

Brian:我们在 OpenSSF 上发布了相当多的内容,不仅能帮助开发者学习如何使用工具,还能帮助他们编写更安全的代码。事实上,我们已经在培训网站上发布了一门关于 Linux 安全基础培训的课程,现在正在将其翻译成中文,叫做安全软件开发基础课程。课程时长大约有 20 小时,虽然不是很长,但它可以教你如何避免一些问题,比如不要解析不受信任的用户,还有怎么提交正确的输入格式字符串——这个问题曾导致了 Log4j 的 bug 。我们相信,如果有更多的开发人员参加这个课程并进行认证,就能大大降低代码进入软件供应链时产生的风险。

总而言之,我鼓励开发人员前往 OpenSSF 的网站上学习这门课程,特别是在我们将其本地化为中文之后。我们还发布了一份指南,上面介绍了开源项目可以做的一系列事情,以提高安全性。OpenSSF 开放了许多资源来帮助开发人员,这些工作并不只是为了让他们的代码更安全,更重要的是培养一种不同的思维方式和一种不同的做事方式。

《新程序员》:大部分中国开发者都比较务实,他们很关心开源软件的商业化和开放。你对此有什么想法?

Brian:如果每个人都选择把代码卖出去,那么像谷歌、亚马逊甚至百度和腾讯这样的公司都不可能发展壮大。我们确实应该具体思考如何将开源代码商业化,但肯定不是通过出售开源代码本身,而是围绕它做其他事情;比方说,我们可以使用开源代码去构建一个很棒的网站,或者是移动应用程序、移动应用程序的后端还有启动一些引人注目的新服务等等。不要总去想怎么把开源代码卖出去,你应该思考自己如何利用这些开源代码在世界上创造更多的价值,人们自然而然会付钱给你。

《新程序员》:您曾提到过可持续开源的软件理念。中国的开发者该如何从这一理念中获益呢?

Brian:可持续开源理念不一定和软件有关,首先你得认识到,大多数人写开源代码并不是出于慈善,他们选择开源并非出于无私,而是为了免费地编写代码。比方说,如果你是为了建立一个网络服务或是一个支付平台而开展项目,那么在这个过程中每当你修复了一个 bug,或者添加了一个特性,或者写了一些新东西——都是需要付费的。因此,一个运行良好且持久稳定的开源项目是人们进行活动的主要驱动力,我认为这是企业需要考虑的关键问题。

对于中国的开发者,我还想说的是,我们就在这里,我们想让你们更强大,我们也想让你们互相帮助,从而达成全球协作。我认为有许多开发者已经投入了大量精力来解决这个问题。“传播”是一件很重要的事情,人类的发展便起源于传播,我们将会提供工具让所有中国企业——甚至全球行业,共享这项开源事业的结果。

Apache Way 是更安全的协作方式

《 新程序员 》:作为 Apache 软件基金会的创始成员,你对著名的“ Apache Way ”的理解是什么?这种开源的运作方式如何保障开源软件的安全?

Brian:其实 Apache Way 一直没什么确切的定义,它的核心有两点:电子邮件和数字交流。Apache Way 是一种完全包容、开放、透明且基于共识的工作方式,让我们打个比方:如果一个项目、一个事情没有发生在我们公众的邮件列表里,那么你可以先在私下进行它,但是你必须把它带回到公众面前,进行一次群体的交流,然后才能继续项目的推进。Apache Way 的主题是透明、协作,我们要尽量避免出现“一个人负责整个软件”这种情况,因为如果某个项目唯一的负责人哪天离开了项目,就没有任何人知道怎么继续维护了。

正如我前面所说,你要确保在开源项目中,总是有很多人对每一行代码负责,甚至是对整个项目进行负责。这就是 Apache Way,我认为它其实是一种生活准则。我们通过这种方式一起使用简单的工具来协调我们的活动,并且对事物的编写方式有共同的期望,这样我们才能够高效生产,编写出最好的软件,从而在代码中建立公众对我们的信任。

《新程序员》:那关于“Apache Way”还有你们的工作方式,你有哪些趣闻可以分享吗?

Brian:我很喜欢用电子邮件来进行工作交流,我喜欢这种以异步方式在线协作的感觉,电子邮件也包容了我们时间上的差异、文化差异还有语言差异等等。至于趣闻,其实我们的 Apache Web 服务器项目就是一个例子,我们的项目里有一个叫 Alexico 的人,他在服务器项目建立后的3年里,大部分时间都对我们提供了不少实用的帮助。他不仅是帮忙写了一些代码,他还会帮助项目里的其他人写代码,并且协助审查他人的代码,甚至还帮我们回答用户的问题。不得不说,他真的是一个优秀的社区构建者。

但是那时候还不流行视频会议,我们也没有很多面对面的机会,所以我没有见过他本人,所以我唯一知道的就是这位 Alexico 的电子邮件地址。直到有一天,他给 Apache Web 服务器的开发者邮件列表发了一条消息,说:“嗨,伙计们,我有一些消息要告诉你们。我以后可能没法给项目带来那么多贡献,也没法经常上线了;因为我今年秋天就要上大学了。”

他作为一名高中生一直在参与这个开源项目,与所有其他专业软件开发人员进行交流!当时我们项目的所有人,都为他的勤奋、智慧以及纯正的开源精神而震惊不已,而我们后来在许多不同国家的人们之间也看到了这份精神。所以我认为,Apache Way 可以帮助那些英语不是母语的人使用电子邮件进行交流,这比使用视频或电话或其他方式要好得多,因为使用电子邮件能保证信息被更准确地传达。

开源生而自由,全球协作是最终理想

《 新程序员 》:在开源领域,Richard·Stallman(自由软件运动的精神领袖)的自由价值理念是永远绕不开的一大思想。您认为和过去相比,如今的“自由软件”和“开源软件”有什么不同?

Brian:我很尊重 Richard·M·Stallman,我们的社区流行过这么一种说法:如果Richard·M·Stallman不曾存在,我们就必须创造一个Richard·M·Stallman。因为让他代表各种观点是非常有用的。相比之下,社区中的其他人看起来就像温和派。我非常了解共享源代码的实际好处,我认为这个权利是非常重要的,而 Richard·M·Stallman 甚至认为这是一种人权。我相信我们已经能够让行业的很多人转向开源软件事业。要知道,当今世界的手机、汽车或网站上所使用的 90% 软件都是开源软件。

当然,我并没有从道德或人权的角度来强调软件应该是开源的。正是因为团队协作的开源项目能够更有效地构建更好的软件,所以我才认为自由软件和敏捷开发可以与开源软件共存,我并不认为它们是对立的或不一致的。开源软件运动所讨论的一直都是“我们该如何帮助开发者?”“我们该如何帮助企业编写更好的代码?”“我们要如何避免回到以前 Mac 和 PC 的平台战争当中?”其实我认为关于这些问题的争论早已结束了,开源在很大程度上获得了胜利。既然我们赢了,接下来就该思考要如何用开源发展出自己想要的社会和未来。我的理想便是全球协作。

《新程序员》:最后,你有哪些话想送给中国开发者?你如何评估开源在全球和中国的发展前景?

Brian:我是个理想主义者。我想要的未来是,我们能够在共同的项目上进行全球合作,我们能在未来找到一种不受语言、时区、政治等障碍影响的方法并共同协作,但我很担心这是否能够实现。实际上,我认为现今没有足够的人写开源代码来满足市场的需求。我希望未来就像 Apache 的早期一样,所有人可以一起工作,彼此不关心出身、年龄或背景。这就是我想要的开源代码未来。我也希望政府能更多地认识到,开源软件在建设我们想要的社会中发挥的关键作用,开源将会建设一个非常数字化的社会。所有企业(当然主要是大型企业)和个人,都需要认识并投资开源代码,认识到开源代码会给社会带来哪些积极的结果。这些都是我的希望,我担心的是我们根本无法接近这个目标,我担心我们会朝着相反的方向前进,但我无法预测我们在未来是否会走向更乐观的方向,所以我所能做的就是谈论目前乐观的方向。

☞ 中国联通与腾讯共同设立新公司;苹果被曝已冻结招聘,直至2023年9月;Apache Flink 1.16发布|极客百科

☞ 元宇宙与AI热度不减,Gartner 2023 年十大战略技术趋势完整解析

☞ 吴峰光杀进 Linux 内核