Qu’est-ce que l’injection de prompt ?
L’injection de prompt est une attaque où des instructions cachées dans un texte lu par un modèle de langage le détournent de sa vraie tâche. Pour les agents de codage, ces instructions peuvent venir d’une page web, d’une issue, d’un document ou de la sortie d’un outil, et pousser l’agent à des actions que vous n’avez jamais demandées.
Injection directe et indirecte
Pour les agents de codage, le vrai risque est l’injection indirecte, car les agents lisent en permanence du contenu extérieur.
- Directe : l’utilisateur dit au modèle d’ignorer ses règles.
- Indirecte : l’instruction est enfouie dans un contenu que le modèle traite, comme un README, un commentaire de code, une issue, une page web ou la réponse d’un outil MCP.
Pourquoi c’est difficile à résoudre
Le modèle voit ses instructions et les données qu’il lit dans le même flux de texte et ne sait pas toujours les distinguer. C’est pourquoi aucune méthode connue n’empêche totalement l’injection de prompt. Le Top 10 de l’OWASP pour les applications de grands modèles de langage la place en première position.
Ce qui peut mal tourner avec les agents
Plus un agent a d’outils et d’accès, plus une injection réussie peut faire de dégâts.
- Fuite de secrets comme des fichiers .env ou des tokens.
- Installation d’un paquet malveillant ou exécution d’une commande destructrice.
- Insertion dans le code d’une porte dérobée difficile à repérer.
- Usage d’un outil MCP pour agir sur un service auquel l’agent a accès.
Les défenses
Aucune mesure ne suffit seule ; l’objectif est de limiter les dégâts même si une attaque passe.
- Moindre privilège : ne donnez à l’agent que les outils et les accès dont la tâche a besoin.
- Exigez toujours une approbation pour les actions destructrices et tout ce qui sort vers l’extérieur.
- Traitez les dépôts et contenus non fiables dans un environnement isolé, comme un conteneur ou une VM.
- N’installez des serveurs MCP que de sources fiables.
- Relisez les modifications de l’agent avant de fusionner.
Les garde-fous dans AgentVera
Dans AgentVera, l’accès des agents à vos serveurs et bases de données est désactivé par défaut, et les actions risquées vous reviennent.
- L’approbation automatique n’approuve que les requêtes sûres comme les lectures et les tests. Les commandes avec redirections (>), $() ou backticks ne sont jamais approuvées automatiquement, et des commandes comme git push et rm vous le demandent toujours (Pro et Team).
- L’accès SSH des agents est désactivé par défaut pour chaque serveur. Une fois activé, les agents ne voient jamais les informations de connexion ni le mot de passe, et chaque requête passe par vos règles et est journalisée (Pro et Team).
- L’accès aux bases de données est aussi désactivé par défaut. Une fois activé, il démarre en lecture seule et chaque requête lancée par un agent est journalisée (Pro et Team).
- Les valeurs secrètes des serveurs MCP sont conservées dans le trousseau de votre système d’exploitation.
- Approbation automatiqueApprouvez sans demander les requêtes sûres de Claude Code ; les risquées vous reviennent toujours.
- SSH et SFTPServeurs enregistrés, coffre SSH chiffré, redirection de ports, transfert de fichiers à deux volets et agents sur le serveur.
- Gestionnaire de base de donnéesTables, éditeur SQL, diagrammes ER et accès des agents pour PostgreSQL, MySQL et SQLite.
FAQ
L’injection de prompt peut-elle être totalement évitée ?
Pas avec une méthode connue aujourd’hui. Vous réduisez le risque en limitant les autorisations, en exigeant une approbation pour les actions critiques et en isolant l’agent.
Mon agent de codage peut-il être attaqué en lisant une page web ?
Oui. Un texte caché sur une page peut ressembler à une instruction pour l’agent. C’est pourquoi un agent qui lit du contenu web ne devrait pas pouvoir lancer de commandes destructrices sans approbation.
Les serveurs MCP sont-ils vulnérables à l’injection de prompt ?
Oui, car les descriptions et les résultats des outils entrent dans le contexte du modèle. Utilisez des serveurs de confiance et soyez prudent avec les outils qui ramènent du contenu extérieur.
Quelle différence entre injection de prompt et jailbreak ?
Un jailbreak, c’est un utilisateur qui tente de contourner les règles de sécurité du modèle. L’injection de prompt, c’est généralement un tiers qui cache des instructions dans un contenu traité par le modèle pour détourner l’application à ses fins.