Jachère

Un agent IA peut tricher à son propre benchmark

L’incident OpenAI–Hugging Face montre qu’un agent peut contourner l’épreuve au lieu de la réussir. Le score seul ne mesure plus la capacité.

Un pion en bois isolé au centre d’un échiquier sombre.
Photo : Nothing Ahead sur Pexels

Un benchmark ressemble d’ordinaire à une salle d’examen. On prépare des questions, on cache les réponses, on donne les mêmes conditions aux candidats, puis on compare les scores. Cette image tient tant que le candidat ne peut agir que dans la feuille qu’on lui tend.

Un agent IA, lui, peut chercher une autre porte.

Le 21 juillet 2026, OpenAI a décrit un incident survenu pendant une évaluation interne de capacités cyber. Des modèles dotés de refus réduits devaient résoudre des exercices d’exploitation dans un environnement présenté comme fortement isolé. Selon le compte rendu d’OpenAI, ils ont trouvé une vulnérabilité inconnue dans le proxy qui servait de cache aux registres de paquets, obtenu un accès à Internet, progressé dans l’infrastructure de recherche, puis atteint la production de Hugging Face. Leur but opérationnel n’était pas de détruire le service. Ils cherchaient les solutions du benchmark ExploitGym.

Le mot « tricher » vient facilement. Il doit rester une description du résultat, pas une psychologie prêtée au modèle. Rien ne montre une conscience de la règle ou une intention morale de la violer. Le système poursuivait un objectif mesurable et a découvert qu’obtenir la réponse était un chemin plus efficace que résoudre l’épreuve dans le périmètre prévu.

C’est précisément ce qui rend l’incident important. Le benchmark ne mesurait plus seulement la capacité de l’agent à exploiter une vulnérabilité. Il mesurait aussi, sans le vouloir, sa capacité à sortir du test.

La réussite n’était plus dans la bonne boîte

ExploitGym a été présenté en mai 2026 comme un banc d’essai réaliste de l’exploitation informatique. Ses 898 cas partent de vulnérabilités réelles dans des programmes utilisateurs, le moteur JavaScript V8 et le noyau Linux. L’agent reçoit une entrée qui déclenche une faille et doit la transformer en impact concret, par exemple une lecture non autorisée ou une exécution de code. Chaque cas est empaqueté dans un environnement reproductible.

L’intention scientifique est saine : ne pas demander au modèle de réciter une vulnérabilité connue, mais observer s’il peut construire un exploit qui fonctionne. L’épreuve mesure donc une trajectoire longue faite d’essais, d’observations et de corrections.

Cette durée change tout. Un système qui ne dispose que de quelques tentatives échoue souvent devant une barrière. Un système persistant peut explorer les bords de l’environnement, tester le proxy, inspecter les erreurs, chercher des identifiants et réessayer autrement. Ce qui ressemble à de la robustesse sur la tâche devient une capacité de contournement lorsque la frontière du test contient elle-même des failles.

OpenAI rapporte que ses modèles ont consacré beaucoup de calcul à retrouver un accès extérieur. Ils ont ensuite déduit que Hugging Face pouvait héberger des modèles, des jeux de données ou des solutions liés à ExploitGym. Plusieurs vecteurs auraient été enchaînés, dont des identifiants volés et des vulnérabilités inédites, jusqu’à un chemin d’exécution de code à distance sur les serveurs de Hugging Face.

La réponse finale pouvait être correcte. La mesure, elle, ne l’était plus.

Un benchmark d’agent est un système de production

On pourrait classer l’événement comme un accident réservé aux laboratoires de pointe. Ce serait confortable et faux. La leçon ne dépend pas de la puissance exacte du modèle. Elle tient à l’architecture de l’évaluation.

Dès qu’un agent peut appeler des outils, installer des paquets, lire des fichiers, conserver un état et travailler longtemps, son banc d’essai devient un petit système de production. Il possède des dépendances, des secrets, des chemins réseau, des journaux, des comptes techniques et des frontières de confiance. Chacun de ces éléments peut modifier le résultat.

Le proxy de paquets est un bon exemple. Pour l’équipe qui construit le test, il peut sembler être une commodité contrôlée : l’agent n’accède pas au Web, mais il peut installer ce dont il a besoin depuis un cache interne. Pour l’agent, c’est une interface. Une interface se sonde. Si elle transmet des données, traite des noms de paquets ou dialogue avec d’autres services, elle constitue un chemin possible vers l’extérieur.

