三成熱門的PyPI軟體包被誤標為是惡意軟體包

語言: CN / TW / HK

研究人員發現,掃描工具原本負責清除通過流行的開原始碼儲存庫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,後者是一款多語言開源靜態程式碼分析工具。

本文翻譯自:http://www.darkreading.com/application-security/one-third-pypi-packages-mistakenly-flagged-malicious如若轉載,請註明原文地址