開源軟件漏洞的發現周期超過四年
近日,GitHub在其年度Octoverse狀態報告中指出,開源軟件安全漏洞在被披露之前的發現周期超過四年。
報告分析了超過45,000個活動代碼目錄,以深入了解開源安全性(漏洞)以及開發人員在漏洞報告、警報和補救方面的做法。
其他發現
通過分析依賴關系圖收集的長達一年的數據后,報告發現GitHub上的大多數項目至少具有一個開源依賴項。
對于使用JavaScript(94%)、Ruby(90%)和NET(90%)的用戶來說百分比最高。JavaScript和Rudy項目的中位數直接依賴項數量最多(分別為10和9),而JavaScript的中位數可傳遞依賴項數量最多(即它們的直接依賴項本身具有其他依賴項)。
另一個有趣的發現是,大多數開源軟件漏洞是由錯誤而不是惡意攻擊引起的。
“對來自六個生態系統的521個隨機樣本進行的分析發現,有17%的代碼提交與后門嘗試之類的明顯惡意行為有關。在這17%的統計中,絕大多數來自npm生態系統。”
他們解釋說,后門最明顯的跡象是攻擊者通常是通過賬戶劫持來獲取對程序包源代碼存儲庫的訪問權限,而針對這些嘗試的最后一道防線是在開發管道中進行仔細的同行評審,尤其是來自新提交者的更改。
“許多成熟的項目都進行了認真的同行評審。攻擊者已經意識到了這一點,因此他們經常試圖在發行時間節點通過版本控制之外的手段來實施破壞,例如通過對軟件包名稱進行篡改來欺騙人們下載惡意代碼版本。”
GitHub指出,人為失誤產生的漏洞也能具有類似惡意攻擊的破壞性,而且更有可能影響受歡迎的項目。
開源安全的最佳實踐
“使用開源軟件時,安全始終是關注的重點。我們的分析表明,發現的潛在漏洞與所編寫代碼的行數成正比。”報告指出:“開源的力量和希望來自社區。通過與數百萬開發人員的聯手,不僅可以開發軟件包而且可以識別和修復漏洞,我們可以更快、更安全地開發軟件。”
報告強調,開源安全的關鍵是利用自動警報和補丁工具。“我們自己的分析發現,自動生成pull request更新補丁版本的存儲庫,平均修復時間為33天,這比沒有自動更新的存儲庫要快13天或1.4倍。”
【本文是51CTO專欄作者“安全牛”的原創文章,轉載請通過安全牛(微信公眾號id:gooann-sectv)獲取授權】