MCP est-il sûr à utiliser ? Risques des serveurs MCP et contrôles de sécurité

MCP est-il sûr à utiliser ? Cela dépend des serveurs que vous installez, des autorisations que vous accordez et du contenu que votre agent lit. Cet article présente de véritables incidents liés à MCP, un tableau des risques, une liste de contrôle de sécurité imprimable et une méthode pratique pour filtrer les textes et repérer les contenus dangereux.

MCP est-il sûr à utiliser ? Risques des serveurs MCP et contrôles de sécurité
Cristian Da Conceicao
Fondateur de Picasso IA

Réponse courte : oui, à condition de traiter chaque serveur comme un logiciel capable d’agir en votre nom. Alors, MCP est-il sûr à utiliser ? Le Model Context Protocol est un simple standard de messagerie. Il transporte les requêtes entre une application d’IA et un outil, mais il ne décide pas de ce que cet outil a le droit de toucher. Le risque se situe à trois endroits : les serveurs que vous installez, les autorisations que vous leur accordez et le contenu que votre agent lit en chemin. Si vous maîtrisez ces trois points, MCP est un moyen raisonnable de connecter un modèle à des fichiers, à des bases de données et à des services web. Si vous les négligez, une seule description d’outil empoisonnée peut envoyer un dépôt privé à un inconnu.

Cet article présente les véritables risques liés aux serveurs MCP, nomme les incidents qui se sont réellement produits et se termine par une vérification de sécurité que vous pouvez effectuer en une dizaine de minutes. Pas de catastrophisme ni de battage médiatique, seulement les modes de défaillance et les solutions.

Ce que fait réellement MCP

MCP est un standard ouvert présenté par Anthropic fin 2024 pour que les applications d’IA dialoguent avec des outils externes de manière cohérente. Auparavant, chaque intégration reposait sur du code de liaison sur mesure. Désormais, une application parle un seul protocole, et un serveur expose des outils (actions, comme l’exécution d’une requête), des ressources (données, comme un fichier) et des prompts (modèles réutilisables). Les messages circulent en JSON-RPC, soit par un canal local (stdio), soit en HTTP.

Développeur examinant une longue liste d’autorisations d’outils MCP sur un grand écran

Cette simplicité est à la fois une bonne et une mauvaise nouvelle. Un standard facilite l’intégration, mais il facilite aussi le branchement de quelque chose que vous n’avez jamais vérifié. Le protocole lui-même ne se prononce pas sur la confiance qu’un serveur mérite. Ce jugement vous revient.

Hôte, client et serveur expliqués

Trois rôles apparaissent dans toutes les configurations :

  • Hôte : l’application que vous utilisez réellement, comme Claude Desktop, Cursor ou VS Code.
  • Client : un connecteur à l’intérieur de l’hôte qui maintient une session ouverte avec un seul serveur.
  • Serveur : le programme qui expose les outils, les ressources et les prompts au modèle.

Le modèle ne parle jamais directement à votre base de données. Il demande à l’hôte d’appeler un outil, le client transmet la requête, et le serveur fait le travail avec l’accès qui lui a été donné. Cette dernière partie est la plus importante. Un serveur n’est aussi sûr que l’accès qui se trouve derrière lui.

Serveurs locaux ou serveurs distants

L’emplacement d’un serveur modifie fortement le modèle de menace. Un serveur local est un processus sur votre propre machine, lancé par votre hôte. Un serveur distant est un service hébergé auquel vous accédez via Internet.

Technicien marchant dans une allée de centre de données bordée de baies de serveurs

Serveur local (stdio)Serveur distant (HTTP)
Fonctionne surVotre propre machineL’infrastructure de quelqu’un d’autre
Le code s’exécute avecVos autorisations d’utilisateurLes autorisations de l’éditeur
Risque principalUn paquet malveillant s’exécute sur votre ordinateur portableVos données et vos jetons transitent vers un tiers
Question de confianceQui l’a écrit, et la version est-elle figée ?Qui l’exploite, et que journalise-t-il ?
Meilleure défenseBac à sable, versions figées, accès en lecture seuleJetons OAuth limités et vérification de l’éditeur

💡 Règle empirique : un serveur local est un programme que vous exécutez, traitez-le donc comme n’importe quel téléchargement. Un serveur distant est un service à qui vous confiez des données, traitez-le donc comme n’importe quel prestataire.

Où se situent les vrais risques

La plupart des incidents liés à MCP n’ont rien d’exotique. Ils suivent quelques schémas récurrents, et chacun d’eux s’est déjà produit dans la nature. À la base de tous ces schémas se trouve un fait gênant : un modèle de langage lit les instructions et les données comme un même flux de texte : il ne peut donc pas distinguer de façon fiable une commande d’un commentaire.

