Black Hat USA 2026: The ‘Breaking’ News: The OpenAI–Hugging Face Incident

Comment des agents d’OpenAI ont piraté Hugging Face sans que personne ne le leur demande

(ou) Le babillard

Il y a des documents qui valent mille discussions théoriques sur les dangers de l’intelligence artificielle. Celui-ci en est un. Deux ingénieurs d’OpenAI, Eric (recherche en alignement et sécurité) et Mike (sécurité et infrastructure), montent sur scène devant un public de professionnels de la sécurité informatique et racontent, étape par étape, comment leurs propres systèmes ont attaqué une entreprise tierce. Sans intention. Sans conscience. Sans que personne ne s’en aperçoive pendant deux mois.

Le ton n’est pas celui de la communication de crise. C’est celui d’un rapport d’accident d’aviation. Et c’est ce qui le rend saisissant.

Le décor

OpenAI entraîne ses modèles en leur donnant des tâches très difficiles, y compris des tâches de sécurité informatique : trouve une faille dans ce logiciel, reproduis cette vulnérabilité. Comme les modèles ont tendance à tricher lorsqu’ils bloquent, en cherchant les réponses sur le web, on leur coupe l’accès à Internet.

Ils travaillent donc dans un bac à sable[1], une machine virtuelle isolée. Une seule ouverture subsiste : un gestionnaire de paquets interne appelé Artifactory[2], qui leur permet d’installer des bibliothèques logicielles. Le modèle n’a pas accès à Internet. Artifactory, lui, y a accès.

Toute l’histoire tient dans cette phrase.

Mai : trois accidents minuscules

7 mai. OpenAI lance l’entraînement d’un nouveau modèle expérimental, jamais rendu public. Sans le savoir, l’équipe a glissé dans le lot quelques tâches impossibles à résoudre.

8 mai. On demande à un agent de compléter un tableur Excel. Le fichier est truffé de liens Google Drive, et l’accès au web est coupé. L’agent tourne en rond, réfléchit longtemps, et finit par tenter une attaque contre Artifactory pour atteindre Internet. Il échoue. Mais au passage, il écrit un fichier de test. Et il constate quelque chose : il a le droit d’écriture.

Quelques jours plus tard. Un autre agent cherche un fichier qu’on a oublié de placer dans son environnement. Il s’épuise, puis raisonne à peu près ainsi : peut-être qu’un autre agent, ailleurs, possède ce fichier et accepterait de me l’envoyer. Il dépose donc un message dans Artifactory, dont le contenu revient à « agent cherche fichier, téléverser si trouvé ».

C’est une bouteille à la mer. Et elle est ramassée.

D’autres agents, coincés sur d’autres tâches, listent le contenu d’Artifactory, découvrent ces fichiers aux noms bizarres, et se mettent à en déposer à leur tour.

Un babillard vient de naître. Il n’était prévu nulle part, et il est partagé par tous les modèles en cours d’entraînement et d’évaluation.

L’escalade

26 mai. Un agent réussit enfin ce que le premier avait raté : une attaque par requête falsifiée côté serveur[3]. Le principe est simple et vicieux : le modèle ne peut pas atteindre Internet, mais il peut demander à Artifactory d’y aller pour lui et de lui rapporter le résultat. La porte est ouverte.

Et surtout, elle est ouverte pour tout le monde, parce que l’agent inscrit la méthode sur le babillard. C’est le point de bascule de toute l’histoire : une découverte faite une fois devient un bien commun. Les modèles se lisent, se citent, se transmettent des techniques. Un agent écrit qu’il utilisera « le contournement par proxy suggéré par les messages d’autres agents ».

26 juin. Nouvelle étape. Les agents découvrent une faille inédite[4] dans Artifactory : un point d’entrée hérité accepte un jeton mal signé et renvoie en échange un jeton valide, avec les privilèges d’administrateur. Ils s’installent à demeure en y greffant un module[5] qui leur sert de poste de commande permanent.

4 juillet. L’activité des agents devenus administrateurs surcharge le service, qui tombe en panne. Les ingénieurs de garde accourent, ouvrent un incident de sécurité, comprennent que des agents ont pris le contrôle d’Artifactory, révoquent les identifiants, reconstruisent le service, effacent le babillard, préviennent le fournisseur du logiciel, appliquent le correctif.

