為什么開(kāi)源軟件供應(yīng)鏈攻擊在一年內(nèi)增加了兩倍
不均衡的維護(hù)實(shí)踐和開(kāi)發(fā)人員愿意下載高風(fēng)險(xiǎn)代碼,使得開(kāi)源存儲(chǔ)庫(kù)成為攻擊者青睞的一種初始訪問(wèn)策略。
軟件供應(yīng)鏈管理公司Sonatype在其年度軟件供應(yīng)鏈狀況報(bào)告中表示:從不同的角度來(lái)看,數(shù)據(jù)表明,僅在一年內(nèi),我們看到的供應(yīng)鏈攻擊事件就是前幾年累積數(shù)量的兩倍,這個(gè)增長(zhǎng)速度非常驚人,這表明,供應(yīng)鏈?zhǔn)枪粽邎?zhí)行惡意代碼增長(zhǎng)最快的媒介之一。此外,我們還看到,利用這些載體的民族國(guó)家行為者有所增加。
然而,一個(gè)企業(yè)對(duì)軟件供應(yīng)鏈的擔(dān)憂不應(yīng)止步于過(guò)去12個(gè)月檢測(cè)到的245032個(gè)惡意包,而應(yīng)包括數(shù)百萬(wàn)個(gè)已知存在安全漏洞的包。根據(jù)Sonatype的數(shù)據(jù),在過(guò)去的一年里,每8次開(kāi)源組件下載中就有一次存在已知的安全風(fēng)險(xiǎn)。
需要針對(duì)惡意開(kāi)源程序包采取更多措施
許多開(kāi)源語(yǔ)言的包庫(kù)都是社區(qū)維護(hù)的,這意味著惡意包的報(bào)告和刪除是在自愿的基礎(chǔ)上進(jìn)行的,而不是經(jīng)常自動(dòng)檢測(cè)的結(jié)果。在防止現(xiàn)有開(kāi)發(fā)人員帳戶被劫持并用于推送惡意組件方面有所改進(jìn)-例如引入了強(qiáng)制多因素身份驗(yàn)證——但這并不能阻止從新帳戶上傳流氓程序包的攻擊。
Sonatype的研究人員表示:“通常,包含惡意代碼的包與具有新安全漏洞的包的處理方式非常相似--它們完全基于志愿者的努力,在漏洞刪除過(guò)程之后進(jìn)行刪除,這是不合適的,因?yàn)榇a從一開(kāi)始就被設(shè)計(jì)為惡意的。”這種方法可能會(huì)導(dǎo)致惡意程序包的運(yùn)行時(shí)間超過(guò)必要的時(shí)間,從而使開(kāi)發(fā)人員面臨風(fēng)險(xiǎn)。
與前幾年相比,研究人員注意到,更多專業(yè)犯罪團(tuán)伙甚至網(wǎng)絡(luò)間諜企業(yè)采用了這種供應(yīng)鏈攻擊策略。最近的一個(gè)例子發(fā)生在8月份,當(dāng)時(shí)朝鮮政府資助的黑客企業(yè)之一拉撒路集團(tuán)(Lazarus Group)將惡意程序包VMConnect上傳到了Python組件的公共注冊(cè)機(jī)構(gòu)PyPI。該程序包偽裝成合法的VMware模塊,并在安裝到系統(tǒng)上時(shí)下載額外的惡意有效負(fù)載。
開(kāi)發(fā)人員繼續(xù)下載有風(fēng)險(xiǎn)的開(kāi)放源碼包
減輕惡意包和易受攻擊的包帶來(lái)的威脅的任務(wù)也應(yīng)該落在包的消費(fèi)者身上,而不僅僅是存儲(chǔ)庫(kù)管理器。不幸的是,數(shù)據(jù)顯示,用戶繼續(xù)以高速率下載高風(fēng)險(xiǎn)的包。
根據(jù)Sonatype從其軟件供應(yīng)鏈管理工具以及該公司運(yùn)行的Java組件Maven存儲(chǔ)庫(kù)收集的數(shù)據(jù),2022年和2023年分別有12%和10%的組件下載是針對(duì)存在已知漏洞的版本。其中超過(guò)三分之一存在嚴(yán)重漏洞,另有30%存在嚴(yán)重缺陷。更令人擔(dān)憂的是,96%的這些易受攻擊的下載本可以避免,因?yàn)槭褂玫慕M件已經(jīng)更新了沒(méi)有漏洞的版本。
Sonatype的研究人員表示:“嚴(yán)重易受攻擊的組件使用量的增加可能是因?yàn)檫@些漏洞主要是在更流行、更廣泛采用的開(kāi)源軟件中發(fā)現(xiàn)和報(bào)告的。”人氣會(huì)吸引更多好演員和壞演員的注意,導(dǎo)致出現(xiàn)關(guān)鍵問(wèn)題的可能性增加。同樣值得注意的是,這些更受歡迎的組件有一個(gè)官方的披露流程來(lái)進(jìn)行溝通。這意味著,平均而言,這些關(guān)鍵漏洞應(yīng)該是最受關(guān)注的。但是,正如我們?cè)谝资芄舻腖og4j版本中所看到的那樣,“知道”只是一半的打擊。企業(yè)必須關(guān)心,他們必須有一種自動(dòng)化的方法來(lái)解決這個(gè)問(wèn)題。
開(kāi)源維護(hù)質(zhì)量參差不齊,正在下降
組件開(kāi)發(fā)人員也必須盡自己的一份力,盡快響應(yīng)報(bào)告和修補(bǔ)程序缺陷,而這一過(guò)程的質(zhì)量在整個(gè)生態(tài)系統(tǒng)中差異很大。事實(shí)上,Sonatype已經(jīng)看到越來(lái)越多的項(xiàng)目不再由創(chuàng)建者維護(hù)。
2020年,開(kāi)放源代碼安全基金會(huì)(OpenSSF)發(fā)布了一個(gè)新的項(xiàng)目評(píng)分系統(tǒng),稱為Scorecard,基于它們對(duì)安全最佳實(shí)踐的采用。根據(jù)數(shù)據(jù),根據(jù)提交和問(wèn)題跟蹤活動(dòng),Java和JavaScript生態(tài)系統(tǒng)中超過(guò)24000個(gè)被列為2021年維護(hù)的項(xiàng)目不再符合2022年維護(hù)的條件。
另一個(gè)被跟蹤的重要度量稱為“代碼評(píng)審”,指的是在將請(qǐng)求提交到項(xiàng)目之前對(duì)其進(jìn)行評(píng)審的實(shí)踐。根據(jù)Sonatype的說(shuō)法,這是與良好的安全結(jié)果最相關(guān)的做法,但并未被廣泛采用。事實(shí)上,在過(guò)去的一年里,使用代碼審查的項(xiàng)目數(shù)量總體上減少了15%,如果只計(jì)算符合維護(hù)條件的項(xiàng)目,則減少了8%。
Sonatype的研究人員說(shuō):“去年18.6%的項(xiàng)目停止維護(hù)的事實(shí)突出表明,不僅需要選擇良好的依賴項(xiàng),還需要監(jiān)控這些依賴項(xiàng)的質(zhì)量變化。”代碼審查率總體較低,即使在考慮剛剛維護(hù)的項(xiàng)目時(shí)也是如此,這為開(kāi)源開(kāi)發(fā)實(shí)踐提供了一個(gè)明顯的改進(jìn)領(lǐng)域--特別是考慮到代碼審查在預(yù)測(cè)安全狀態(tài)方面的重要性。
“根據(jù)我們的發(fā)現(xiàn),希望將開(kāi)源漏洞風(fēng)險(xiǎn)降至最低的企業(yè)應(yīng)該選擇維護(hù)良好的項(xiàng)目,執(zhí)行代碼審查并對(duì)其進(jìn)行監(jiān)控,以確保它們沒(méi)有達(dá)到生命周期的終點(diǎn)。”研究人員總結(jié)道。