當前,開源元件已成為軟體應用程式中不可或缺的一部分。然而,隨著開源軟體數量的快速增長,應用領域的不斷擴大,隨之而來的安全問題也變得愈發嚴峻。
現如今,使用開原始碼進行軟體的研發已成為主流。這不僅可以提高開發效率,還將為企業節約大量的時間和人力成本。
開源一詞最早出現於1998年,但是開源軟體的產生卻可以追溯到20世紀80年代的自由軟體運動。1984年,自由軟體之父美國國家工程院院士Richard Stallman建立起作業系統 GNU,標誌著基於“自由軟體”思想的作業系統落成,同時也揭開了開源運動的序幕。幾年後,Linus的創始人Linus Benedict Torvalds在自由軟體運動所提倡的“自由分享”的思想影響下,基於 GNU GPL框架釋出了Linux。至此,開源軟體開始走向正軌。
近年來,隨著雲計算、人工智慧、大資料等新興技術的快速發展,越來越多的企業開始在開源的基礎上開發和構建軟體,從作業系統、瀏覽器、到企業管理工具、遊戲……各種型別的開源軟體如雨後春筍般湧現出來。
根據新思科技近日釋出的《2020年開源安全和風險分析報告》(OSSRA)顯示,2019年,新思科技審計了1253個商業程式碼庫,有99%的程式碼庫都使用到了開源的元件,其中開源在所有程式碼中的平均佔比為70%。可見,開源對於現代的商業程式碼的滲透率是非常之高。
然而,凡事都有利有弊,開源也不例外。雖然使用開源元件讓軟體開發效率得到極大提升。但與此同時,隨著開原始碼使用的越來越多,風險面也在擴大。報告指出,開源元件面臨的風險主要包括法務、安全和運維三個方面:
1、法務:使用開源元件,許可證合規是前提
目前,多數企業在使用開源元件的過程之中,存在一個認識誤區,那就是開源元件可以隨意使用,且不存在所謂的法律風險。
但實際上,開源元件本質上與其他擁有智慧財產權類的軟體產品一樣,受法律條款保護。使用開源元件,可被視為已同意接受該開源元件附隨的許可協議,遵守許可協議中規定的條件或限制。反之,如果不遵守開源元件許可協議,則構成對開源元件著作權的侵犯。
新思科技軟體質量與安全部門高階安全架構師楊國樑指出,現在,絕大多數開源許可證的法律的官司,都是發生在歐美的高科技製造業之間,因此出海的國內高科技企業需要特別注意開源許可證合規性。
新思科技軟體質量與安全部門高階安全架構師楊國樑
據瞭解,如今,已有上百萬個開源元件對應在2600多種許可證的體系之下,其中有20多種許可證的元件使用最為頻繁,這涵蓋了98%的開源元件。 而根據開源元件許可證法務條款的寬鬆度,還可將許可證分為強互惠型、弱互惠型、寬容性三種類別。
既然有了更為簡單的分類法,是不是就意味著可以幫助企業進行更好地開源治理,降低開源風險呢?
“其實,這是遠遠不夠的,企業還要將開源許可協議與使用場景和使用方式結合起來,才能確定使用的開源元件是否存在風險。”楊國樑說道。
同時,他還強調說:“出於某種原因,企業可能會使用到未知元件,這類元件並沒有將自己宣告在某一種許可證體系之下,這就像一顆定時炸彈,你只能聽到倒計時,但是,卻不知道什麼時候會爆炸。因為原則上來說,元件的作者可以將它宣告為任何一種許可證體系,或者直接宣告為不允許使用。在2020 OSSRA報告中發現,有33%的被審計程式碼庫中存在未給出任何明確授權或者使用條款的開原始碼。”
可以說,保證合規使用開源,不僅要考慮到產品的使用場景、使用方式,還需要檢視法律條款,以瞭解能做什麼,不能做什麼。這對於開發人員來說是非常複雜的。
據楊國樑介紹,新思科技的Black Duck工具解決了這一問題。該軟體可以高效地確認出使用者使用到的元件,並將法律條款羅列出來,能夠更清楚地給使用者提示哪些事情是可以做的,哪些是不能做的。
2、安全:開源元件存在漏洞
隨著開源元件的廣泛採用,暴露於安全漏洞的風險也在持續增加。2020 OSSRA報告指出,2018年到2019年期間,含高危漏洞程式碼庫從40%漲到49%,含漏洞程式碼庫從60%漲到了75%。
“情況正變得越來越糟,”楊國樑說道,“安全問題說白了就是時間的遊戲,從開源元件中出現BUG開始,到NVD釋出漏洞資訊,與此同時POC/EXP流出,這時駭客發起攻擊,然後在攻擊的某個過程中被發現,又過了一段時間漏洞被修復,整個過程都是一個安全的高風險期。”
然而,NVD只是一個漏洞聚合的平臺,可能要比漏洞源頭出現的時間晚20多天,也就是說要加上這20多天才是整個高安全風險期。因此,及時發現安全漏洞,已成為亟待解決的問題。
楊國樑介紹說:“BDSA是Black Duck工具增強版的漏洞庫。首先,在時效性上,平均比NVD能夠早29天披露多種的資訊,在漏洞源頭出現的4小時之內就能將問題錄入到使用者的系統中,併發出提醒;其次,在準確度上,CVE-2018某個漏洞剛釋出時,受到影響的版本從2.3到2.3.34,2.5到2.5.16,其實,描述的版本是不全的,而BDSA識別出了額外23個受影響的版本;在優先順序上,對於安全團隊來說,他們不是發現不了問題,有可能是發現的問題太多,不知道優先處理哪一個,BDSA會給出一個更加準確的優先順序的排序的資訊。此外,在修復建議上,BDSA會給出如何修復、修復到哪個版本,以及哪個版本完全沒有漏洞等建議。如果無法修復,將給出規避方案。 ”
3、運維:老舊元件缺乏維護
事實上,除了法務和安全風險之外,運維風險也是使用開源元件過程中不可忽視的問題。根據2020 OSSRA報告統計,82%的程式碼庫中,包含已經過期4年以上的元件,88%的程式碼庫中,包含過去兩年中沒有任何開發活動的組建。
"開源元件從本質上來說是我們的生產工具,”楊國樑表示,“生產工具決定生產力,而生產工具又依賴於它背後的組織來維護。當這些組織出了問題,不能再對這些工具提供維護時,生產力就要大打折扣,這意味著沒有人會去解決潛在的漏洞。 ”
最後楊國樑還特別指出,開源軟體在釋出上市之後,需要持續對其進行監控,出現問題將重新進行治理。
寫在最後:
毫不誇張地說,開源軟體已經滲透到人們生活的方方面面。但與此同時,我們也看到,開源元件帶來的安全風險也在不斷增加。
不過,可以預見的是,憑藉著多年在軟體安全和質量解決方案方面的經驗積累,新思科技將幫助越來越多的企業持續提升管理開源風險的能力。