Un chatbot d’assistance publique reçoit le message « J’ai besoin d’aide pour réinitialiser mon mot de passe », récupère l’article d’aide correspondant et renvoie les étapes de réinitialisation approuvées. Son comportement sûr ne dépend pas uniquement du texte de la réponse. L’application gère également des instructions système, des documents récupérés, des outils de gestion de compte, des données utilisateur et des journaux. Un jailbreak consiste à tenter d’amener le modèle à enfreindre ses règles de sécurité ou à dépasser les limites comportementales prévues via les données d’entrée. Dans le cas de ce chatbot, la tentative provient de l’entrée utilisateur et vise le comportement de sécurité du modèle.
Le risque immédiat peut être une réponse non sécurisée, mais un risque plus important survient lorsque cette réponse influence un autre composant. Si le modèle peut appeler la fonction lookup_order, une sortie altérée pourrait demander des données situées en dehors du compte de l’utilisateur. En revanche, si le modèle se contente de produire du texte et que l’application vérifie chaque action dans le code, ce même comportement défaillant aura un impact moindre. Nous suivons donc à la fois le point d’entrée du contenu non fiable et les éléments de l’application environnante auxquels la sortie du modèle peut accéder. Examinez les limites de confiance dans ce flux de discussion d’assistance :
Le pipeline d’un chatbot illustre pourquoi le jailbreak s’inscrit dans une problématique plus large liée aux données d’entrée. Une injection de prompt (prompt injection) survient lorsqu’un contenu modifie le comportement du modèle d’une manière non prévue par le développeur de l’application. Les modèles de langage actuels traitent les instructions système, les messages des utilisateurs, les extraits de documents récupérés et les résultats d’outils au sein d’un même contexte de jetons (tokens). Des étiquettes telles que USER_DATA peuvent clarifier l’intention, mais elles ne constituent pas une frontière de sécurité contraignante.
Le jailbreak est une sous-catégorie de l’injection directe de prompt visant à contourner les protocoles de sécurité du modèle. L’injection directe provient du message de l’utilisateur, par exemple une requête entrant en conflit avec le rôle d’assistance du chatbot. L’injection indirecte survient via un contenu lu par le modèle, comme un article d’aide récupéré contenant une phrase formulée sous forme d’instruction. Dans les deux cas, l’objectif est de modifier le comportement du modèle. La source de l’injection détermine où les mesures de contrôle doivent être appliquées.
L’OWASP classe cette catégorie sous l’identifiant LLM01:2026 Prompt Injection. Elle distingue cette défaillance liée aux données d’entrée de la divulgation d’informations sensibles (concernant les données sortantes) et de l’autonomie excessive (excessive agency), qui porte sur les conséquences d’une sortie déclenchant des actions privilégiées. Pour notre chatbot : un message utilisateur modifiant la réponse constitue une injection directe ; un article récupéré et « empoisonné » constitue une injection indirecte ; une tentative directe de contourner les mécanismes de sécurité est un jailbreak. Comparez ci-dessous la source, la cible et les options de confinement :