三成熱門的PyPI軟件包被誤標(biāo)為是惡意軟件包
研究人員發(fā)現(xiàn),掃描工具原本負(fù)責(zé)清除通過流行的開源代碼存儲(chǔ)庫PyPI分發(fā)的軟件包所含的惡意代碼,實(shí)際上卻生成大量的誤警報(bào)。
PyPI是面向用Python編寫的應(yīng)用程序中使用的軟件組件的主要代碼庫,Chainguard公司分析PyPI后發(fā)現(xiàn),這種方法只揪出了59%的惡意軟件包,但也誤標(biāo)了三分之一流行的合法Python軟件包和15%的隨機(jī)選擇的軟件包。
Chainguard的研究人員在周二的分析報(bào)告中表示,研究工作旨在創(chuàng)建一個(gè)數(shù)據(jù)集,以便Python維護(hù)人員和PyPI代碼庫可以用來確定其系統(tǒng)在掃描項(xiàng)目、查找惡意更改和供應(yīng)鏈攻擊方面的效果。
參與這項(xiàng)研究的Chainguard高級(jí)軟件工程師Zack Newman表示,雖然現(xiàn)有方法可以檢測出大多數(shù)惡意軟件,但顯然需要重大改進(jìn),那樣才能防止誤警報(bào)浪費(fèi)項(xiàng)目經(jīng)理的時(shí)間。
他表示,這些是還有其他工作要做的志愿者,而不是愿意整天搜索可疑代碼的安全研究人員。他們格外關(guān)注PyPI的安全性,不遺余力地改善這種情況,但眼下收效甚微。
誤報(bào)是許多軟件分析工具的禍根,因此也是安全團(tuán)隊(duì)的禍根。即使某個(gè)系統(tǒng)能做到百分之百準(zhǔn)確地發(fā)現(xiàn)惡意軟包,如果其誤報(bào)率為1%,假設(shè)每周發(fā)布的20000個(gè)PyPI軟件包中只要有一個(gè)是惡意軟件包,那么開發(fā)人員和應(yīng)用程序安全專業(yè)人員仍然每周需要處理200個(gè)假警報(bào)。
數(shù)百個(gè)軟件包在研究中觸發(fā)了警報(bào),雖然研究人員進(jìn)行了一些抽查,但僅僅快速查看不足以確定某個(gè)軟件包是否是惡意的——這就是為什么惡意軟件檢測工具如此重要。代碼存儲(chǔ)庫管理員令人同情,他們每周要面對(duì)比這多出十倍的警報(bào)。
為了確保實(shí)用性,掃描工具需要將誤報(bào)率降低到0.01%左右,哪怕以遺漏一些惡意軟件包為代價(jià)。
PyPI的惡意軟件掃描方法
PyPI旨在通過以兩種方式檢查軟件包和項(xiàng)目來阻止軟件供應(yīng)鏈攻擊。PyPI使用簽名掃描軟件包的setup.py文件,以檢測可能表明含有惡意功能的已知的可疑模式——簽名用YARA規(guī)則表示,這是一種創(chuàng)建惡意軟件簽名的行業(yè)標(biāo)準(zhǔn)。YARA的全稱是Yet Another Recursive Acronym,與其說是描述性名稱,不如說是行業(yè)內(nèi)部的戲稱。此外,代碼存儲(chǔ)庫的掃描工具會(huì)分析提交項(xiàng)目和貢獻(xiàn)者,查找可能表明惡意代碼的可疑更改。
研究人員使用168個(gè)針對(duì)PyPI代碼存儲(chǔ)庫的已知惡意攻擊示例構(gòu)建了數(shù)據(jù)集。然后,他們創(chuàng)建了第二個(gè)數(shù)據(jù)集,含有1000個(gè)下載次數(shù)最多的軟件包和1000個(gè)導(dǎo)入次數(shù)最多的軟件包;他們消除重復(fù)項(xiàng)后,最后得到了1430個(gè)流行軟件包。另外,他們還創(chuàng)建了一個(gè)隨機(jī)選擇的1000個(gè)軟件包組成的數(shù)據(jù)集,由于14個(gè)軟件包沒有任何Python代碼,最后得到的是986個(gè)隨機(jī)的Python軟件包。
研究人員表示,流行軟件包和隨機(jī)選擇的軟件包都被認(rèn)為是合法的。此外,流行項(xiàng)目可能有更高的安全性,并遵守編程方面的最佳實(shí)踐。
研究人員在周二發(fā)布的分析報(bào)告中寫道:“雖然其中一些軟件包可能是惡意軟件包,但之外的大部分軟件包是惡意軟件包的可能性微乎其微。重要的是,這些軟件包更有可能代表從 PyPI隨機(jī)選擇的軟件包?!?/p>
開源軟件存儲(chǔ)庫仍然是網(wǎng)絡(luò)犯罪活動(dòng)的目標(biāo)
當(dāng)下,應(yīng)用程序安全專業(yè)人員和軟件開發(fā)人員在想方設(shè)法為構(gòu)成普通程序中78%代碼的開源軟件組件確保安全性。
開源安全基金會(huì)(OpenSSF)已采取了多項(xiàng)舉措,以提高開源軟件供應(yīng)鏈的安全性,包括確定需要更嚴(yán)格安全審查的最關(guān)鍵的軟件包,以及支持采用SigStore,這個(gè)項(xiàng)目通過加密方法將源代碼與已編譯的軟件包關(guān)聯(lián)起來。
在過去這幾年,針對(duì)軟件供應(yīng)鏈的攻擊有增無減。僅僅在過去一個(gè)月,安全公司卡巴斯基就在Node Package Manager(npm)代碼存儲(chǔ)庫中發(fā)現(xiàn)了惡意軟件,而安全公司Check Point和Snyk發(fā)現(xiàn)了托管在PyPI存儲(chǔ)庫服務(wù)上的十多個(gè)惡意軟件包。
此外,意大利的一名學(xué)齡兒童向PyPI上傳了多個(gè)含有勒索軟件腳本的惡意Python軟件包,據(jù)稱此舉純屬試驗(yàn)。
不太可能只有PyPI出現(xiàn)有問題的掃描結(jié)果。展望未來,Chainguard研究人員計(jì)劃擴(kuò)大分析范圍,評(píng)估至少四款開源軟件惡意軟件分析工具,比如OSSGadget Detect Backdoor、bandit4ma和OSSF Package Analysis,并將PyPI Malware Checks規(guī)則轉(zhuǎn)換成SemGrep,后者是一款多語言開源靜態(tài)代碼分析工具。
本文翻譯自:https://www.darkreading.com/application-security/one-third-pypi-packages-mistakenly-flagged-malicious如若轉(zhuǎn)載,請(qǐng)注明原文地址。