開源讓軟件更加安全了嗎?
近日,軟件和芯片設計公司Synopsys發布《2020年開源安全和風險分析報告》,指出不安全的開源軟件已無處不在。一方面,99%的審計代碼庫中至少包含一個開源組件,另一方面,經過審核的代碼庫中有75%包含具有已知安全漏洞的開源組件,老化和廢棄的開源組件也無處不在。
3月,安全和許可證合規性管理解決方案提供商WhiteSource同樣發布了一份《2019年開源組件安全漏洞現狀報告》。統計顯示,2019年公開的開源軟件漏洞數量激增至6000多個,增幅達近50%,原因包含開源軟件應用的擴大。
兩份報告指向同個現象——開源軟件的應用已非常廣泛,開源和“我們必須只使用專有代碼”的想法間的戰爭已經結束了,取而代之的是對開源軟件是否安全的討論。
關注和應用的增加帶來更多安全問題
WhiteSource 在報告中說明,開源軟件漏洞數量的上升可以歸因於開放源組件的廣泛採用,過去幾年開源社區的大量增長,以及媒體對最近一些數據洩露事件的報導,(使得人們)對開放源代碼安全的關注提高。
正如Synopsys公司的報告中所提到的,開源組件和庫是每個行業每個應用程序的基礎。
Synopsys 公司的開源安全工具和審計團隊——黑鴨審計針對17個行業的1253個代碼庫進行審計,具體包括企業服務/SaaS,保健,生命科學,金融服務,物聯網,電信,計算機硬件等行業,其中99%包含開源組件,有9個行業的審計代碼庫中100%包含開源組件。此外,Synopsys 在2015年審計中發現,開源代碼佔比為36%,這一比例到2019年幾乎翻了一番,達到70%。具體數量上,2019年每個代碼庫平均有445個開源組件,較2018年的298個顯著增加。
“開源(之前)一直被視為愛好者和修補者的領域,但它現在已經是現代經濟的組成部分,是智能手機、汽車、物聯網和許多關鍵基礎設施等日常技術的基本組成部分”, Linux基金會和哈佛大學年初也發布了一份開源軟件安全性審查結果,其聯合主任弗蘭克·納格爾表示開源應用已非常廣泛。
同時,開源社區的力量也正在壯大。曾經極力反對開源的微軟,2019年已成為GitHub上開源貢獻最多的企業,緊隨其後的還有Google、Red Hat、IBM、Intel等科技巨頭。國內企業阿里的開源貢獻排名第12,百度和騰訊分列第21、23位。
隨應用一起擴大的還有風險。Synopsys的報告顯示,49%的已審計代碼庫中包含高風險漏洞。
早在2006年的LinuxWorld 大會上,Linux 內核維護人Alan Cox 就強調,有相當數量的資金被用來攻擊開放源代碼系統,許多開放源代碼項目遠談不上安全,“許多分析只關注知名度很高的項目,只有部分項目的’高質量’是名副其實的。”
但開源軟件安全引起廣泛而激烈的討論是由於2014年的一個安全漏洞。當時網景公司旗下開源密碼庫OpenSSL 中的Heartbleed 安全漏洞被發現。這個漏洞影響了近20%,即50萬的Web 服務器,中國也有超過3萬台主機受到影響。據搜索引擎商Shodan 報告,該漏洞截至2019年底,引起了91000多起脆弱性事件。
Heartbleed 甚至直接導致Linux 基金會啟動了一項“核心基礎設施計劃”(CII),以支持開源軟件項目安全性。而且CII 在過去6年中,已為開源安全籌集了數百萬美元。
另外,2017年,Apache Sturts 的一個漏洞被發現。Struts 是一種開源的MVC 框架,用於創建基於Java 的Web 應用。Apache Struts 團隊很快打了補丁,並關閉了該問題。但5月,有人利用該漏洞開始攻擊徵信企業Equifax,兩個月後才被發現。期間,Equifax 有20.9萬名客戶的信用卡號被訪問,數據洩露,最終涉及到1.45億用戶。事後,Equifax 被重罰7億美元,時任CEO 引咎辭職。
這兩個漏洞被Synopsys 的報告稱為是“臭名昭著”的,因此他們也專門做了追踪,而在這次的審計中,兩個漏洞都未出現,“儘管我們取得了成果,但心臟出血(Heartbleed)依舊是個全球問題……自2015年以來,經審計的代碼庫中發現漏洞的平均年齡略低於4.5年,存在超過10年的漏洞佔比為19%,審計中發現的最古老的漏洞已經存在22年,為CVE-1999- 0061。”
該報告還顯示,91%的代碼庫中包含已經過時超過4年或者過去2年內都沒有開發跡象的開源組件。除了增加安全風險外,在版本控制中落後太遠的危險是——更新到最新版本的簡單行為會帶來不必要的功能更改,例如關鍵功能的消失。在過去兩年中,有88個代碼庫的組件沒有開發活動,面臨更高的漏洞風險。
開源依舊被認為可提高軟件安全性
不過,對於Heartbleed事件以及開源軟件漏洞,有開發者認為,閉源軟件如Windows系統及其IIS服務中,漏洞較之開源軟件更多。有時,這些漏洞也更嚴重。開源並不會導致更多風險。
1月,美國國家安全局公佈了一個Windows 10 的漏洞,該漏洞使全球約10億多台PC 易受攻擊。這一漏洞被叫做“永恆之黑”,有人稱其為微軟又一“史詩級”漏洞。早在2017年4月14日,可以利用Windows 系統的SMB 漏洞獲取系統最高權限的“永恆之藍”網絡攻擊工具被發布,5月12日,不法分子通過改造“永恆之藍”製作了Wannacry 勒索病毒,英國、俄羅斯、整個歐洲以及中國國內多個高校校內網、大型企業內網和政府機構專網被勒索,需支付高額贖金才能解密恢復文件。
上個月,Kenna Security發布了《Prioritization to Prediction: Volume 5: In Search of Assets at Risk》報告,分析Microsoft、Linux和Mac資產的風險狀況。報告顯示,微軟資產的70%至少具有一個高風險漏洞,其餘未修補的3600萬個漏洞要高於Max、Linux和Unix資產的總和。微軟還擁有最高的封閉式高風險漏洞百分比,為83%,Linux中這一比例僅有40%。不過報告也指出,Microsoft可以更快地修復漏洞。
在一些場景中,開源依舊被認為是保障安全的有效方式。開源“聖經”《大教堂與集市》中也提到開源可以保障安全的原因:開源社區最強大的一個強項是非中心化的同行評審,所有致力於細節不被疏漏的傳統方法,都無法和它相比。
近期,特朗普稱一些外國電力設備可能會利用美國大功率電力系統的漏洞進行攻擊,因此他簽署了一項電力設備禁令。對此,美國的一項開放源代碼電力系統計劃公司LF Energy的CEO表示,電力設備風險並不完全是硬件的問題,應該更加關注的是攻擊面和風險點的所在,比如嵌入系統的固件問題。因此,應該開源設備中的硬件和軟件,甚至直接對整個堆棧進行開源:“在未來,無論是民族國家還是大型能源公司,惡意攻擊者都可以訪問和攻擊OEM的黑盒,而想要檢驗電網唯一的方法就是使用開源,在一個開放的社區中,具有開放的治理和完全的透明度。 ”
美國軍方國防高級研究計劃局年初推出“開放可編程安全5G”(OPS-5G)新計劃。計劃承諾創建支持安全5G以及後續移動網絡(比如6G)的開源軟件和系統。原因在於,開源軟件在安全方面的一大優勢就是提高了代碼可見性,這意味著可以檢查、分析和審核代碼,這項工作可以手動進行,也可藉助自動化工作進行。此外,開源的可移植性有助於硬件生態系統和軟件生態系統相脫離,大大提高了供應鏈攻擊的難度。
有觀點認為,開源軟件更方便使用者檢查有無後門,這對一些國家級的大型項目來說,可保證高度可控。此外,軟件可信性僅和分發途徑有關,軟件本身的質量與軟件廠商關係更大,而開源開發在很多情形下,因為有“同行評審”,所以更加安全。
多份報告建議公司重視管理開源軟件
開源軟件安全問題多被認為是源於管理上的疏漏。多項研究在討論開源軟件安全問題的時候,都反复提到這一點。
“隨著開源軟件越來越受歡迎,識別和減輕已知的漏洞,是開放源碼管理的一個關鍵因素”,Synopsys 在報告中表示。此外,Gartner 分析師Dale Gardner 在分析軟件組成現狀時說,“成熟的組織正在擴大開放源碼管理,以包括根據給定軟件包的來源和支持,對軟件整體’健康’的評估。”
在Synopsys發布《2020年開源安全和風險分析報告》和奇安信代碼安全事業部發起“開源項目檢測計劃”,Linux基金會聯合哈佛大學2月發布的《開源軟件供應鏈安全報告》,以及《提高開源軟件信任與安全報告》中,均總結了一些開源軟件出現安全問題的原因。撇去一些存在於所有軟件中的通病,如開發人員的技術能力和安全知識問題等,大致可以歸為以下幾點:
- 開源軟件使用者更新不及時。許多組織在使用任何給定的開源組建的最新版本放上面落後得驚人。開源社區對軟件的更新更快,但是大量使用開源組件的公司沒有應用他們需要的補丁,使得業務面臨被攻擊風險。
- 開源項目缺乏管理工具。大多數開源項目的開發缺少SDL(安全開發生命週期)的流程和工具;許多開源項目關注少,資源有限;開源軟件之間的關聯依賴,導致開源軟件的漏洞管理非常複雜;如果漏洞污染的是基本對象的原型,可能會影響應用程序中所有對象的行為。
- 攻擊者對開源生態的攻擊,比如向開源庫中註入惡意代碼、向包管理器倉庫投放惡意組件等。如2019年8月,開源的系統管理工具Webmin 被爆存在高風險遠程命令執行漏洞,據Webmin開發人員透露,該漏洞不是編碼錯誤的後果,而是“惡意代碼注入受損的基礎架構中”導致的。
- 開源項目分發不合規。如公共註冊中心或開源軟件市場沒有對進入的開源項目進行代碼審核,導致安全問題增多。
許多問題都指向公司對開源軟件缺乏正確的管理。而這些報告也同樣給出了一些防患開源軟件漏洞的措施。
- 盤點自己的開源項目,做資產梳理。Synopsys 的報告中建議使用軟件物料清單BOM,為開源組件提供充分的可見性。也有建議公司可引入控制,建立開源軟件安全引入和退出機制。
- 有效識別漏洞並警告。Synopsys公司認為,只有小部分開源漏洞會被利用,在開源組建的生命週期內,需要設置漏洞修補優先級。同樣,奇安信代碼安全事業部總經理黃永剛建議,企業應及時發現存在漏洞的開源軟件版本並進行升級。在軟件運行階段,企業需監控開源軟件漏洞情報信息,及時響應。
- 組建專業團隊。包括成立安全小組,監測外部威脅和脆弱性披露的變化;組織開發和法律團隊;創建管理開源活動的策略等等。
開源開發往往被認為是“常發布”(Release often)以及“更少漏洞”的,但近期的幾份報告將目光放到更廣泛的開源應用中去,得出相反的結論——使用者往往不能及時更新軟件,這可能造成安全風險。
關於開源比閉源安全還是更危險,一直以來都會引起激烈的討論,你覺得開源能讓軟件中的漏洞得到更快修補,更好地保障軟件安全嗎?