近年來,開發者們在開放源代碼組件庫中愈發成爲網絡攻擊的目標,黑客利用假冒軟件包進行供應鏈攻擊的手段不斷升級,最近甚至擴展到了僞造的人工智能(AI)框架和被污染的機器學習(ML)模型。近期,一項研究揭示了黑客通過上傳僞裝成阿里雲 AI 實驗室開發工具包的惡意軟件包,成功實施了這一攻擊。

研究人員在 Python Package Index(PyPI)上發現了三個惡意軟件包,它們假冒了阿里雲 AI 實驗室的 SDK,實際上並沒有任何合法功能。這些惡意包利用存儲在 Pickle 格式中的惡意 ML 模型,從用戶的環境中竊取信息,並將其發送到攻擊者控制的服務器。

黑客,代碼,程序員

圖源備註:圖片由AI生成,圖片授權服務商Midjourney

黑客之所以選擇隱藏在 ML 模型中的惡意代碼,可能是因爲當前的安全工具剛剛開始支持檢測 ML 文件格式中的惡意行爲,傳統上這些文件被視爲共享數據的媒介,而非分發可執行代碼的方式。

Pickle 是 Python 的一個官方模塊,用於對象序列化,常用於存儲與 PyTorch 庫相關的 ML 模型。隨着 PyTorch 在 AI 開發者中的廣泛應用,Pickle 格式也愈發流行。然而,黑客已經利用這一格式在 Hugging Face 等平臺上託管了被污染的模型。雖然 Hugging Face 採取了開源工具 Picklescan 來檢測潛在危險,但研究人員指出,依然存在繞過檢測的可能。

此次攻擊的三個惡意包分別爲 aliyun-ai-labs-snippets-sdk、ai-labs-snippets-sdk 和 aliyun-ai-labs-sdk,合計被下載了1600次,儘管它們上線不到一天便被發現並下架。開發者的計算機通常包含多種憑據、API 令牌和其他服務訪問密鑰,因此一旦被攻陷,攻擊者可輕易實現橫向移動,進一步侵入系統。

這些惡意 SDK 通過__init__.py 腳本加載惡意的 PyTorch 模型,這些模型執行了經過 base64編碼的代碼,旨在竊取用戶的登錄信息、網絡地址以及機器所屬組織的名稱等。值得注意的是,這些惡意代碼的主要目標可能是中國的開發者,因爲阿里雲 SDK 更吸引使用該服務的本地開發者。然而,這一手法同樣可以針對任何開發者,只需通過不同的誘餌。

這一攻擊揭示了機器學習模型文件格式的安全風險仍處於初級階段,當前的安全工具在檢測惡意 ML 模型方面遠未完善。