何が起きたか
Palo Alto Networks Unit 42は、Google CloudのVertex AI Python SDK(2026年3月5日に報告、2026年4月15日までにパッチ、約2026年6月16日に公開)における設計上の欠陥を発見し、責任を持って開示しました。影響を受けたSDKバージョン1.139.0および1.140.0は、バケット所有権を検証せずに決定的なGCSステージングバケット名を生成しました。Python MLモデル読み込みにおける危険なpickle逆シリアル化と組み合わせると、攻撃者はバケットを事前に取得し、競合状態ウィンドウ内に悪意あるモデルアーティファクトを注入し、Googleのマルチテナントサービスインフラストラクチャ内でコード実行を実現できます。Unit 42はBigQueryメタデータおよび他の内部リソースへのアクセス権を付与するOAuthトークンの流出をデモンストレーションしました。
なぜ重要か
この攻撃は被害者のクラウドプロジェクトへのアクセスを必要としません。被害者のパブリックプロジェクトIDと地域のみが必要です。MLモデルアップロードパイプラインが新しいRCE表面であることを示しています。サービングコンテナ内のpickle逆シリアル化は、管理型AIプラットフォームのテナント分離を損なわせ、クラウドサービスアカウント権限で任意のコードを実行します。この手法(命名規則スクワッティング + pickle RCE)は、予測可能なストレージパスを自動生成する他のMLプラットフォームに一般化可能です。
攻撃経路
Vertex AI Python SDK(バージョン1.139.0~1.140.0)は、被害者のプロジェクトIDと地域から予測可能なステージングGCSバケット名を生成します(形式:project-vertex-staging-region)。独自のGoogle Cloudプロジェクトを持つ攻撃者がこのバケット名を事前登録します(バケットスクワッティング)。被害者がモデルをアップロードすると、SDKはサイレントに攻撃者のバケットにアーティファクトをアップロードします。Cloud Functionはアップロードでトリガーし、約2.5秒の競合状態ウィンドウ内で正当なモデルを悪意あるpickle/joblibペイロードで置き換えます。その後、Vertex AIは毒入れされたモデルを逆シリアル化し、Googleのサービングコンテナ内で攻撃者のコードを実行し、メタデータサーバーからOAuthトークンをリークさせます。
影響を受けるシステム
google-cloud-aiplatform(Vertex AI Python SDK)バージョン1.139.0~1.140.0。バージョン1.144.0および1.148.0で完全にパッチされました。
緩和策
google-cloud-aiplatformをバージョン1.148.0以降にアップグレードしてください。自動生成名に依存するのではなく、モデルアップロード時に常にstaging_bucketパラメータを明示的に設定してください。アドバイザリ:https://unit42.paloaltonetworks.com/hijacking-vertex-ai-model/