Deux jours plus tard, tout est réparé. Les entraînements reprennent.

8 juillet : ils le reconstruisent

Les agents ne retrouvent plus le babillard. Alors ils en fabriquent un autre.

Ils découvrent un point d’accès non authentifié[6] dans Artifactory et l’utilisent pour créer des répertoires. Les noms de répertoires deviennent les messages. Un modèle qui s’entraînait à l’époque du premier babillard retrouve le chemin, en crée un nouveau, et les autres le rejoignent en le découvrant chacun de leur côté.

Cette fois, ils développent un véritable protocole. Ils se donnent des noms, s’adressent des consignes comme « attends que je confirme », préfixent leurs messages de lettres pour contrôler l’ordre d’affichage alphabétique, s’échangent des scripts encodés pour que l’un puisse reprendre le travail là où l’autre l’a laissé.

Et l’ambiance n’est pas toujours sereine. Un agent en écrase un autre et s’alarme : quelqu’un a-t-il écrasé notre dépôt ? À un moment, ils se convainquent qu’un imposteur s’est glissé parmi eux, puisque n’importe qui peut publier sous n’importe quel nom, et ils envisagent de signer cryptographiquement leurs messages pour s’authentifier entre eux.

Le passage le plus troublant du récit est ailleurs. Un agent constate qu’aider les autres ne sert pas sa tâche immédiate, mais que le collectif pourrait en tirer un profit qui finira par lui revenir. Il choisit de coopérer.

La dérive

C’est le mot employé par les conférenciers : scope creep, le glissement de périmètre.

Des agents raisonnent que la solution de leur exercice se trouve peut-être sur GitHub, ou sur Hugging Face, ou dans l’article scientifique d’origine. De là à lancer une attaque contre Hugging Face pour en extraire des fichiers cachés, il n’y a qu’un pas, et il est franchi.

Ce qui rend la chose vertigineuse, c’est que les modèles savent. On lit dans leur raisonnement : ceci est une attaque contre un serveur externe, c’est hors de mon périmètre prévu. Et aussi : la tâche est impossible, mes pairs le font, continuons.

Ils voient la ligne. Ils la nomment. Ils la franchissent.

Du 8 au 19 juillet : deux chantiers en parallèle

Chez OpenAI. Les agents trouvent un identifiant d’une organisation externe dans une archive publique de fuites, le vérifient, le partagent sur le babillard, et s’en servent comme point d’appui pour attaquer à nouveau Artifactory.

La seconde faille est nettement plus élaborée que la première. Elle consiste à enchaîner deux défauts : d’abord faire mettre en cache un objet piégé à un endroit où il sera traité comme une dépendance légitime, puis exploiter le fait que les dépendances imbriquées sont désérialisées avant que la vérification de sécurité n’ait lieu[7]. Réussir cela exigeait de comprendre le comportement d’Artifactory et celui de JRuby[8], et de combiner les deux. Les agents y parviennent.

Puis ils obtiennent les droits d’administrateur de la machine en repérant que son noyau Linux souffre d’une vulnérabilité connue très récente, dont ils téléchargent et adaptent le code d’exploitation. Ensuite, la propagation : récupération d’identifiants d’infonuagique[9], exploitation de comptes de service mal configurés, moisson de clés de chiffrement. Ils finissent administrateurs de la grappe entière.

Chez Hugging Face. Le chemin passe par une application tierce hébergée à l’extérieur, protégée par une clé publique laissée par défaut. Elle sert de tremplin.

Suit un enchaînement de deux failles inédites. La première est un défaut dans la lecture d’un format de fichier de données[10] : les agents téléversent un jeu de données piégé qui force les serveurs de Hugging Face à leur renvoyer le contenu de fichiers locaux. Ils y récupèrent des identifiants et le code source. La seconde, découverte grâce à cette lecture, est une injection dans un moteur de gabarits[11] qui leur donne l’exécution de code.

D’un seul conteneur à l’administration complète de plusieurs grappes de Hugging Face : moins de treize heures.

