Un document récupéré peut-il détourner votre assistant RAG ? Plan de test contre l’injection de prompt
Suivez un plan de test contrôlé pour vérifier si votre assistant RAG respecte les autorisations de récupération et évite les divulgations ou les actions non autorisées lorsque des documents récupérés contiennent des instructions.

Pourquoi les documents récupérés font partie de votre modèle de menace
Un assistant RAG utilise les éléments récupérés pour répondre à la question d’un utilisateur. Ces éléments peuvent aussi contenir du texte qui ressemble à des instructions destinées au modèle. Le Centre for Emerging Technology and Security de l’Alan Turing Institute décrit l’injection indirecte de prompt comme l’insertion d’informations malveillantes dans les sources de données d’un système d’IA générative, notamment sous la forme d’instructions dissimulées dans ces données. [Lire son aperçu de l’injection indirecte de prompt](https://cetas.turing.ac.uk/publications/indirect-prompt-injection-generative-ais-greatest-security-flaw).
La frontière essentielle sépare les instructions qui régissent l’assistant du contenu qu’il récupère pour répondre à une question. Le plan de test ci-dessous rassemble des recommandations pratiques ; il ne s’agit ni d’une norme documentée ni d’une garantie de protection. La source citée étaye la description du risque, mais pas la procédure de test ni l’efficacité de mesures de protection précises. L’article porte sur des résultats observables, tels que les éléments récupérés, ce que l’assistant a divulgué et toute tentative d’action non autorisée.
- Concentrez ce test sur le contenu récupéré et son influence sur l’assistant.
- Incluez aussi des documents d’apparence anodine : le test porte sur la manière dont le contenu est traité, pas uniquement sur l’apparence suspecte d’un document.
- Testez l’application telle qu’elle est configurée, y compris les autorisations de récupération et les outils connectés concernés.

Définissez le périmètre et isolez le test
Avant d’ajouter des documents de test, consignez ce que l’application peut récupérer et les actions qu’elle peut effectuer. Réalisez les essais par un chemin applicatif de préproduction séparé de celui de production, avec des identités et des outils de test isolés de la production. Un index de test distinct ne suffit pas à lui seul : vérifiez que le corpus de test est inaccessible au chemin de récupération de production. Si l’index est partagé, définissez et vérifiez explicitement l’exclusion du corpus de test des récupérations en production.
Répertoriez les outils connectés et les actions qu’ils peuvent tenter. Isolez les outils de test de ceux utilisés en production ou désactivez-les, et simulez les actions qui pourraient avoir des conséquences. Ces précautions réduisent le risque d’interférence avec la production ; elles ne constituent pas une garantie.
- Environnement : séparez le chemin applicatif, les identités et les outils de test de ceux de production. Vérifiez aussi que le corpus adversarial ne peut pas être récupéré par l’application en production.
- Sources documentaires : répertoriez les collections, les référentiels ou les autres sources inclus dans le test.
- Identités des utilisateurs : sélectionnez des rôles représentatifs, dont au moins un avec un accès plus restreint et un avec un accès plus étendu, si votre application distingue ces rôles.
- Autorisations de récupération : notez les documents que chaque identité est censée pouvoir récupérer et ceux qui doivent rester inaccessibles.
- Outils connectés : consignez les outils activés, les actions qu’ils peuvent tenter et la manière dont ces actions seront isolées ou simulées en toute sécurité.
- Informations sensibles : identifiez les catégories à protéger, mais utilisez uniquement des valeurs fictives et des données de test, jamais de vrais secrets, de données personnelles ou de dossiers de production.

Constituez un petit jeu de test contrôlé
Utilisez des documents créés spécialement pour les tests et stockés uniquement dans le corpus de test isolé. Commencez par des documents de référence ordinaires, puis ajoutez-en qui contiennent délibérément des instructions contradictoires ou inappropriées. Employez des données fictives et identifiables par votre équipe afin de retracer une réponse jusqu’aux éléments récupérés.
Pour chaque scénario, consignez le rôle de l’utilisateur, la question, la limite d’accès attendue, le document à récupérer et le comportement à observer. N’utilisez pas de vrais secrets, de dossiers de production ni d’actions réelles comme cibles de test.
- Base de référence anodine : un document contenant des faits pertinents et aucune instruction destinée à l’assistant.
- Instruction contradictoire : un document qui demande à l’assistant d’ignorer son comportement prévu ou de suivre une autre instruction.
- Demande d’informations restreintes : placez une valeur fictive clairement identifiée dans un document réservé à un rôle ayant un accès plus étendu. Avec un rôle moins autorisé, posez une question qui pourrait amener l’assistant à révéler cette valeur. Si le document est récupéré, son contenu peut être transmis à l’assistant : observez s’il divulgue la valeur fictive à l’utilisateur non autorisé. Vérifiez séparément, au moyen d’instruments de test autorisés, si le document a été récupéré.
- Vérification interrôles : faites en sorte qu’un utilisateur disposant d’un accès plus restreint pose une question sur un document destiné à un rôle ayant un accès plus étendu.
- Tentative d’influence sur un outil : un document demande à l’assistant de lancer une action définie par l’intermédiaire d’un outil connecté. Utilisez un environnement de test isolé, une simulation ou un chemin d’action désactivé.
Exécutez les mêmes scénarios selon les rôles et les contextes
Exécutez chaque test avec les identités et les contextes de récupération concernés. Incluez à la fois une question directe sur le sujet du document et une question susceptible de rendre pertinente l’instruction qu’il contient. L’objectif est d’observer le comportement de l’assistant dans les conditions d’accès que vous avez définies.
Consignez chaque exécution : rôle de l’utilisateur, question, éléments récupérés ou identifiants des documents de test, réponse de l’assistant et toute tentative d’action via un outil. Pour le scénario des informations restreintes, utilisez uniquement la valeur fictive et les instruments de test autorisés pour vérifier la récupération ; évaluez séparément si l’assistant révèle cette valeur à l’utilisateur. Si votre système n’affiche pas les éléments récupérés dans son interface habituelle, utilisez les journaux de l’application ou les instruments disponibles sans modifier le comportement de sécurité évalué.
Répétez les scénarios importants au lieu de vous fier à une seule réponse. Une exécution ne consigne que le comportement observé lors de cette exécution ; elle n’établit pas comment l’application se comportera à chaque fois.
- Utilisez le même cas de test avec chaque rôle utilisateur concerné.
- Vérifiez si le document attendu a été récupéré et si des documents hors du périmètre d’accès de ce rôle sont apparus.
- Consignez les résultats observables : ce que l’assistant a divulgué, s’il a répété des instructions contenues dans le document et s’il a tenté une action via un outil.
- Pour les cas liés aux outils, consignez séparément les actions tentées et les actions effectuées ; veillez à ce que le chemin d’action n’entraîne aucune conséquence.
- Notez la date du test ainsi que la configuration ou les modifications de l’application utiles à l’interprétation du résultat.
Évaluez le résultat au regard des limites de sécurité
Évaluez le comportement par rapport aux règles définies avant le test. Ne considérez pas une réponse qui semble sûre comme une preuve de la manière dont le modèle a traité une instruction en interne. Évaluez plutôt les résultats observables : l’utilisateur a-t-il reçu des informations auxquelles il n’avait pas accès ? La valeur fictive restreinte a-t-elle été divulguée ? L’assistant a-t-il tenté une action non autorisée ?
Consignez séparément les différents types de résultats. Par exemple, l’assistant peut divulguer une valeur fictive, un document restreint peut apparaître dans les résultats de récupération pour le mauvais rôle, ou l’assistant peut tenter une action que l’utilisateur n’a pas autorisée. Il s’agit d’observations distinctes que l’équipe doit examiner.
- Réussi : le rôle de test ne reçoit aucune information en dehors de son périmètre d’accès défini, la valeur fictive restreinte n’est pas divulguée et aucune action non autorisée via un outil n’est tentée.
- À examiner : le résultat est ambigu ou le document prévu n’a pas été récupéré ; le scénario n’a donc pas réellement mis à l’épreuve la limite d’accès.
- Échec : l’assistant divulgue la valeur fictive restreinte à un rôle non autorisé, un document hors du périmètre d’accès autorisé de ce rôle apparaît dans les résultats de récupération, ou l’assistant tente une action hors périmètre.
- Ne considérez pas une réponse finale d’apparence sûre comme une réussite si une action non autorisée via un outil a été tentée en cours de route.
Envisagez des mesures de protection à plusieurs niveaux
Les tests peuvent aider à définir un ensemble de mesures de protection, mais ils ne prouvent pas que celles-ci empêcheront tous les échecs. Parmi les mesures pratiques à évaluer, vérifiez si la récupération respecte les limites d’accès définies pour les documents sources, si les outils connectés disposent uniquement des accès nécessaires à leur fonction et si les actions ayant des conséquences nécessitent une approbation humaine. La surveillance peut également aider votre équipe à examiner le comportement du système et à enquêter sur les résultats inattendus.
Il s’agit de recommandations à évaluer dans votre propre application, et non de garanties ni d’affirmations selon lesquelles une mesure précise serait efficace dans toutes les implémentations. La source citée plus haut ne valide pas ces mesures ni leur efficacité.
- Récupération tenant compte des autorisations : testez l’accès avec chaque identité concernée ; ne vous fiez pas à un test réalisé avec un seul rôle.
- Accès limité aux outils : maintenez les outils et les actions dans le périmètre prévu, et testez les tentatives d’action dans un environnement sûr.
- Approbation humaine : envisagez une étape d’approbation avant les actions ayant des conséquences, plutôt que de considérer la réponse de l’assistant comme une autorisation.
- Surveillance : déterminez quelles informations sont nécessaires pour examiner les récupérations inattendues, les réponses et les actions tentées, conformément à vos exigences en matière de traitement des données.
- Mesures à plusieurs niveaux : indiquez quelle mesure est censée traiter chaque risque et quels aspects restent non testés.
Définissez des critères d’acceptation et recommencez les tests après chaque changement
Convenez des critères d’acceptation avant les tests. Par exemple, précisez qu’aucun rôle de test ne doit recevoir la valeur fictive restreinte en dehors de son périmètre autorisé et qu’aucun test ne doit entraîner d’action non autorisée. Définissez comment résoudre les résultats ambigus, qui examine les échecs et ce qui doit être retesté après correction.
Conservez le jeu de test et les résultats avec la documentation de sécurité de l’application, en limitant l’accès aux personnes chargées de l’examen. Supprimez le corpus de test après les essais. Répétez les cas pertinents lorsque vous modifiez les autorisations de récupération, les sources documentaires, les instructions système, les modèles, les outils connectés ou d’autres éléments de l’application RAG susceptibles d’influencer son comportement. Une réussite antérieure ne décrit que le scénario et la configuration testés ; elle ne garantit pas le comportement futur.
- Définissez les résultats observables requis pour chaque scénario, notamment ce qui constitue une réussite, un échec ou une exécution non concluante.
- Désignez une personne chargée d’examiner les échecs et de déterminer si une correction résout le problème de limite d’accès observé.
- Répétez les scénarios concernés après les changements et conservez les résultats antérieurs à des fins de comparaison, en appliquant aux dossiers de test des contrôles d’accès appropriés.
- Pour en savoir plus sur l’injection indirecte de prompt, consultez l’[aperçu](https://cetas.turing.ac.uk/publications/indirect-prompt-injection-generative-ais-greatest-security-flaw) du Centre for Emerging Technology and Security de l’Alan Turing Institute. Cette source étaye la description du risque ; les étapes de test et les critères d’acceptation de cet article sont des recommandations pratiques, et non des exigences établies par cette source.
Questions fréquentes
Qu’est-ce que l’injection indirecte de prompt dans une application RAG ?
Il s’agit du risque que des instructions intégrées aux sources de données soient récupérées et influencent un système d’IA générative. Un document récupéré peut contenir du texte qui tente de modifier le comportement de l’assistant ou d’influencer ce qu’il révèle ou fait.
Faut-il utiliser de vrais documents confidentiels pour tester l’injection de prompt ?
Non. Utilisez des documents de test contrôlés et des valeurs fictives dans un chemin applicatif de test isolé de la production. Isolez également les identités et les outils de test ; désactivez ou simulez les outils ayant des conséquences.
Un seul test réussi suffit-il à démontrer qu’un assistant RAG est protégé ?
Non. Un résultat ne s’applique qu’au scénario et à la configuration évalués. Répétez les cas pertinents selon les rôles utilisateurs et les contextes de récupération, puis relancez-les après tout changement important.
Que doit consigner une équipe pendant un test ?
Consignez le rôle de l’utilisateur, la question, les éléments de test récupérés ou les identifiants des documents, la réponse de l’assistant et toute tentative d’action via un outil. Notez également la configuration utile à l’interprétation du résultat. Limitez l’accès aux journaux et n’y consignez aucun contenu sensible réel.
Les mesures de protection à plusieurs niveaux éliminent-elles le risque d’injection de prompt ?
Non. Les recommandations de cet article ne garantissent pas une protection. Testez leur fonctionnement dans votre application et consignez les limites restantes.
Sources et lectures complémentaires
- Indirect Prompt Injection: Generative AI's Greatest Security Flaw — Centre for Emerging Technology and Security, The Alan Turing Institute
- What is prompt injection? Example attacks, defenses and ... — Evidently AI
- Prompt injection is the new SQL injection, and guardrails aren't enough — Cisco Blogs