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