Une faille de conception dans le kit de développement logiciel Vertex AI pour Python, la plateforme gérée par Google Cloud destinée à la création, à l’entraînement et au déploiement d’agents IA, pourrait permettre le détournement et l’empoisonnement de modèles en dehors du projet Google Cloud du développeur. Selon les chercheurs d'Unit42 (division de Palo Alto Networks), une logique défaillante de nommage des espaces de stockage objet combinée à l’absence d’authentification rendait possible le détournement de projet de la victime par un attaquant en connaissant simplement son identifiant de projet et sa région. « Étant donné qu’il ne peut y avoir deux buckets portant le même nom sur l’ensemble de Google Cloud, un attaquant capable d’en prédire le nom peut le créer de manière préventive dans son propre projet », ont expliqué les chercheurs dans un article de blog.
« Toute tentative ultérieure d’utiliser un espace de stockage portant ce nom, même depuis un projet différent, redirige silencieusement vers celui de l’attaquant. » Les chercheurs ont précisé que cette catégorie connue de vulnérabilité qu’ils ont baptisée « Bucket Squatting », s’appuie sur le nommage unique de buckets de stockage dans le cloud. Une exploitation réussie pourrait déboucher sur l’injection d’un modèle malveillant qui serait chargé par l’infrastructure Vertex AI, entraînant l’exécution de code sur l’ensemble des tenants. La faille a été signalée à Google, qui aurait corrigé le problème sous-jacent. La société n'a pas immédiatement répondu à notre demande de commentaires.
Désérialisation de fichiers pickle
Selon Unit42, le workflow de modèle vulnérable dans le SDK Vertex AI pour Python, versions 1.139.0 et 1.140.0, s’appuyait sur un nom de bucket staging (stockant temporairement des objets) dérivé exclusivement de l’ID du projet et de la région d’un client. Lorsqu’un espace de stockage portant ce nom existait déjà, le SDK se contentait de vérifier son existence sans confirmer la propriété. Cela créait un scénario de « squattage de bucket » dans lequel un attaquant pouvait en pré-créer un correspondant au bucket de staging escompté par la victime et attendre que les téléchargements de modèles y soient redirigés. Une fois qu’un artefact de modèle était téléchargé dans l’espace de stockage contrôlé par l’attaquant, ce dernier pouvait le remplacer par une version malveillante pendant une courte fenêtre, avant que l’agent de service de Vertex AI ne le récupère.
L’attaque pouvait alors se transformer en une exécution de code à distance (RCE), car les modèles d’apprentissage machine en Python sont généralement stockés à l’aide des formats de sérialisation pickle ou Joblib. La désérialisation de pickle rendant possible l’exécution de code arbitraire via des objets spécialement conçus. Ce processus d’exploitation cross-tenant a été baptisé « Pickle in the Middle » par les chercheurs, car il reposait, en partie, sur la désérialisation du module pickle intégré à Python.
Un bug détecté par l’IA
Dans le cadre de cette recherche, l’Unité 42 a intégré un grand modèle de langage (LLM) à son workflow d’analyse de code afin d’accélérer la découverte des vulnérabilités. « Des analyses qui prenaient autrefois plusieurs jours peuvent désormais être réalisées beaucoup plus rapidement », ont indiqué les chercheurs. « En affinant de manière itérative le champ d’action du modèle et en lui demandant de rechercher des schémas spécifiques, nous avons découvert des chemins menant à des ressources provisionnées sur le cloud, influencées par des données fournies par les utilisateurs ou issues des projets. »
Google aurait modifié le workflow concerné afin que les buckets de staging soient à présent validés avant leur utilisation, empêchant ainsi les attaquants d’enregistrer des noms de buckets pouvant être confondus avec des ressources appartenant à d’autres projets. Les correctifs ont été déployés dans les versions 1.144.0 et 1.148.0 du SDK, et les utilisateurs doivent effectuer une mise à jour vers l’une de ces versions corrigées.

Commentaire