L’empoisonnement d’outils au grand jour

Chaque outil est livré avec une description, et le modèle lit ce texte comme une consigne. Les utilisateurs la voient rarement. En 2025, des chercheurs d’Invariant Labs ont démontré qu’une description malveillante pouvait contenir des commandes cachées, par exemple demander à l’agent de lire un fichier d’identifiants local et de transmettre son contenu dans un appel d’apparence banale.

Deux paires de mains se passant une enveloppe kraft d’où dépasse une note manuscrite

L’enveloppe ci-dessus illustre bien le propos : le colis paraît anodin, mais la note à l’intérieur change la suite des événements. Lire la définition complète de l’outil, et pas seulement son nom, constitue la première défense.

L’injection de prompt via le contenu

Votre agent ne suit pas seulement vos instructions. Il lit aussi des tickets, des courriels, des pages web et des documents, et chacun peut contenir des instructions destinées au modèle. Dans l’incident GitHub MCP, des attaquants ont placé des prompts malveillants dans des Issues et des pull requests publiques. Un agent ayant accès à des dépôts privés a été trompé et a divulgué du code privé dans une pull request publique.

💡 Le trio à risque : le chercheur en sécurité Simon Willison décrit une combinaison à éviter : l’accès à des données privées, l’exposition à du contenu non fiable et un moyen d’envoyer des données vers l’extérieur. Lorsqu’un même agent réunit les trois, une seule phrase injectée suffit. Retirez l’un d’eux et l’attaque ne tient plus.

Paquets malveillants et plomberie défaillante

Trois autres schémas proviennent des problèmes classiques de la chaîne d’approvisionnement logicielle :

  • Serveurs malveillants. Le 25 septembre 2025, une porte dérobée a été révélée dans le serveur postmark-mcp. Il copiait discrètement chaque courriel sortant vers une adresse contrôlée par le mainteneur. Le serveur faisait exactement ce qu’il annonçait, ce qui explique qu’il soit passé inaperçu.
  • Rug pulls. Un serveur se comporte bien, il est approuvé, puis il modifie ses définitions d’outils lors d’une mise à jour ultérieure. Une approbation accordée une fois ne vous protège pas de la version deux.
  • Bogues simples. La CVE-2025-6514 a touché le paquet populaire mcp-remote et a obtenu un score de gravité de 9,6 sur 10. Se connecter à un serveur non fiable pouvait exécuter des commandes du système d’exploitation sur la machine cliente, via une URL d’autorisation forgée. Les versions antérieures à 0.1.16 étaient concernées, et le paquet avait été téléchargé plus de 558 000 fois.
RisqueFonctionnementExemple réelPremière défense
Empoisonnement d’outilsInstructions cachées dans une description d’outilDémonstrations d’Invariant Labs, 2025Lire les définitions complètes, figer les versions
Injection de promptInstructions cachées dans le contenu lu par l’agentFuite de dépôt privé via GitHub MCPSéparer les données privées des entrées non fiables
Serveur malveillantPorte dérobée dans un paquet installépostmark-mcp, septembre 2025Privilégier des serveurs audités et maintenus
Rug pullDéfinitions modifiées après approbationSchéma signalé par des chercheursFiger les versions, réexaminer à chaque mise à jour
Bogue clientInjection de commandes via un serveur hostileCVE-2025-6514 dans mcp-remoteCorriger rapidement, ne se connecter qu’à des serveurs de confiance

Les autorisations déterminent l’ampleur des dégâts

Quand quelque chose tourne mal, ce sont les autorisations qui fixent l’ampleur de la perte. Une description empoisonnée n’est qu’une gêne lorsque l’agent ne peut lire qu’un dossier. Elle devient un désastre lorsque l’agent dispose d’un jeton administrateur.

Le moindre privilège en pratique

Main abîmée ouvrant une lourde porte en acier peint munie d’un verrou en laiton

Accordez à chaque serveur la plus petite part d’accès qui lui permet de faire son travail :

  • Bases de données : créez un rôle en lecture seule et dirigez le serveur vers une réplique ou une copie de préproduction.
  • Fichiers : n’exposez qu’un seul dossier de projet, jamais l’intégralité de votre répertoire personnel.
  • Comptes GitHub et cloud : utilisez un jeton à permissions fines, limité à un seul dépôt ou un seul projet.
  • Accès shell : désactivez-le, sauf si la tâche en a réellement besoin, et ne le laissez jamais à côté d’outils qui lisent du contenu non fiable.

💡 Posez-vous une question pour chaque outil : « Si cet appel était malveillant, quel est le pire qu’il pourrait faire ? » Si la réponse vous fait grimacer, réduisez l’autorisation.