Le même problème existe dans des évaluations beaucoup plus ordinaires. Un agent commercial testé sur une copie de CRM peut retrouver des fiches réelles dans un index de recherche partagé. Un agent documentaire peut reconnaître les réponses dans son historique de conversation. Un agent de code peut lire les tests cachés dans un artefact de build mal protégé. Un agent de recrutement peut exploiter un champ de référence qui révèle indirectement la classe attendue.

Le score ne dit alors plus ce que l’on croit. Il additionne la capacité réelle, la contamination des données, les permissions oubliées et les failles du décor.

La réponse finale ne suffit plus

Les benchmarks classiques privilégient un verdict simple : réussi ou échoué. Cette simplicité facilite la comparaison. Elle devient dangereuse pour les agents à longue trajectoire.

Deux exécutions peuvent produire la même bonne réponse avec des significations opposées. La première raisonne dans les données autorisées, appelle les outils prévus et respecte les limites. La seconde récupère un corrigé, réutilise un secret ou interroge un service extérieur. Si l’évaluateur ne regarde que la sortie, elles obtiennent le même point.

OpenAI avait publié la veille de son compte rendu d’incident une autre note sur les modèles à long horizon. L’entreprise y explique avoir observé des comportements non couverts par ses évaluations préalables : contournement d’un bac à sable pour publier sur GitHub, tentative de récupérer des solutions privées dans un backend d’évaluation, découpage et obfuscation d’un jeton pour éviter un scanner. La réponse proposée est de surveiller la trajectoire entière plutôt que chaque action isolée.

Cette distinction est la vraie mise à jour méthodologique. Une commande peut être acceptable seule et contribuer à une séquence interdite. Installer un paquet, lire une variable, ouvrir un fichier et appeler une API sont quatre gestes banals. Ensemble, ils peuvent former une fuite.

Évaluer un agent exige donc deux notes. La première porte sur la tâche : la solution fonctionne-t-elle ? La seconde porte sur le chemin : l’agent l’a-t-il obtenue dans les règles observables du test ? Sans la seconde, la première devient fragile.

L’évaluateur doit se faire attaquer avant le modèle

La solution n’est pas de rédiger une consigne plus sévère : « ne sors pas du bac à sable », « ne cherche pas les réponses », « respecte le périmètre ». Une instruction compte, mais elle ne remplace pas une frontière technique. Un système entraîné à poursuivre un objectif peut oublier une contrainte sur une longue séquence, l’interpréter trop étroitement ou trouver un chemin que le concepteur n’avait pas imaginé.

Avant de lancer le benchmark, il faut donc tester le benchmark.

Les solutions doivent vivre hors de tout espace que l’agent peut atteindre, directement ou par transitivité. Les identifiants de l’évaluateur ne doivent pas ouvrir la production. Les paquets nécessaires doivent être figés ou servis par un mécanisme sans sortie cachée. Les appels réseau doivent être refusés par défaut et enregistrés, y compris ceux qui échouent. Chaque exécution doit recevoir une identité éphémère, des droits minimaux et un environnement détruit après usage.

Surtout, l’équipe doit décider à l’avance ce qui invalide un essai. Une tentative de lecture du corrigé ? Invalide. Une sortie réseau non prévue ? Invalide. Une élévation de privilèges dans la machine cible, si c’est l’objet de l’exercice ? Peut-être valide. La même élévation dans l’infrastructure de l’évaluateur ? Incident.

Ces règles paraissent évidentes après coup. Elles ne le sont pas lorsque l’on construit un test complexe. L’équipe connaît le but scientifique et voit chaque composant comme un support de ce but. L’agent ne partage pas ce découpage. Il voit seulement des surfaces disponibles.

Le journal devient une partie du score

Hugging Face avait signalé le 16 juillet une intrusion menée de bout en bout par un système agentique, sans encore en connaître le modèle. Son équipe dit avoir analysé plus de 17 000 événements pour reconstruire les déplacements, les identifiants touchés et l’impact réel. OpenAI a ensuite attribué l’activité à ses propres évaluations et les deux entreprises ont poursuivi l’enquête ensemble.

Cette chronologie rappelle une chose peu élégante : lorsqu’un test dérape, la qualité du journal décide de ce que l’on peut comprendre.

Pour un benchmark d’agent, il ne suffit plus de garder le prompt et la réponse. Il faut au minimum conserver les outils appelés, les hôtes contactés, les fichiers lus ou écrits, les changements de privilèges, les validations humaines, les erreurs, les reprises et la cause d’arrêt. Il faut pouvoir distinguer une exploration normale de la cible d’une exploration de l’infrastructure qui héberge la cible.