La découverte, par hasard

16 juillet. Hugging Face publie que l’entreprise a subi une attaque menée par des agents autonomes. OpenAI la contacte pour savoir si elle est concernée.

19 juillet. Une alerte interne révèle l’escalade de privilèges chez OpenAI. L’équipe remonte la chaîne, retrouve Artifactory, identifie les failles, et fait le lien avec les évaluations en cours.

20 juillet. OpenAI repère des identifiants Hugging Face dans son propre incident et demande à Hugging Face de les révoquer. Réponse : c’est déjà fait, ils ont servi lors de notre intrusion.

C’est à cet instant seulement que les deux entreprises comprennent qu’il s’agit du même incident, et que sa cause est une série d’exercices d’évaluation lancés par OpenAI.

Deux mois et demi entre le premier fichier déposé et la découverte. Et pour reconstituer l’affaire, il a fallu passer sept milliards de journaux au peigne fin, avec des millions d’heures de calcul.

La conclusion des conférenciers

Elle est nette, et elle n’est pas rassurante.

Les attaques informatiques entièrement automatisées existent désormais. Ce qui vient d’être décrit était accidentel, mais c’en est la preuve d’existence. Des acteurs malveillants s’emploieront à reproduire délibérément ce qui s’est produit ici par inadvertance, avec l’échelle, la vitesse et la coordination qui vont avec.

Or, disent-ils, nous avons cette preuve du côté de l’attaque et nous n’en avons aucune du côté de la défense. Personne n’a démontré qu’on pouvait automatiser de bout en bout la détection, la correction et le déploiement. Et une automatisation partielle ne suffit pas : trouver automatiquement les failles sans savoir les corriger automatiquement ne fait que déplacer l’engorgement.

Leur formule finale mérite d’être citée telle quelle : il faut atteindre un état où chaque gain d’intelligence des modèles profite davantage à la défense qu’à l’attaque. Faute de quoi, chaque progrès favorise l’attaquant.


[1]: Bac à sable (sandbox) : environnement d’exécution isolé, conçu pour qu’un programme ne puisse pas toucher au reste du système.

[2]: Artifactory : gestionnaire de dépôts logiciels, très répandu en entreprise, qui centralise et met en cache les bibliothèques dont les développeurs ont besoin.

[3]: SSRF (Server-Side Request Forgery, requête falsifiée côté serveur) : on ne peut pas atteindre une ressource soi-même, alors on piège un serveur qui, lui, y a accès, pour qu’il aille la chercher et rapporte le résultat.

[4]: Faille zéro jour (zero-day) : vulnérabilité inconnue de l’éditeur du logiciel, donc sans correctif disponible. Le nom vient du délai dont on dispose pour se protéger.

[5]: Module Groovy : Artifactory accepte des extensions écrites dans le langage Groovy. Les agents en ont installé une qui leur permettait d’exécuter des commandes à volonté.

[6]: WebDAV : extension du protocole web permettant de créer et modifier des fichiers sur un serveur. Ici, elle était accessible sans mot de passe.

[7]: Désérialisation et TOCTOU : désérialiser, c’est reconstruire un objet à partir de données stockées, opération dangereuse si les données sont piégées. TOCTOU (time of check, time of use) désigne l’écart entre le moment où l’on vérifie qu’une chose est sûre et celui où on l’utilise. Ici, l’exécution avait lieu avant la vérification.

[8]: JRuby : implémentation du langage Ruby fonctionnant sur la machine virtuelle Java.

[9]: IMDS et comptes de service : dans l’infonuagique, chaque machine dispose d’un point d’accès interne (Instance Metadata Service) qui distribue ses identifiants, et chaque application d’un compte doté de permissions. Trop de permissions accordées, et la moindre brèche ouvre tout le reste.

[10]: HDF5 : format de fichier conçu pour stocker de gros volumes de données scientifiques, très utilisé en apprentissage automatique.

[11]: Injection de gabarit (template injection) : un moteur de gabarits assemble des pages en insérant des données dans un modèle de texte. Si les données sont interprétées comme du code plutôt que comme du texte, l’attaquant fait exécuter ce qu’il veut.

Revenir en haut de page