
PoC technique pour CVE-2026-2472 (GCP-2026-011) : Cross-Site Scripting (XSS) non authentifiée et stockée dans google-cloud-aiplatform _genai/_evals_visualization (Vertex AI Python SDK) affectant Jupyter/Colab.
_genai/_evals_visualization.py du SDK Google Cloud Vertex AI (google-cloud-aiplatform) versions 1.98.0 jusqu'à (mais non inclus) 1.131.0 - (github.com/googleapis/python-aiplatform)google-cloud-aiplatformgoogle-cloud-aiplatform est le SDK Python officiel de Google Cloud pour travailler avec Vertex AI. Il fournit des abstractions de haut niveau pour créer, entraîner, déployer et utiliser des modèles de ML (y compris AutoML et les modèles personnalisés), ainsi que pour gérer les ensembles de données, les points de terminaison, les pipelines et les prédictions.
GCP-2026-011 (publié et mis à jour le 2026-02-20) documente CVE-2026-2472, une vulnérabilité de type XSS stocké dans le composant _genai/_evals_visualization.py du SDK Python Google Cloud Vertex AI (google-cloud-aiplatform) affectant les versions 1.98.0 jusqu'à la version 1.131.0 non incluse, où un attaquant non authentifié peut injecter des séquences d'échappement de script dans les résultats d'évaluation de modèle ou le JSON d'un ensemble de données et obtenir une exécution arbitraire de JavaScript dans l'environnement Jupyter/Colab d'une victime ; Google indique que le problème est corrigé en mettant à jour vers la version 1.131.0 ou une version ultérieure (1.131.0 ayant été publiée le 2025-12-16).
vertexai/_genai/_evals_visualization.pyLe fichier est vulnérable à une XSS stockée car il intègre directement du JSON contrôlable par l'attaquant dans un bloc <script> en ligne sans effectuer d'échappement du contexte script HTML. Cela permet à une valeur malveillante contenant une séquence de fermeture de script (par exemple </script>) de sortir de l'affectation de données JavaScript prévue et d'injecter du JavaScript exécutable dans le HTML Jupyter/Colab rendu.
Le problème central réside dans le motif suivant :
_get_evaluation_html(...) injecte du JSON brut dans :
const data = {eval_result_json}; (ligne 101)_get_comparison_html(...) injecte du JSON brut dans :
const data = {eval_result_json}; (ligne 180)_get_inference_html(...) injecte du JSON brut dans :
const data = JSON.parse({dataframe_json}); (ligne 252)Même lorsque l'entrée est sérialisée avec json.dumps(...), cela la rend seulement valide en tant que JSON — cela ne la rend pas sûre pour une intégration dans un contexte <script> HTML. Si un champ du JSON contient </script>, l'analyseur HTML du navigateur peut terminer la balise script actuelle et analyser le reste comme du HTML/JS contrôlé par l'attaquant.
{
"prompt": "</script><script>alert('XSS');</script>",
"rows": []
}
CVE-2026-2472google-cloud-aiplatform et pandaspip install google-cloud-aiplatform==1.98.0
pip install pandas
CVE-2026-2472.py pour générer la preuve de concept locale(.venv) L:\>python CVE-2026-2472.py
[+] xss_proof_local.html
