何が起きたか
Palo Alto Networks Unit 42は、Vertex AI SDK for Pythonの欠陥を発見しました。SDKはテンポラリーアップロードに決定論的なバケット命名スキームを使用し、アップロード前にバケット所有権を検証しません。被害者のプロジェクトID(しばしば公開)のみを知っている攻撃者は、プロアクティブにバケットを作成し、被害者のアップロードを待ってモデルをハイジャックできます。
なぜ重要か
これにより、クロステナントモデル汚染が可能になります。攻撃者はモデルが本番環境に到達する前に、被害者のMLモデルに悪意あるコードを注入できます。モデルがデプロイされ、予測を行うと、攻撃者のコードはGoogleのインフラストラクチャ内でモデル提供環境、メタデータサーバー、および潜在的には他のGoogle Cloudリソースにアクセスして実行されます。
攻撃経路
Vertex AI SDKは、モデルアップロード時に使用される一時的なCloud Storageバケットに対して予測可能な名前を生成します(例:project-vertex-staging-region)。独自のGoogle Cloudプロジェクトを持つ攻撃者は、その命名スキームに一致するバケットをプロアクティブに作成できます。被害者のSDKがモデルをアップロードしようとすると、代わりに攻撃者のバケットにアップロードされます。攻撃者はモデルを修正し(例:pickleファイルを悪意あるファイルと交換)たり、バケットを使用して汚染されたモデルをホストしたりできます。Vertex AIがモデルをロードすると、攻撃者のコードはサービングコンテナ内で実行されます。
影響を受けるシステム
Google Cloud Vertex AI Python SDK(google-cloud-aiplatform v1.139.0–1.140.0)
緩和策
google-cloud-aiplatformをv1.148.0以降に更新してください。アップロード前に明示的にバケット名を指定し、その所有権を検証してください。モデルアップロード操作のために、最小限の権限を持つサービスアカウント偽装を使用してください。