?企業(yè)擁抱開源前,一定要明白這幾條原則
盡管大多數(shù)人沒有意識到這一點,但我們每天所依賴的許多技術(shù)都是在自由和開源軟件(FOSS)上運行的。手機、汽車、飛機,甚至許多尖端人工智能程序都在使用開源軟件,如Linux內(nèi)核操作系統(tǒng)、Apache和Nginx 網(wǎng)頁服務(wù)器(運行著世界60%以上的網(wǎng)站)和Kubernetes(支持云計算)。這些軟件包的可持續(xù)性、穩(wěn)定性和安全性是使用它們的每一家企業(yè)(實質(zhì)上就是每一家企業(yè))主要關(guān)注的問題。但與傳統(tǒng)的閉源軟件(由公司內(nèi)部開發(fā)和銷售)不同,F(xiàn)OSS是由一大群默默無聞、通常不計報酬的開發(fā)人員開發(fā),通常也是免費贈送的。
在過去幾年中,我們觀察到,企業(yè)在開源軟件中扮演了更加積極的角色,他們要么指派員工參與現(xiàn)有的開源項目的貢獻,要么公開自己的代碼,既讓社區(qū)對其利用,又讓社區(qū)幫助對其維護。隨著企業(yè)將FOSS作為其商業(yè)模式的一部分,他們還收購了重要的FOSS生產(chǎn)商。兩年前,IBM以340億美元收購了Red Hat這家圍繞FOSS建立的最成功公司之一。在那之前一年,其他科技巨頭花費了數(shù)十億美元收購FOSS股份,其中最著名的是微軟(以75億美元收購了GitHub)和Salesforce.com(以65億美元收購了MuleSoft)。
企業(yè)界進入免費開源在線社區(qū)引起了一些嚴重的關(guān)注和摩擦。收購FOSS生產(chǎn)商可能會導(dǎo)致自愿貢獻者被排擠出去,在一定程度上威脅到FOSS生態(tài)系統(tǒng)未來的健康。此外,世界上最大的云提供商在FOSS組件的基礎(chǔ)上建立了數(shù)十億美元的業(yè)務(wù),這讓FOSS貢獻者們不禁要問,為何要把自己的空閑時間花來讓富人更富?這些行動可能會讓志愿者停止貢獻,從而威脅到FOSS社區(qū)的基本理念。
一個特別有爭議的案例是Elastic和亞馬遜之間的沖突。Elastic是一家上市公司,其Elasticsearch軟件支持沃爾瑪、奧迪等眾多企業(yè)網(wǎng)站的搜索活動。在亞馬遜這家在線巨頭采用了Elastic已經(jīng)開放源代碼的某一Elasticsearch版本、重新包裝并以幾乎相同的名稱出售給客戶后,Elasticsearch與亞馬遜較上了勁。Elastic認為,從本質(zhì)上講,亞馬遜采用的是為整個社區(qū)創(chuàng)造價值的免費代碼,然后筑起屏障,以便他們是唯一能夠從中獲取價值的人。
在Linux基金會的支持下,協(xié)同跨行業(yè)的開源安全基金會(Open Source Security Foundation),我們已經(jīng)開展了兩項互補性的研究工作——一項研究的重點是進行FOSS使用的普查,另一項的重點是了解FOSS貢獻者的動機——旨在尋求更好地了解這些關(guān)注點。對于第一項研究,我們與包括Snyk和Synopsys在內(nèi)的軟件成分分析和應(yīng)用程序安全公司合作,通過對這種關(guān)鍵軟件進行普查來確定使用最廣泛的FOSS包,從而廣泛了解FOSS在生產(chǎn)應(yīng)用程序中的使用情況。對于第二項研究,我們對FOSS開發(fā)者社區(qū)進行了一次大規(guī)模的全球調(diào)查,詢問開發(fā)者為何對特定的FOSS項目做出貢獻,他們?nèi)绾慰创齺碜云髽I(yè)的重大財務(wù)投資,以及他們利用的是何種安全措施(Foss中相當重要的一個問題)。以下是我們的發(fā)現(xiàn)。
關(guān)于調(diào)查結(jié)果
關(guān)于企業(yè)越來越多地參與FOSS一事,最大問題是,這是否會對FOSS生態(tài)系統(tǒng)的未來健康無恙產(chǎn)生負面影響。開發(fā)我們所依賴之軟件的開發(fā)人員是否會停止參與一個較少由社區(qū)意識所驅(qū)動、更多由利潤追求所驅(qū)動的系統(tǒng)?企業(yè)是否會只關(guān)注可盈利的FOSS,而忽視社會所依賴的其他關(guān)鍵基礎(chǔ)設(shè)施?維護這個軟件的安全性難度是否更大?如果有關(guān)FOSS的更多工作是由單獨的公司完成,那么尋找漏洞和潛在缺陷的人是否會更少?如果以上任何一個問題的答案是肯定的,這對開源軟件的未來來說不是一個好兆頭。
我們普查的初步結(jié)果揭示了兩個令人擔憂的趨勢,它們可能使FOSS更容易出現(xiàn)安全漏洞。首先,我們發(fā)現(xiàn)許多商業(yè)軟件中使用最廣泛的FOSS包都是置于個人開發(fā)者(而不是更廣泛的社區(qū))賬戶之下,這不僅帶來了安全問題,也帶來了可靠性問題。一個人可能會接受一份新工作,可能會決定退休,或者——但愿不會這樣——被俗話說的公共汽車撞到而無法維持項目。個人賬戶還可能不具備足夠的安全保護措施來防止黑客的潛在危險攻擊。其次,我們發(fā)現(xiàn),許多企業(yè)正在使用過時的開源程序版本——這一發(fā)現(xiàn)即使不一定令人訝異,但也會令人擔憂。不能保持更新意味著該軟件更有可能包含已知的漏洞和安全缺陷。這兩種趨勢都反映出,安全通常是事后才想到的問題。
調(diào)查結(jié)果還顯示,貢獻者的動機可能要求企業(yè)使用非傳統(tǒng)激勵措施。雖然越來越多的貢獻者得到了企業(yè)的贊助,但這些貢獻者的主要動機不是錢。這意味著企業(yè)激勵行為的傳統(tǒng)杠桿可能不起作用,需要依賴的可能是更多的內(nèi)在動機,包括學(xué)習(xí)熱情、對FOSS社區(qū)的歸屬感以及程序員的職業(yè)身份。因此,任何希望提高FOSS安全性的企業(yè)、組織或政府都需要將關(guān)注的焦點放到吸引這些內(nèi)在動機上,而不僅僅是付錢讓貢獻者解決安全問題?;蛘?,企業(yè)可以花錢雇人來專門處理安全問題。不管怎樣,我們的調(diào)查顯示,期望貢獻者自愿解決安全問題不太可能獲得成功。
企業(yè)如何才能提供幫助
沒有人(我們當然也不會)建議我們必須回到FOSS初期的日子,那時它主要是志趣相投的個人自愿做出的努力。但我們的確建議企業(yè)和政府這樣的大玩家——它們開始越來越多地直接或間接贊助FOSS ——了解它們對FOSS生態(tài)系統(tǒng)未來的影響,并遵循幾條指導(dǎo)原則。
首先,企業(yè)和國家的目標都應(yīng)該是取得適當?shù)钠胶?/strong>:確保FOSS在不扼殺社區(qū)精神的情況下繼續(xù)發(fā)展,而社區(qū)精神一直是貢獻的核心動機。這意味著,企業(yè)針對開源應(yīng)該有一個明確的政策(如果可行的話,最好是鼓勵員工為FOSS做貢獻的政策)。我們的研究發(fā)現(xiàn),許多員工對自己公司的FOSS政策并沒有清晰的了解,這使得他們在公開使用FOSS項目并為其做出貢獻時猶豫不決。此外,他們可以主動支持這些項目,以確保他們未來的健康。
其次,使用FOSS的企業(yè)(實質(zhì)上是所有企業(yè),不管他們知道與否)應(yīng)該提高他們對所使用的FOSS的認識水平。最近的一項總統(tǒng)行政命令要求,對于政府采購的任何產(chǎn)品都必須提供一份軟件材料清單(software bill of materials, SBOM),以便政府了解產(chǎn)品中包含哪些FOSS(以及專有軟件),因而可以了解可能出現(xiàn)的漏洞。這是所有企業(yè)都應(yīng)該考慮效法的一個重要例子。這樣做可以讓企業(yè)更好地了解他們對FOSS社區(qū)的依賴,而且會產(chǎn)生更大的透明度,使他們能夠知道自己何時容易受到新發(fā)現(xiàn)的漏洞的破壞。
第三,隨著企業(yè)繼續(xù)參與對FOSS的貢獻,我們建議他們心系所用軟件的穩(wěn)定性,激勵他們的員工在貢獻時重點關(guān)注對公司有用的功能以及總體的安全和維護,并認識到這些項目背后的志愿者社區(qū)至關(guān)重要,應(yīng)該受到保護。通過這種方式,他們不僅會從自己正在添加的新功能中獲益,而且確保了他們所依賴的FOSS未來的健康。
自由和開源軟件是經(jīng)濟中一個至關(guān)重要的齒輪,就像州際公路、電網(wǎng)或通信網(wǎng)絡(luò)一樣??紤]到我們對這些關(guān)鍵基礎(chǔ)設(shè)施系統(tǒng)的了解程度,對21世紀等同于它們的東西做同樣多的了解,這難道不是很有意義嗎?由于FOSS生態(tài)系統(tǒng)涉及的利益相關(guān)者眾多,任何一個行動者都難以解決所有問題。因此,可能有必要讓包括企業(yè)、政府組織和個人貢獻者在內(nèi)的多方共同努力,確保FOSS生態(tài)系統(tǒng)在未來的安全和活力。然而,首先必須做的是了解問題的范圍。我們相信,我們的努力是朝著這一方向邁出的第一步。
希拉·利夫希茨-阿薩夫(Hila Lifshitz-Assaf)弗蘭克·內(nèi)格爾(Frank Nagle)| 文