當前,開源組件已成為軟件應用程序中不可或缺的一部分。然而,隨着開源軟件數量的快速增長,應用領域的不斷擴大,隨之而來的安全問題也變得愈發嚴峻。
現如今,使用開源代碼進行軟件的研發已成為主流。這不僅可以提高開發效率,還將為企業節約大量的時間和人力成本。
開源一詞最早出現於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%的代碼庫中,包含過去兩年中沒有任何開發活動的組建。
"開源組件從本質上來説是我們的生產工具,”楊國樑表示,“生產工具決定生產力,而生產工具又依賴於它背後的組織來維護。當這些組織出了問題,不能再對這些工具提供維護時,生產力就要大打折扣,這意味着沒有人會去解決潛在的漏洞。 ”
最後楊國樑還特別指出,開源軟件在發佈上市之後,需要持續對其進行監控,出現問題將重新進行治理。
寫在最後:
毫不誇張地説,開源軟件已經滲透到人們生活的方方面面。但與此同時,我們也看到,開源組件帶來的安全風險也在不斷增加。
不過,可以預見的是,憑藉着多年在軟件安全和質量解決方案方面的經驗積累,新思科技將幫助越來越多的企業持續提升管理開源風險的能力。