RCE by design : le choix architectural MCP hante l’écosystème des agents IA

Lucas Morel

Les valeurs par défaut dangereuses dans les configurations MCP ouvrent les serveurs à une éventuelle exécution de code à distance, comme en témoignent plusieurs services commerciaux et projets open source.

Les outils de création d’agents IA permettent aux utilisateurs de configurer les serveurs MCP (Model Context Protocol) susceptibles d’exposer les systèmes à l’exécution de code à distance en raison d’une décision architecturale dans l’implémentation de référence d’Anthropic.

Le problème concerne les valeurs par défaut dangereuses dans la façon dont la configuration MCP fonctionne sur l’interface STDIO, avec de larges implications pour l’écosystème d’agents, selon un nouveau rapport.

« Le rayon d’explosion est énorme », ont écrit des chercheurs de la société de sécurité des applications OX Security dans leur rapport sur le problème de conception. « Cet exploit nous a permis d’exécuter directement des commandes sur six services officiels de véritables entreprises avec de vrais clients payants, et de prendre le contrôle de milliers de serveurs publics couvrant plus de 200 projets GitHub open source populaires avec des centaines de millions de téléchargements. »

Selon Anthropic et d’autres développeurs d’adaptateurs MCP, le comportement d’exécution des commandes STDIO est inhérent à la conception et la responsabilité de nettoyer les configurations MCP incombe aux développeurs d’applications clientes. Bien que cela puisse être vrai, en pratique, OX Security a constaté que peu de développeurs ont tenté de filtrer les commandes dans les configurations MCP et que même ceux qui l’ont fait n’ont pas réussi à détecter tous les contournements potentiels.

La racine du problème

MCP fournit une méthode standardisée permettant aux applications d’exposer des sources de données et des outils aux LLM, améliorant ainsi leur contexte et leur efficacité dans l’exécution des flux de travail automatisés. Développé à l’origine par Anthropic, MCP est devenu une technologie largement adoptée dans le domaine de l’IA agentique.

Anthropic fournit des implémentations MCP de référence sous la forme de SDK pour une variété de langages de programmation, notamment TypeScript, Python, Java, Kotlin, C#, Go, PHP, Ruby, Rust et Swift. En outre, d’autres frameworks et fournisseurs de fonctionnalités – tels que FastMCP, les adaptateurs mcp de LangChain, le framework d’agent de Microsoft, l’agent mcp, l’utilisation du navigateur, les serveurs run-model-context-protocol-servers-with-aws-lambda d’Amazon et NeMo-Agent-Toolkit de NVIDIA – ont l’implémentation de référence de modelcontextprotocol d’Anthropic comme dépendance.

MCP prend en charge deux interfaces de transport entre les serveurs et les clients : Streamable HTTP with Server-Sent Events (SSE), qui est généralement utilisé pour les serveurs MCP et les services Web distants, et Standard Input/Output (STDIO), pour les serveurs et applications MCP qui s’exécutent localement sur la même machine.

Avec STDIO, les applications clientes peuvent démarrer des serveurs MCP à la demande en tant que sous-processus et leur transmettre des paramètres. Ces paramètres peuvent inclure des commandes personnalisées qui sont exécutées sur le système avec les autorisations du processus parent. Bien qu’en théorie ces commandes soient destinées à indiquer à la fonction StdioServerParameters du SDK comment démarrer le serveur MCP, elles peuvent techniquement être n’importe quoi si aucun filtrage n’est en place.

Les chercheurs d’OX Security considèrent qu’il s’agit d’un défaut de conception qui devrait être atténué, mais Anthropic n’est pas d’accord, tout comme les créateurs d’autres frameworks qui activent la fonctionnalité MCP, tels que LangChain et FastMCP. L’argument est que la responsabilité de s’assurer que les entrées utilisateur malveillantes n’atteignent pas la fonction d’exécution des commandes du SDK incombe aux développeurs des applications clientes qui intègrent ces frameworks MCP.

« Le modèle permettant aux chaînes fournies par l’utilisateur de circuler directement dans un environnement d’exécution de shell est un anti-modèle qui devrait être obsolète », ont déclaré les chercheurs d’OX Security. Les SDK d’Anthropic devraient implémenter par défaut une liste d’autorisation de commandes qui bloque sh, bash, powershell, curl, rmet d’autres binaires à haut risque, ont-ils ajouté.

Le problème principal est qu’il n’existe actuellement aucun contrôle permettant de vérifier qu’une commande STDIO est destinée à initialiser un serveur MCP plutôt qu’à effectuer une tâche malveillante. De plus, les chercheurs ont observé que même si la commande envoyée ne parvient pas à démarrer le serveur, le SDK renvoie une erreur une fois la commande exécutée.

