天天看點

每 1000 行代碼有 14 個安全缺陷,開源軟體的安全令人堪憂

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

每 1000 行代碼有 14 個安全缺陷,開源軟體的安全令人堪憂

當今,開源軟體已經成為軟體世界的重要組成部分。根據 Gartner 統計,99% 的組織在其 IT 系統中使用了開源軟體。

今年 3 月,安全公司 WhiteSource 釋出了一份《開源安全年度報告》。報告表明,2019 年,公開披露的開源安全漏洞數量再創新高,總數為 6100 個。與 2018 年相比,開源安全漏洞的數量增長近 50%。這份報告表明,開源軟體的安全問題非常嚴重。

更關鍵的是,開源軟體的安全不僅關系自身,而且影響整個現代軟體開發。“可以說,現代軟體大多數是被‘組裝’出來的,不是被‘開發’出來的”。事實上,現代軟體開發越來越像工業生産和制造,原材料就是開源軟體,加上自己寫的業務代碼,最後“組裝”出一個軟體系統。

在奇安信代碼安全事業部總經理黃永剛看來,開源軟體已經成為建構網絡空間最基礎的“磚頭瓦塊”,無處不在。“開源軟體已經成為資訊系統開發和建設的核心基礎設施,開源軟體安全問題應該上升到基礎設施安全的高度來對待。”他說。

兩個重大發現

  • 發現 1:每 1000 行開源軟體代碼中就有 14 個安全缺陷,每 1400 行開源軟體代碼中就有 1 個高危安全缺陷。
  • 發現 2:開源軟體之間的關聯依賴,導緻開源軟體的漏洞管理非常複雜。

2015 年,奇安信代碼安全事業部發起“開源項目檢測計劃”。目前,該項目已經對 3000 多款開源軟體進行了安全檢測,并幫助許多開源項目修複了代碼安全缺陷,包括 Google、Facebook、騰訊、阿裡等旗下的開源項目。

據悉,通過開源項目檢測計劃,團隊發現開源軟體的安全問題确實非常嚴重。相關資料分析和統計顯示,開源軟體的代碼安全缺陷密度是 14.22/KLOC,高危安全缺陷密度為 0.72/KLOC。換句話說,每 1000 行開源軟體代碼中就有 14 個安全缺陷,每 1400 行開源軟體代碼中就有 1 個高危安全缺陷。

黃永剛說,“另一個發現是,開源軟體之間的關聯依賴,導緻開源軟體的漏洞管理非常複雜。如果不用系統化的工具來做這件事,幾乎不可能完成。”

2019 年,其團隊檢測了 935 個最新的物聯網裝置固件,并針對這些固件中所使用的開源軟體和安全問題進行了分析。經過分析,他們發現:最新出廠的物聯網裝置中,還有 5% 的裝置使用了存在 Heartbleed(心髒出血)漏洞的 OpenSSL 版本,5 年前的超級漏洞,依然存在于最新的物聯網裝置中。

是以,對開源元件的梳理和漏洞分析,一定需要系統化的方法和自動化的工具,才能做到可管理、可持續,不留死角。

而開源軟體最值得關注的安全問題是其放大作用。簡言之,一個開源軟體出現漏洞,會導緻依賴它的其他開源軟體受到影響,而且層層關聯依賴,這就導緻非常隐蔽和複雜的攻擊面。

舉個例子,Log4j 有一個安全漏洞——CVE-2017-5645。由于直接依賴 Log4j 的開源軟體有 4000 多個,那麼這 4000 多個開源軟體也會受到 CVE-2017-5645 漏洞的影響。更恐怖的是,還有 46000 多個間接依賴 Log4j 的開源軟體,它們則是更隐蔽的受害者。

OpenSSL“心髒出血”漏洞

2014 年,開源軟體 OpenSSL Heartbleed(心髒出血)漏洞席卷全球。該漏洞不僅讓整個中國網際網路為之一顫,而且導緻全球超過三分之二的網站“心髒出血”,可謂影響深遠。據悉,這個 bug 非常嚴重,導緻全球網際網路大量私鑰和其他加密資訊處于暴露危險下,受影響嚴重的系統甚至可以從伺服器中直接擷取使用者密碼。

