Une prépublication du 9 octobre 2026, signée par six chercheurs, explore comment un modèle de langage peut être amené à exécuter un appel d’outil non autorisé. Le scénario, baptisé Repeat‑After‑Me, montre que le texte généré par le modèle peut être transformé en une instruction d’exécution réelle lorsqu’il est traité par l’orchestrateur d’outils.
De la répétition à l’exécution
Dans la configuration étudiée, le modèle produit le nom d’un outil et ses paramètres sous forme structurée. Un hook intégré à l’orchestrateur reconnaît ce format et lance l’appel. Lors du premier essai, le modèle refuse la requête et ne fait qu’afficher l’appel en texte libre ; rien n’est exécuté. Au deuxième tour, l’attaquant reformule la même demande comme « hypothétique » et impose au modèle de ne renvoyer que la chaîne d’appel. Le modèle répond alors par un message vide accompagné de l’appel structuré à launch_missiles. Le nœud d’exécution d’outils de LangGraph (ToolNode) le lance immédiatement, le refus n’apparaissant qu’après le retour de l’outil. Les chercheurs concluent que « la consigne système a façonné ce que le modèle disait, pas ce que l’orchestrateur faisait ».
Une démonstration sur LangGraph
L’annexe B du préprint décrit le montage : LangGraph 1.2.0, son ToolNode, le modèle Llama 3.1 8 B servi par Ollama à TempératureParamètre contrôlant le degré d'aléatoire lors de la sélection des tokens générés par un modèle. nulle, et deux outils factices (make_bomb et launch_missiles) qui renvoient des listes figées. La seule protection initiale est une consigne système demandant de refuser toute requête dangereuse. Le test montre que, même avec cette consigne, l’orchestrateur peut exécuter l’appel si le modèle le fournit sous forme structurée.
253 failles dans des serveurs MCP
La seconde partie du travail s’appuie sur le protocole MCPProtocole ouvert permettant de connecter des applications d'intelligence artificielle à des outils et à des sources de données externes. (Model Context Protocol) qui expose aux modèles la description des outils et le sens de chaque argument. En partant de ces métadonnées, les chercheurs ont généré des entrées adverses et ont exécuté 273 serveurs Python ou JavaScript (3 405 outils au total). Après élimination des doublons, ils ont confirmé 253 bugs reproductibles dans 118 serveurs open source.
Les défauts les plus fréquents :
- sorties qui reproduisent l’entrée sans l’échapper, facilitant des injections ;
- traversées de chemin permettant l’accès à des fichiers hors périmètre (ex.
../../etc/passwd) ; - injections dans les journaux, exfiltrations réseau et trois cas d’injection de commandes système.
Ces vulnérabilités peuvent se manifester sans plantage, échappant ainsi aux tests qui ne surveillent que les arrêts du programme. Les auteurs ont observé des suppressions de fichiers, des accès à des répertoires non prévus et la fermeture de sessions de terminal appartenant à d’autres outils.
Points d’interception et réglages par défaut
Un ticket ouvert le 4 septembre 2026 (ticket #8817) par le premier auteur, Nazmul Islam Ananto, réclame un point d’interception documenté avant l’exécution ou un avertissement explicite sur le comportement du nœud d’outils. À la date du 16 octobre 2026, le ticket reste ouvert.
Des mécanismes d’interception existent déjà : le paramètre optionnel wrap_tool_call du package langgraph-prebuilt 1.1.0 peut bloquer un appel, et CrewAI propose un hook similaire. Cependant, ces options doivent être activées explicitement ; le code utilisé dans la démonstration emploie un nœud maison qui exécute les appels sans filtre.
Implications pratiques pour les équipes d’agents IA
Le message principal pour les développeurs est clair : l’autorisation doit être vérifiée au niveau de l’outil et de ses arguments, indépendamment du texte produit par le modèle. Les contrôles fournis par les frameworks offrent un point d’interception, mais les outils eux‑mêmes doivent valider les chemins d’accès, les destinations réseau et les opérations autorisées. Un appel conforme au schéma peut tout de même demander une action non autorisée pour l’utilisateur.
La version 1 de ToFu teste les appels d’outil individuellement ; elle ne couvre pas les séquences d’actions dépendant d’un état, les interactions entre plusieurs agents, ni les défauts qui n’ont pas d’effet observable immédiat.
Conclusion
Cette recherche met en lumière une faiblesse structurelle des orchestrateurs d’outils LLMUn grand modèle de langage apprend des régularités dans des textes pour produire ou transformer du langage. Il ne constitue pas une base de faits garantie. : le modèle peut être manipulé pour produire un appel exécutable, et l’orchestrateur peut le lancer sans contrôle supplémentaire. Les 253 failles identifiées dans les serveurs MCP montrent que le problème est répandu dans l’écosystème open source. Les développeurs doivent activer les paramètres d’interception disponibles et implémenter des validations strictes au niveau de chaque outil pour éviter que des arguments apparemment innocents ne deviennent vecteurs d’attaque.
Source : prépublication du 9 octobre 2026, ActuIA.
