開源真的香,風險知多少?
過去幾年,開源界一片火熱,開源軟件技術已全面進軍操作系統、云原生、人工智能、大數據、半導體、物聯網等行業領域。
數據顯示,我國超九成企業在使用或正計劃使用開源技術。
與此同時,全球各大開源組織相繼興起,頭部科技企業均投入大量人力進行開源生態建設。
然而,隨著開源軟件的發展,其數量和影響力在不斷的上升,開源風險也隨之而來。
不恰當地使用開源軟件,可能會給企業造成負面輿論甚至經濟損失的風險。
2021年12月,抖音海外版TikTok上線了一款名為TikTok Live Studio的APP,但不久其下載頁面就被刪除。
TikTok官方對此事做出回應,原因是該APP違反GPL許可證,使用了GPL許可證下的開源軟件源碼,卻沒有按照GPL許可證要求開源。
近年來,類似抖音因違規使用開源軟件而引發開源合規風險的案例屢有發生。
但開源軟件的風險并不止于此,看似免費使用的開源代碼之下,暗藏著多重風險。
1.開源軟件的風險
一般來說,開源軟件的風險可能來自四個方面:
- 安全風險
其中又分為開源軟件本身的安全漏洞導致的風險,和目前關注度很高的軟件供應鏈攻擊的風險。
根據Sonatype 2021年的報告,29%的流行項目包含了已知的第三方庫安全漏洞,也就是說接近1/3的軟件項目都包含了已知安全漏洞,足以可見安全漏洞的普遍性。
而軟件供應鏈方面的安全問題,是比較難以發現的。
例如Log4Shell與Spring4Shell是2021-2022年影響非常廣泛的兩個安全漏洞。
這類安全漏洞的特點在于,通過對供應鏈上游軟件進行攻擊,進而可以影響大量下游使用的軟件。
在這種情況下,開源軟件來源的安全把控非常重要,但目前開源軟件供應鏈面臨的最大挑戰,就是企業自己都不知道用了哪些開源軟件,大公司已經開始關注到開源合規治理的內容,但是很多小公司還沒有這個意識。
- 法律風險?
其中又分為許可證協議和專利方面的風險。
常見的許可證主要有GPL、LGPL、AGPL、MPL、MIT、BSD、Apache,各個許可證還包含不同版本。根據使用條件不同,可以將這些許可證大致分為兩類:Copyleft 許可證和寬松許可證(permissive license),主要對使用、修改和分發的場景作出相應約束。
由于目前很多的開源項目里面嵌套著其他開源項目,那么可能存在內部許可證上的沖突。對于代碼組件的分析,以及對組件背后相應許可證是否沖突,需要專業的分析。
如果未按照開源許可證的規定,履行開源合規義務,可能會造成侵權而遭到索賠、訴訟、產品下架、商譽受損等風險。
在專利方面,一種是本身的創建者/貢獻者實現的專利,有可能預埋專利陷阱,另一種是第三方專利維權風險。此外,還有商標侵權及出口管制方面的風險。
- 運維風險
如果企業自己沒有能力支撐,或沒有商業公司幫忙的話,開源項目的維護成本也很高。
- 斷供風險
俄烏事件后,GitHub不允許俄羅斯開發人員下載代碼,甚至把俄羅斯賬號的代碼提交刪掉,這一“斷供”事件為全球開發者敲響了警鐘。
此外,2022年1月,Faker.js 的作者主動惡意破壞自己的項目后“刪庫跑路”,甚至還注入了導致程序死循環的惡意代碼,引起眾多應用程序崩潰,瞬間引發了開源圈“震動”。
2.直面開源軟件的風險
面對開源軟件的種種風險,企業和開發者應如何安全合規地使用開源技術,合理“避坑”呢?
事實上,無論是開源還是閉源,本質上都是軟件,都會存在安全漏洞,不能因為害怕風險而拒絕使用開源軟件。
因此,業內專家提出了一些應對開源安全風險問題的辦法,從多個角度來提升開源軟件的安全性。
首先,?針對整個開源軟件供應鏈安全加大關注,去尋找供應鏈中相對來說比較薄弱的風險點,并在這個風險點上加大投入。
中國信通院云大所開源和軟件安全部副主任郭雪認為,在企業側有三個重要的關鍵動作:
- 建立相應的開源安全管理的流程機制;
- 勇于盤點軟件資產,建立SBOM軟件物料清單,對所有的組件一目了然。
- 建立預警機制、維護團隊和維護機制。例如,長期追蹤開源軟件最近是否有更新和版本發布,并檢查目前使用的版本是否有安全漏洞等。安全漏洞發生后的第一時間,及時去打相應的補丁等。?
其次,在使用開源軟件時,需要謹慎選擇開源軟件,關注其開源許可證的內容及相關條件,避免潛在的法律風險。?
對此,企業應當建立一個完善機制,識別企業中所使用的開源軟件清單,明確對應的開源許可證及權利約束,及時規避相關合規風險。
同時,通過隔離機制避免開源許可證傳染。
例如,對于MPL許可證下代碼的使用,應把該許可證的代碼放在單獨的文件內避免許可證傳染;LGPL下的代碼,可采用動態鏈接調用該許可證的庫實現隔離。
目前,國內很多大中型公司已經成立了專門的開源治理辦公室,以應對開源合規問題。
據上海安勢信息技術有限公司資深解決方案架構師朱賢曼介紹,在實際業務中,對商業應用比較友好的是Apache,法務風險相對較低,而AGPL、SSPL一般很多公司會直接禁用。
企業在對外發布開源項目時,如果希望商業化之后保留一個商業版本、一個社區版本,可能會選擇類似GPL的許可,一方面可以收集到用戶意見,也就是開源的反饋意見,用于改進商業版,同時也不希望被直接白嫖。
此外,國家層面也在慢慢重視開源合規,出臺了開源技術相關的法律法規。
例如,2021年,中國人民銀行、中央網信辦等五部門聯合發布了《關于規范金融業開源技術應用與發展的意見》,對金融機構安全可控、合規使用開源技術進行了指導和規范。
其中,《意見》明確提出:推動金融機構建立健全評估體系;支持金融機構對開源技術版權、專利、商標、聲明等進行事前合規審查,梳理開源技術間依賴性等,避免法律糾紛;支持金融機構制定應急處置預案;支持金融機構加強開源技術供應鏈管理,通過合同或協議條款,明確開源技術提供商義務和責任等。
第三,如果企業自己沒有支持開源軟件的能力,建議選擇有商業背景的公司,可以購買公司提供的服務。?
企業可以與其簽訂法律合同,提出SLA或問題修復時效相關的承諾,這些開源軟件背后的公司扮演了一個讓供應鏈更牢固的角色。
最后,斷供事件不可避免,中國企業還需未雨綢繆。?
開源本身不限制地域,但是承載開源這件事情的通常是一個商業實體,商業實體會受到所在地區的出口管制法,或者其他制裁條例的限制。
目前,幾乎所有著名的開源軟件團體都位于美國,且有的許可證規定了管轄法院為美國法院,且適用法律為美國法。
這些事實無不在提醒我們,開源軟件受到美國出口管制的影響。
從這個角度來看,企業內部可以建內部代碼庫,所依賴的東西可以將其放在內部代碼庫上,萬一有一天訪問不了國外的開源托管平臺,也有備份的源碼池可以獲得這些代碼。
從更長遠的角度看,開源世界是彼此相互依賴的,在一個生態當中,誰在生態位的高端,誰就具備抵御相互依賴的打擊能力。
目前,在開源代碼的貢獻率上,中國已經位居全球第二。
中國科技公司成為美國開源代碼托管平臺的重要客戶,中國的GitHub用戶已居全球第二,僅次于美國。
中國作為最大的開源技術受惠者之一,并正在成為最大的反哺者之一,因話語權的不斷擴大也將降低開源斷供的風險。
同時,國家層面也在主導建設自己的開源社區和開源平臺,開展“開源生態培育”專項行動,統籌推進建設高水平基金會,打造優秀開源項目,建設我國自己的開源生態體系。
3.結語
開源風險從來不是一個簡單的問題,對于開源軟件的風險管理,其實是一個軟件生態式的管理,涉及軟件開發使用過程中的各種角色。
無論是哪一方,都需要盡快提升開源安全合規意識,并遵循國際上的開源風險治理最佳實踐,盡量將開源風險扼殺在源頭。