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