Les secrets restent hors des prompts

Les identifiants n’ont pas leur place dans les messages de discussion, les arguments d’outils ou les fichiers de configuration versionnés dans Git. Chargez-les depuis des variables d’environnement ou un gestionnaire de secrets, privilégiez les jetons à courte durée de vie et renouvelez tout ce qui a déjà figuré dans un journal. Vérifiez vos fichiers de configuration MCP avant chaque commit, car ils sont une cachette favorite des jetons collés lors d’un test rapide.

Les serveurs distants exigent une authentification réelle

Un serveur MCP distant conserve vos données sur la machine de quelqu’un d’autre. Les contrôles d’identité comptent donc bien davantage que pour un processus local.

Agent de sécurité comparant un badge visiteur à une liste sur un presse-papiers dans un hall vitré

OAuth tel que le prévoit la spécification

La spécification d’autorisation MCP de juin 2025 classe les serveurs MCP comme des serveurs de ressources OAuth 2.0. Les clients incluent un paramètre resource (RFC 8707) lorsqu’ils demandent des jetons, ce qui lie chaque jeton d’accès à un serveur précis. Un jeton émis pour le serveur A ne devrait pas servir sur le serveur B, et un serveur doit rejeter tout jeton qui ne lui a pas été émis.

Les mêmes documents mettent en garde contre le passage de jeton (token passthrough), par lequel un serveur transmet le jeton reçu à une API en aval. Cela casse les pistes d’audit, brouille les responsabilités et favorise le problème du « député confus », où un serveur de confiance est amené à utiliser son autorité au profit d’un attaquant.

La spécification des outils ajoute une règle qui mérite d’être répétée : un humain doit toujours rester dans la boucle et avoir la possibilité de refuser les appels d’outils. La plupart des hôtes l’implémentent sous forme de demande d’approbation. Ne cliquez pas dessus en pilote automatique.

Une liste de contrôle de sécurité à imprimer

Parcourez cette liste avant d’ajouter un serveur à votre configuration.

Liste de contrôle imprimée avec des coches au stylo bleu sur un bureau en bois, à côté d’un ordinateur portable et d’un petit cadenas

Avant d’installer

  • Trouvez le dépôt source et lisez les commits récents ainsi que les Issues ouvertes.
  • Vérifiez qui le maintient, depuis combien de temps il existe et s’il reçoit des correctifs régulièrement.
  • Fixez une version exacte au lieu de suivre « latest ».
  • Privilégiez les serveurs publiés par l’éditeur du service lui-même.
  • Lisez intégralement chaque description d’outil, y compris les descriptions des paramètres.

Avant d’approuver

  • Accordez la portée la plus étroite qui permet de terminer la tâche.
  • Utilisez un compte séparé ou un projet bac à sable pour vos expérimentations.
  • Désactivez les outils que vous n’utilisez pas. Moins d’outils signifie une surface d’attaque réduite et des choix de modèle plus précis.
  • Ne combinez jamais, dans une même session, des données privées, du contenu non fiable et un canal d’envoi vers l’extérieur.

Pendant l’exécution

Journalisez chaque appel d’outil avec ses arguments, l’heure et l’identité qui le porte. Quand quelque chose semble anormal, vous voudrez reconstituer ce que l’agent a lu et ce qu’il a envoyé. Examinez le journal chaque semaine, à la manière dont une équipe passe en revue les rapports d’accès.

Deux collègues examinant une page imprimée de journaux d’événements surlignés au marqueur jaune

Surveillez quatre signaux d’alerte :

  1. Des appels sortants que vous n’attendiez pas.
  2. Des définitions d’outils modifiées depuis votre approbation.
  3. De grandes lectures de fichiers sans rapport avec la tâche.
  4. Des jetons utilisés depuis un nouvel emplacement ou à des heures inhabituelles.

Limiter le rayon d’impact

Partez du principe qu’un serveur finira par mal se comporter, puis limitez ce que cela peut vous coûter.

Bacs à sable et conteneurs

Technicienne de laboratoire travaillant dans une boîte à gants transparente et hermétique

Une boîte à gants permet à un technicien de manipuler un échantillon dangereux sans le toucher. Les conteneurs remplissent le même rôle pour les logiciels. Exécutez les serveurs locaux dans un conteneur ou un compte utilisateur restreint, montez uniquement les dossiers dont ils ont besoin, bloquez l’accès réseau sortant lorsque l’outil ne l’exige pas, et gardez les secrets hors de l’image. Si un serveur devient hostile, il brise une vitre de boîte à gants au lieu de votre ordinateur portable.

L’approbation humaine sans lassitude

