關鍵詞
惡意軟件
Google Cloud Vertex AI Python SDK 中的一個漏洞允許攻擊者在無需訪問受害者項目的情況下,劫持受害者的機器學習模型上傳,并在 Google 的服務基礎設施內運行代碼。
Palo Alto Networks Unit 42 通過 Google 的漏洞賞金計劃發現并報告了此漏洞,將該技術稱為“Pickle in the Middle”(中間人 Pickle 攻擊),并表示未觀察到野外利用。Google 已修復該漏洞;如果您使用該 SDK,請更新至 1.148.0 或更高版本。
![]()
攻擊者僅需擁有自己的 Google Cloud 項目以及受害者的項目 ID(通常公開)。無需憑證、無需釣魚、無需在目標中建立立足點。
該漏洞在于 SDK 如何為模型上傳選擇臨時 Cloud Storage 存儲桶。如果用戶未設置存儲桶,SDK 會根據項目 ID 和區域生成可預測的名稱,例如project-vertex-staging-region。它會檢查該存儲桶是否存在,但不會檢查受害者是否擁有它。
由于存儲桶名稱是全局唯一的,攻擊者可以在自己的項目中搶先創建預期的存儲桶。受害者的 SDK 隨后會將模型文件上傳到攻擊者的存儲桶。攻擊者隨后可以用惡意模型替換上傳的模型。
許多 Python ML 模型使用 pickle 或 joblib 保存,加載文件時可以運行代碼。當 Vertex AI 稍后加載被替換的模型時,攻擊者的代碼將在服務容器內執行。
攻擊依賴于速度。Unit 42 測量受害者上傳與 Vertex AI 讀取文件之間約有 2.5 秒的間隔。在其概念驗證中,攻擊者使用了一個在上傳后觸發的 Cloud Function,并在 Vertex AI 讀取之前的 1.4 秒內替換了模型。
Payload 隨后從服務容器的元數據服務器竊取了 OAuth 令牌并將其發送給攻擊者。在 Unit 42 的測試環境中,該令牌不僅限于受影響的部署。它可以訪問同一 Google 管理的租戶項目中的其他模型工件,包括具有訓練權重的完整 TensorFlow 模型,以及 BigQuery 元數據、訪問列表、租戶日志、GKE 集群名稱和內部容器鏡像路徑。
攻擊僅在特定條件下有效:受害者在該區域的默認暫存存儲桶尚不存在,且受害者未設置staging_bucket參數。對于 Vertex AI 中某區域的新項目,前者很常見。
后者取決于開發者依賴 SDK 的默認值而非命名自己的存儲桶。
Unit 42 于 2026 年 3 月 5 日通過 Google 的漏洞獎勵計劃報告了該漏洞。它測試了當時最新的版本 1.139.0 和 1.140.0,發現兩者均存在漏洞。
Google 于 3 月 31 日在 v1.144.0 中提供了初始修復,在存儲桶名稱中添加了隨機 uuid4。它于 4 月 15 日在 v1.148.0 中完成了修復,添加了存儲桶所有權驗證以阻止Model.upload()中的存儲桶搶占。截至發布時,Unit 42 和 Google 的 Vertex AI 安全公告均未列出該問題的 CVE。
更新至 1.148.0 或更高版本以激活所有權檢查。此外,在上傳模型時,將staging_bucket顯式設置為您控制的 Cloud Storage 位置。由于有缺陷的邏輯位于客戶端 SDK 中,請檢查運行它的任何地方的google-cloud-aiplatform版本,包括 notebooks、CI jobs 和訓練管道,而不僅僅是生產服務。
這是今年 Vertex AI 中出現的第二個可預測存儲桶名稱漏洞。Google 于 2 月修復了 CVE-2026-2473,這是 Vertex AI Experiments 中另一個存儲桶搶占漏洞,同樣允許跨租戶代碼執行、模型竊取和投毒。
Unit 42 之前關于 Vertex AI 默認服務代理權限的工作追蹤了一條從部署的 AI 代理到客戶和租戶數據的相關路徑。
![]()
安全圈
![]()
網羅圈內熱點 專注網絡安全
實時資訊一手掌握!
好看你就分享 有用就點個贊
支持「安全圈」就點個三連吧!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.