Skip to main content

Google Vertex AI SDK模型上傳流程漏洞,恐遭攻擊者跨租戶執行任意程式碼

Posted in 業界新聞
新聞

該漏洞出現在模型註冊前的暫存流程。開發者透過Vertex AI SDK上傳模型時,若未指定自己的暫存儲存位置,舊版SDK會依據Google Cloud專案識別碼與區域,自動產生一個預設儲存桶(bucket)名稱。Unit 42指出,當時SDK只確認這個名稱是否已存在,卻沒有進一步檢查該儲存桶是否真的屬於呼叫者的專案。

由於Google Cloud的儲存桶名稱在全球範圍內不能重複,攻擊者若知道受害者的專案識別碼,就可能先在自己的雲端專案建立同名儲存桶。如此一來,當受害者使用預設流程上傳模型時,模型構件可能被送到攻擊者控制的儲存位置,而不是受害者自己的環境。

攻擊者還可設定自動觸發的雲端函式,在受害者模型檔案上傳後立即替換成惡意檔案。研究團隊測試發現,模型上傳完成到Vertex AI服務代理讀取檔案之間約有2.5秒時間差,攻擊者若能在這段時間完成替換,就可能讓Vertex AI後續讀取並部署遭竄改的模型。

後續風險來自Python機器學習常見的模型儲存方式。許多模型會透過Joblib或pickle保存成檔案,而pickle在還原物件時可能執行程式碼。當攻擊者控制模型檔案,Vertex AI服務環境在載入模型時,就可能觸發惡意程式碼。Unit 42在概念驗證中表示,攻擊程式可嘗試讀取服務帳號電子郵件與OAuth存取權杖、容器環境變數以及雲端中繼資料,並把資料送往攻擊者控制的端點。

不過,這項攻擊要成立需要多個條件配合,包括受害者尚未在該區域建立預設暫存儲存桶、未自行指定暫存位置,攻擊者也必須知道受害者的專案識別碼,並在極短時間內完成檔案替換。

Google已修補此問題,Unit 42指出,修正重點是在模型上傳流程加入儲存桶權屬驗證,以避免SDK只因同名儲存桶存在就繼續上傳。研究人員建議開發者升級至1.148.0或更新版本,並在上傳模型時明確指定由自己控制的暫存用儲存桶。

View original 0 Likes 0 Boosts

Comments (0)

No comments yet.