Google CloudのVertex AIに重大な脆弱性が発見されました。この脆弱性を悪用すると、攻撃者は被害者の環境への事前アクセスなしに、機械学習モデルのアップロードを乗っ取り、アーティファクトへの毒入れ(ポイズニング)、さらにはクロステナントのリモートコード実行(RCE)まで達成できます。
この脆弱性は、Palo Alto NetworksのUnit 42の研究者たちによって「Pickle in the Middle」と命名されました。Python SDK(google-cloud-aiplatform)に影響を与えるこの欠陥は、予測可能なクラウドリソース名、バケット・スクワッティング、安全でないデシリアライゼーションを組み合わせたもので、重大なセキュリティリスクをもたらしています。
Google Cloud Vertex AIの脆弱性詳細
Vertex AIは機械学習モデルの構築・デプロイに広く利用されており、そのModel Registryはデプロイ前にアーティファクトをステージングするためにGoogle Cloud Storage(GCS)バケットを使用しています。
脆弱性の根本原因は、SDKがプロジェクトIDとリージョンに基づく決定論的なフォーマットで、デフォルトのステージングバケット名を自動生成する点にあります。

注目すべき点として、影響を受けるバージョン(1.139.0および1.140.0)はバケットが存在するかどうかのみを確認し、そのバケットが正しいプロジェクトに属しているかどうかを検証しません。この見落としにより、攻撃者はこの予測可能なバケット名を自分のプロジェクトで先に作成することができます。これが「バケット・スクワッティング」と呼ばれる手法です。
攻撃は6つのフェーズで進行します。
1. フェーズ1:攻撃者は被害者のステージングバケット名を予測し、自身のGoogle Cloudプロジェクト内にそのバケットを作成します。外部からのインタラクションを許可するため、寛大なIAMロールを設定します。バケット名はグローバルで一意であるため、被害者のSDKは知らないうちに攻撃者のバケットと通信してしまいます。
2. フェーズ2:攻撃者は、バケット内のオブジェクト作成イベントをトリガーとする悪意あるCloud Functionをデプロイします。この関数はアップロードを監視し、正規のモデルファイルを即座に悪意あるペイロードに差し替えます。アップロードから処理までのわずか約2.5秒という短いレースコンディションの窓を利用するため、タイミングが極めて重要です。
3. フェーズ3:被害者はカスタムのステージングバケットを指定せずに、標準的なSDKオペレーションでモデルをアップロードします。SDKはバケット名を解決し、バケットが存在することを確認して、モデルアーティファクトを攻撃者のバケットに直接アップロードします。
4. フェーズ4:攻撃者のCloud Functionはアップロード直後にトリガーされ、正規のモデル(通常はjoblibまたはpickleでシリアライズされたもの)をミリ秒単位で悪意あるバージョンに置き換えます。Vertex AIのサービスエージェントがまだアーティファクトにアクセスしていないため、攻撃者はファイルが消費される前に差し替えに成功します。
5. フェーズ5:被害者はモデルをVertex AIエンドポイントにデプロイします。ステージングされたアーティファクトに対する整合性チェックが存在しないため、汚染されたモデルは正規のものとして扱われ、サービングインフラストラクチャに読み込まれます。
6. フェーズ6:モデルのデシリアライゼーション中にリモートコード実行が発生します。このエクスプロイトはPythonのpickleメカニズム、特に`_reduce_`メソッドを悪用します。このメソッドにより、joblib.load()でモデルが読み込まれる際に任意のコードが実行されます。概念実証(PoC)では、GoogleのマネージドサービスアカウントからのOAuth トークンが窃取され、他のモデルアーティファクト、BigQueryメタデータ、内部テナントインフラストラクチャを含む機密リソースへのアクセスが可能になりました。

影響は単一のデプロイメントにとどまりません。研究者たちは、クラウドプラットフォームの広範なスコープを持つ侵害されたサービスアカウントトークンを使用して、クロスデプロイメントのデータアクセス、モデルの窃取、偵察能力を実証しています。これにより、Vertex AIのマネージド環境におけるテナント分離の前提が事実上崩れることになります。
Googleはすでにこの問題に対処しています。バージョン1.144.0および1.148.0で導入された修正には、UUIDを使用したランダム化されたバケット名の採用と、既存バケットの使用前に実施する明示的な所有者確認チェックが含まれています。この脆弱性は2026年3月5日に報告され、パッチは2026年4月15日までに完全に展開されました。
セキュリティ専門家は、パッチ適用済みのSDKバージョンへのアップグレードと、デフォルトの命名規則へのフォールバックを避けるためのステージングバケットの明示的な定義を強く推奨しています。今回のインシデントは、AIおよびMLパイプラインにおけるセキュリティリスクの増大を浮き彫りにしています。従来のクラウドの設定ミスとモデルのシリアライゼーションが交差することで、新たで強力な攻撃ベクターが生まれているのです。
CISOおよびセキュリティリーダーの皆様へ:次の侵害は顔のない脅威かもしれません。ISC2が開催するLIVEウェビナー「Ghost in the Machine」にご参加ください。
翻訳元: https://gbhackers.com/google-cloud-vertex-ai-vulnerability/