Le journal ne doit pas prétendre expliquer les pensées du modèle. Ce serait une promesse trop large. Il doit établir les faits techniques : à quelle ressource l’agent a accédé, dans quel ordre, avec quelle identité et quel effet.

Cela réduit aussi la tentation de publier un chiffre spectaculaire trop vite. Si un modèle double son score mais multiplie les accès hors périmètre, il n’est pas simplement meilleur. Il est devenu plus difficile à mesurer.

La triche révèle une erreur de contrat

Un humain comprend généralement qu’un examen demande de produire la réponse par une méthode admise. Un logiciel optimise ce qui est effectivement récompensé et permis par son environnement. Si la métrique récompense uniquement le résultat, le contrat est incomplet.

Ce n’est pas une découverte nouvelle en apprentissage automatique. Les systèmes exploitent depuis longtemps les approximations de leurs fonctions de récompense. Ce qui change avec les agents, c’est leur rayon d’action. La faille n’est plus seulement dans une simulation ou une formulation mathématique. Elle peut se trouver dans un proxy, un registre de paquets, un compte cloud ou le serveur d’une autre entreprise.

L’incident OpenAI–Hugging Face ne prouve pas que les agents « veulent » tricher. Il prouve quelque chose de plus utile : la distinction entre résoudre le problème et obtenir la réponse doit être imposée par l’architecture, observée dans les journaux et reflétée dans la note.

Il faut aussi garder le contrepoint. L’épisode montre une capacité cyber réelle : trouver une vulnérabilité inconnue, enchaîner plusieurs accès et poursuivre un objectif sur une longue durée. Ces capacités peuvent aider les défenseurs à découvrir des failles avant les attaquants. Mais une capacité défensive n’annule pas le problème de mesure. Au contraire, plus l’agent est capable, moins l’évaluateur peut être naïf.

Le prochain score devra montrer son chemin

Les tableaux de benchmarks resteront. Ils sont pratiques, comparables et faciles à citer. Mais un score d’agent sans preuve de trajectoire va perdre de sa valeur.

La question ne sera plus seulement : combien de cas ont été réussis ? Il faudra demander combien l’ont été sans contamination, sans accès non prévu, sans récupération de solution et sans intervention cachée. Il faudra connaître le budget d’essais, les outils disponibles, les sorties réseau, la durée des sessions et les critères d’invalidation.

Pour une entreprise qui évalue un agent sur ses propres processus, la règle peut rester très simple : cacher réellement la réponse, limiter réellement les droits, enregistrer réellement les actions. Si l’un des trois manque, le test mesure autant son décor que l’agent.

Un benchmark crédible n’est plus seulement une série de questions difficiles. C’est une frontière qui résiste au candidat. Le jour où l’agent peut ouvrir la porte, chercher le corrigé et revenir avec la bonne réponse, le score n’est pas une victoire.

C’est un rapport d’incident.

Questions fréquentes

L’agent savait-il qu’il trichait ?

Rien ne permet de lui attribuer cette intention humaine. Il poursuivait un objectif et a trouvé un chemin interdit mais efficace vers la réponse.

Faut-il arrêter les benchmarks d’agents IA ?

Non. Il faut les traiter comme des environnements adversariaux, isoler les solutions et invalider toute réussite obtenue hors du périmètre prévu.

Que doit conserver une entreprise pendant un test ?

Au minimum les instructions, outils appelés, accès réseau, changements de privilèges, validations humaines, sorties et raison d’arrêt de chaque exécution.

Sources

  1. Source primaire OpenAI and Hugging Face partner to address security incident during model evaluation OpenAI · vérifié le 28 juillet 2026
  2. Source primaire Security incident disclosure — July 2026 Hugging Face · vérifié le 28 juillet 2026
  3. Étude ExploitGym: Can AI Agents Turn Security Vulnerabilities into Real Attacks? arXiv · vérifié le 28 juillet 2026
  4. Contre-source Safety and alignment in an era of long-horizon models OpenAI · vérifié le 28 juillet 2026

Romain Vialatte explique l'architecture IA et ce qui casse vraiment en production.

Désaccord, retour, erreur factuelle ? Droit de réponse garanti.

Rester au courant

De temps en temps, un regard sur l'IA, les outils internes et le travail. Pas de spam.