Tous les IDE modernes tels que VS Code, Cursor et Windsurf, ainsi que les CLI de codage agent comme Claude Code, OpenAI Codex et Gemini CLI, disposent d’une prise en charge intégrée des serveurs MCP locaux via STDIO. Mais il en va de même pour d’innombrables autres frameworks d’IA agentique et outils open source, et peu d’entre eux implémentent les listes d’autorisation de commandes STDIO.

RCE dans les applications du monde réel

Les chercheurs d’OX Security ont passé les derniers mois à tester la prise en charge de MCP dans de nombreux outils, y compris les services de production en direct. Ils ont trouvé et signalé plus de 30 problèmes RCE découlant de cette décision de conception STDIO sur plusieurs projets et 10 ont reçu des identifiants CVE jusqu’à présent.

Selon la manière dont un outil implémente la prise en charge MCP et la manière dont il accepte les entrées de l’utilisateur, plusieurs vecteurs d’attaque exploitent l’absence de filtrage des commandes STDIO.

Par exemple, certains services et outils n’ont pas désactivé STDIO en interne même si leurs interfaces utilisateur permettent uniquement de configurer des serveurs MCP avec Streamable HTTP. Ce fut le cas de Letta AI et DocsGPT, deux plateformes qui permettent aux entreprises de créer des agents IA via des services cloud et des déploiements locaux.

« Un attaquant créant une requête réseau pour une configuration de serveur MCP et modifiant le type de transport dans le JSON configuré pour contenir un type STDIO au lieu de SSE ou HTTP, ajoutant également une commande arbitraire à la charge utile de la requête, peut réaliser l’exécution de commandes à distance », ont déclaré les chercheurs.

Un autre vecteur d’attaque est l’injection rapide conduisant à des configurations MCP malveillantes. Bien que tous les IDE soient techniquement vulnérables à cela (les sites Web peuvent contenir des instructions cachées permettant aux agents LLM de modifier les fichiers locaux), la plupart des IDE invitent les utilisateurs avant d’apporter des modifications aux fichiers de configuration MCP. L’exception était Windsurf, qui modifiait directement la configuration MCP par défaut, entraînant une attaque par injection de commande sans interaction.

De nombreux autres outils n’appliquent pas de filtrage aux paramètres MCP STDIO, ce qui signifie que tout utilisateur ayant accès à la configuration d’un serveur MCP obtient l’exécution de code sur le serveur sous-jacent, y compris les serveurs de production dans le cas de déploiements SaaS. Les outils jugés vulnérables à cela incluent LangFlow, GPT Researcher, LiteLLM, Agent Zero, LangBot, Fay Digital Human Framework, Bisheng, Jaaz, Langchain-Chatchat et plusieurs autres que les chercheurs ne sont pas encore en mesure de divulguer.

Certains développeurs étaient conscients du problème et ont tenté de renforcer leurs implémentations avec la liste blanche des commandes. Cependant, le durcissement était insuffisant et les chercheurs d’OX Security ont trouvé de simples contournements.

Par exemple, Upsonic, un framework open source pour la création d’agents IA, implémente une liste verte qui inclut npxqui prend en charge -c (—call), un indicateur qui permet de transmettre des commandes personnalisées et des scripts shell pour npx à exécuter. Le même contournement a été observé dans Flowise, un autre cadre de création d’agents IA basé sur l’interface utilisateur qui restreint également les commandes de configuration MCP mais autorise npx.

Anthropic (modelcontextprotocol), LangChain (langchain-mcp-adapters), FastMCP, le projet d’utilisation du navigateur, AWS (run-model-context-protocol-servers-with-aws-lambda), NVIDIA (NeMo-Agent-Toolkit), OpenHands, PromptFoo, Firebase Studio, Gemini CLI, Claude Code, GitHub Copilot et Cursor incluent techniquement le code MCP STDIO qui permet une commande arbitraire exécution.

Leurs responsables considèrent le comportement prévu de l’exécution de la commande ou ont refusé de le corriger car il est atténué par d’autres contrôles tels que des modifications nécessitant une interaction de l’utilisateur ou l’exécution de la commande se déroulant dans des environnements en bac à sable tels que les conteneurs Docker.

Voir aussi :

  • Ce que les RSSI doivent savoir sur les nouveaux outils de sécurisation des serveurs MCP
  • Top 10 des vulnérabilités MCP : les risques cachés des intégrations d’IA
  • 6 façons dont les attaquants abusent des services d’IA pour pirater votre entreprise
Intelligence artificielleDéveloppement de logicielsSécurité des applicationsSécurité