每 1000 行代碼有 14 個安全缺陷,開源軟體的安全令人堪憂

2017 年,美國征信巨頭 Equifax 發生資料洩露,涉及近 1.45 億使用者。事後,該公司不僅被重罰 7 億美元,而且 Equifax CEO 也引咎辭職。據悉,這起資料洩露事件的原因是黑客利用 Struts 開源軟體的漏洞實施攻擊。

無論是 OpenSSL“心髒出血”漏洞,還是 Equifax 資料洩露,都是因為開源軟體出現安全問題。近年來,開源軟體漏洞造成的安全事件越來越多,影響巨大,讓人們開始認識到開源軟體安全的嚴重性。

奇安信代碼安全事業部總經理黃永剛表示,從另一個角度看,行業客戶對安全的思考越來越系統化,很多客戶開始關注資訊系統全生命周期的安全。“安全開始左移,大家開始重視從源頭上做好安全工作。開源軟體是軟體開發的原材料,是我們進行資訊系統開發和建設要把住的第一道安全關口。”他說。

三大原因

在軟體開發上,無論是技術方面,還是流程和管理方面,任何一點疏忽都會導緻開源軟體出現安全問題。

具體說來,奇安信代碼安全事業部總經理黃永剛總結出三方面的原因:

1.開源軟體開發者自身的技術能力和安全開發知識存在問題,導緻開發的代碼中有安全缺陷;

2.大多數開源項目的開發缺少 SDL(安全開發生命周期)的流程和工具。并且,很多開源項目能使用的資源很有限,缺乏專業的代碼安全分析工具,而大部分專業的代碼安全分析工具都是收費的,價格昂貴;

3.攻擊者對開源生态的攻擊,比如向開源庫中注入惡意代碼、向包管理器倉庫投放惡意元件等。

如何提高開源軟體的安全性?黃永剛認為,從技術上,開源項目需要更系統地引入保障應用安全的流程、方法和工具,比如基于 SDL 的流程和理念管理開源項目的開發過程,并對開源項目開發者進行安全開發知識的普及。其次,使用源代碼靜态分析、動态安全測試、互動式安全測試等工具,并對開源項目開發者送出的代碼進行全面的安全測試等。

從非技術角度來說,“我覺得,開源技術社群和安全技術社群可以加強交流和合作,形成互動和回報,互相促進。開發和安全的良性互動,是解決軟體安全問題非常重要的前提。”他說。

五條安全建議

針對軟體開發者和企業,黃永剛建議從引入控制、資産梳理、風險識别、漏洞告警和合理修複五個方面加強開源軟體的安全治理。

1.引入控制。企業應規範開源軟體的引入流程,建立開源軟體安全引入和退出機制。同時,對開源軟體的引入需要加入安全評估因素,不僅需要評估項目團隊引入的開源軟體是否存在公開的漏洞,是否存在開源法律風險,而且企業應進行完整性驗證,開源軟體是否來自官方,避免使用被篡改的開源軟體。

2.資産梳理。無論是軟體開發者,還是企業,它們在軟體開發過程中會引入大量開源軟體。然而,企業的安全管理者和開發管理者常常不清楚自身的資訊系統到底引入多少開源軟體,引入了哪些開源軟體。開源軟體有着層層嵌套的依賴關系,軟體開發者或企業很難通過人工方式進行梳理。是以,建議使用專業的自動化工具識别軟體系統中含有哪些開源軟體以及開源軟體之間的關聯關系,形成企業開源軟體可視化資産清單。

3.風險識别。軟體中使用的開源軟體可能存在已知漏洞,且這些開源軟體背後調用或依賴的其他開源軟體也可能存在已知安全漏洞。在軟體開發過程中,企業應及時發現存在漏洞的開源軟體版本并進行更新。

4.漏洞告警。在軟體運作階段,企業應監控開源軟體漏洞情報資訊,及時發現開源軟體的最新漏洞資訊,并進行應急響應。

5.合理修複。絕大多數的開源軟體是通過版本更新實作漏洞修複的。對于不能通過更新新版本或打更新檔來修複漏洞,企業應引入專業的漏洞研究隊伍,定制漏洞修複方案。

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/zhibo

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-04-08

本文作者:萬佳

本文來自:“

InfoQ

”,了解相關資訊可以關注“