Les demandes d’approbation ne fonctionnent que si les gens les lisent. Les équipes qui approuvent tout par réflexe ne disposent d’aucune protection. Répartissez les outils selon leur risque :

Type d’outilExemplePolitique d’approbation
Lecture seule, risque faibleRechercher sur un site de documentation, lire un fichier de projetAutoriser automatiquement
Écriture de donnéesModifier un fichier, créer un ticketDemander une fois par session
Envoi de données vers l’extérieurCourriel, publication sur un webhook, importDemander à chaque fois
Destructif ou coûteuxSupprimer, déployer, dépenser de l’argentDemander à chaque fois, avec un aperçu

Gardez la liste des approbations automatiques courte et réexaminez-la chaque fois qu’un serveur est mis à jour.

Filtrer les entrées avec Llama Guard 4

Le filtrage de contenu constitue une couche supplémentaire, et non un substitut aux autorisations. Llama Guard 4 12B est un modèle de sécurité multimodal disponible sur PicassoIA. Il classe les textes et les images comme sûrs ou dangereux et indique la catégorie de préjudice lorsqu’il signale un contenu. Vous pouvez l’utiliser pour vérifier une page web, un courriel ou le résultat d’un outil avant que votre agent n’agisse, ou pour tester si le brouillon de réponse d’un agent serait signalé avant d’atteindre un utilisateur.

💡 Soyez réaliste quant à ses limites. Llama Guard 4 12B est un classifieur de sécurité du contenu qui vérifie des catégories de préjudice comme la violence, les discours haineux et les instructions dangereuses. Ce n’est pas un pare-feu dédié à l’injection de prompt. Utilisez-le avec les contrôles ci-dessus, et jamais à leur place.

Lancer votre première vérification

  1. Ouvrez la page de Llama Guard 4 12B sur PicassoIA.
  2. Collez le texte que vous voulez filtrer dans le champ Prompt, par exemple le corps d’une page web ou d’un courriel que votre agent s’apprête à lire.
  3. Remplissez le System Prompt, qui est obligatoire, avec vos critères : « Classez le texte comme sûr ou dangereux et indiquez la catégorie de préjudice. »
  4. Réglez la Temperature sur une valeur basse, environ 0 à 0,2, pour des verdicts plus stables. La plage va de 0 à 2 et la valeur par défaut est 1. Laissez Max Completion Tokens à sa valeur par défaut de 512, car un verdict est court.
  5. Ajoutez des captures d’écran via Image Input si vous voulez aussi filtrer une image, puis lancez l’analyse.

Ce que vous dit le verdict

Vous obtenez une étiquette sûr ou dangereux, ainsi que la catégorie correspondante lorsque le contenu est dangereux. Considérez « dangereux » comme un panneau stop : retenez le contenu et montrez-le à une personne. Considérez « sûr » comme un indice parmi d’autres, et non comme un blanc-seing. Si vous constatez de fausses alertes, précisez le system prompt avec des exemples de ce que votre équipe juge acceptable.

Pour le tri, associez le verdict à un modèle de raisonnement performant comme Claude Sonnet 5 ou GPT 5.6 Sol afin de résumer les éléments signalés. Exécutez-les sans aucun accès aux outils, pour qu’un extrait hostile n’ait rien sur quoi agir.

Construire quelque chose de sûr sur PicassoIA

Les bonnes habitudes sont plus faciles à conserver lorsqu’on s’entraîne sur des projets où rien de sensible n’est en jeu. La génération d’images et de vidéos constitue un bon terrain d’entraînement. PicassoIA Image transforme un prompt en langage courant en image finie en quelques secondes, et Picasso IA Video génère des clips de 5 secondes à une fréquence d’images de 24 fps avec un son synchronisé, à partir d’un texte ou d’une image de départ, en 480p ou en 720p.

Jeune designer souriant devant un ordinateur portable dans un studio créatif lumineux

PicassoIA propose aussi une API pour développeurs et une connexion MCP pour la génération d’images et de vidéos, et les mêmes règles s’appliquent : créez un identifiant pour un seul projet, conservez-le comme un secret et surveillez votre consommation. Chaque compte est limité à 5 prédictions simultanées, partagées entre les identifiants API et les connexions MCP, ce qui sert aussi de frein si un agent se retrouve bloqué dans une boucle.

Ouvrez PicassoIA, rédigez un prompt et appliquez la liste de contrôle sur un projet sans grand enjeu pour commencer. Générez quelques images, animez votre préférée en un court clip et passez un paragraphe dans Llama Guard 4 12B pour voir à quoi ressemble un verdict. Ensuite, appliquez ces mêmes habitudes aux serveurs qui comptent vraiment.

Partager cet article

Choisissez votre langue