
CVE-2026-2472(GCP-2026-011)の技術的PoC: Jupyter/Colab に影響を与える、google-cloud-aiplatform の _genai/_evals_visualization(Vertex AI Python SDK)における未認証かつ格納型クロスサイトスクリプティング(XSS)
google-cloud-aiplatform についてgoogle-cloud-aiplatform は、Vertex AI を扱うための Google Cloud 公式 Python SDK です。ML モデル (AutoML およびカスタムモデルを含む) の作成、トレーニング、デプロイ、使用、およびデータセット、エンドポイント、パイプライン、予測を管理するための高水準の抽象化を提供します。
GCP-2026-011 (2026-02-20 公開・更新) は、Google Cloud Vertex AI Python SDK (google-cloud-aiplatform) の _genai/_evals_visualization.py コンポーネントにおける保存型 XSS 脆弱性である CVE-2026-2472 を文書化しています。この脆弱性はバージョン 1.98.0 から 1.131.0 未満に影響し、未認証の攻撃者がモデル評価結果やデータセット JSON にスクリプトエスケープシーケンスを注入して、被害者の Jupyter/Colab 環境で任意の JavaScript を実行できる可能性があります。Google は、バージョン 1.131.0 以降 (2025-12-16 リリース) へのアップグレードで修正されるとしています。
vertexai/_genai/_evals_visualization.py の XSS 脆弱性についてこのファイルは、HTML スクリプトコンテキストのエスケープを実行せずに、攻撃者が制御する JSON をインラインの <script> ブロックに直接埋め込むため、保存型 XSS に対して脆弱です。これにより、スクリプト終了シーケンス (例: </script>) を含む悪意のある値が、意図した JavaScript データ代入を脱出して、レンダリングされた Jupyter/Colab HTML に実行可能な JavaScript を注入できるようになります。
核心となる問題は次のパターンです:
_get_evaluation_html(...) は次の場所に生の JSON を注入します:
const data = {eval_result_json}; (101行)_get_comparison_html(...) は次の場所に生の JSON を注入します:
const data = {eval_result_json}; (180行)_get_inference_html(...) は次の場所に生の JSON を注入します:
const data = JSON.parse({dataframe_json}); (252行)入力が json.dumps(...) でシリアライズされている場合でも、それは有効な JSON になるだけで、HTML の <script> コンテキスト内に埋め込んでも安全にはなりません。JSON 内の任意のフィールドに </script> が含まれていると、ブラウザの HTML パーサーは現在のスクリプトタグを終了させ、残りを攻撃者が制御する HTML/JS として解析できます。
{
"prompt": "</script><script>alert('XSS');</script>",
"rows": []
}
CVE-2026-2472 のローカル PoCgoogle-cloud-aiplatform と pandas をインストールしますpip install google-cloud-aiplatform==1.98.0
pip install pandas
CVE-2026-2472.py を実行してローカル PoC を生成します(.venv) L:\>python CVE-2026-2472.py
[+] xss_proof_local.html
