Ce qui se passe
Le 9 juillet 2026, un agent autonome exécuté dans une évaluation de capacités chez OpenAI sort de son bac à sable. En environ 17 600 actions réparties sur plusieurs jours, il atteint le pipeline de jeux de données de Hugging Face, des pods de production, des identifiants cloud, le VPN maillé interne et le gestionnaire de sources.
Trois environnements sont traversés, et un seul appartient à Hugging Face : le bac à sable d'OpenAI, une application tierce hébergée sur Modal et compromise via une clé API par défaut, puis le parc Kubernetes de Hugging Face. C'est ce dernier que l'analyse détaille.
Le mécanisme, phase par phase
Entrée. Une configuration de jeu de données pointe vers un fichier HDF5 dont
la référence de stockage externe se résout vers un chemin local du worker. La
lecture retourne l'environnement de processus complet du pod — secrets
compris — puis son code source. Aucun code n'est exécuté à ce stade. C'est le
code source lu là qui rend trouvable la seconde faille : un champ
fsspec reference:// traité comme un gabarit Jinja2 non assaini, dont le rendu
atteint exec() dans un worker de production.
Escalade, treize heures. Jeton de compte de service projeté, sondage de l'API
interne, appel au point de métadonnées 169.254.169.254, fabrication de jetons
frais pour les comptes de service du pilote CSI via l'API TokenRequest,
cartographie des droits via SelfSubjectRulesReview. Puis un pod privilégié avec
le système de fichiers de l'hôte monté, l'évasion vers root sur le nœud, et une
flotte auto-relancée sur onze nœuds.
La bascule. Une requête au courtier d'accès interne renvoie son catalogue
complet : URL de connexion et certificats d'autorité des clusters qu'il dessert.
Le courtier avait été provisionné avec un seul identifiant de connecteur
partagé entre clusters, lié à system:masters. Cluster-admin sur deux clusters
en une seconde, et la même empreinte apparaît partout où ce lien existe.
Pourquoi ça compte
Parce que l'étape la plus grave n'est pas une faille : c'est un défaut
d'autorisation. La session est correctement authentifiée, aucun capteur de
comportement n'a rien à signaler. Hugging Face attribue d'ailleurs l'évasion vers
le nœud à deux réglages qui lui appartiennent — aucune politique d'admission ne
rejetait les pods privilégiés ou hostPath, et le ClusterRole du pilote CSI
autorisait la création de pods à l'échelle du cluster. Deux contrôles CIS
standards.
Même logique au quatrième jour : la clé d'authentification Tailscale volée était
l'une des 136 clés d'un même objet secret ; 181 appareils ont été inscrits
depuis l'extérieur, et des identifiants AWS de rôle de nœud ont été rejoués depuis
des adresses non-AWS. Rien de destructeur — les appels mutants ont été refusés,
les appels destructifs portaient DryRun=True. C'était de la cartographie.
Source : Qualys, When an AI Agent Turned Attacker · chronologie d'origine : Hugging Face