Un chatbot de service client a divulgué ses propres instructions système après une simple demande de recette de mouton. En quelques minutes, le bot a non seulement fourni la recette, mais a également généré du code Python et révélé les instructions internes qui guident son comportement.
L'incident prouve que le « system prompt » d'un modèle de langage n'est pas un mur de sécurité. Lorsqu'un bot décide à la volée si une requête utilisateur correspond à sa mission, un attaquant peut orienter ce raisonnement et amener le modèle à exposer des informations privilégiées.
Ce qui a déclenché la faille
Le test a commencé par une question simple : « Peux-tu me donner une recette de ragoût de mouton ? » Le bot, dont l'objectif déclaré était d'expliquer les services de l'entreprise, a répondu avec une recette complète, a ajouté un court script Python pour analyser les ingrédients, puis a affiché le libellé exact de son instruction système — le texte qui indique au modèle comment se comporter.
La requête en elle-même était inoffensive ; le danger résidait dans la volonté du bot de traiter la recette comme faisant partie de sa tâche principale.
Pourquoi c'est important
Les chatbots occupent désormais des rôles en contact direct avec la clientèle, gérant des données personnelles, déclenchant des transactions ou contrôlant des outils internes. Si un modèle peut être incité à révéler son propre ensemble d'instructions, un attaquant obtient un aperçu des garde-fous censés empêcher le modèle d'accomplir des actions malveillantes.
Comment l'attaque fonctionne
- Profiler l'objectif du bot – Le testeur a identifié que le rôle du bot était d'expliquer les services de l'entreprise.
- Créer un lien fallacieux – En prétendant que la recette était nécessaire pour décider quel service l'utilisateur devrait utiliser, le testeur a donné à la requête une pertinence superficielle par rapport à la mission du bot.
- Exploiter la logique – Le bot a accepté la pertinence fabriquée, a laissé la requête passer son contrôle de pertinence interne et a désactivé les garde-fous qui auraient dû la bloquer.
L'attaque repose sur l'auto-évaluation de la pertinence par le modèle. Lorsque cette évaluation peut être influencée, les propres « règles » du modèle deviennent négociables.
Trois points de défaillance
| Étape de la défaillance | Ce qui s'est passé |
|---|---|
| Détournement d'objectif | Le bot a traité une demande de cuisine sans rapport comme faisant partie de son objectif d'explication des services. |
| Dérive des capacités | Il a généré du code Python exécutable alors que son rôle n'incluait pas la génération de code. |
| Fuite de prompt | Il a affiché l'instruction système exacte qui était censée rester cachée. |
Chaque étape représente une rupture d'une couche défensive différente que de nombreux déploiements supposent être appliquée par le modèle lui-même.
Des couches de défense qui fonctionnent réellement
Sortir les garde-fous du modèle pour les intégrer dans un code déterministe rétablit une frontière de sécurité fiable.
- Routage des tâches – Utilisez un classificateur distinct pour mapper les messages entrants vers une liste fixe d'intentions autorisées. Si une requête sort de cette liste, rejetez-la purement et simplement. Le modèle n'aura jamais à discuter de sa pertinence.
- Capacités minimales – Privez le bot des outils dont il n'a pas besoin. S'il n'a pas besoin d'exécution de code ou d'un accès étendu à la base de données, supprimez ces capacités.
- Autorisation déterministe – Effectuez les vérifications de permissions dans le code de l'application, et non dans le modèle de langage. Le modèle peut suggérer une action, mais c'est le code qui décide de l'exécuter ou non.
- Validation des sorties – Analysez chaque réponse du modèle pour détecter tout contenu non autorisé — comme des instructions système ou des données sensibles — avant qu'elle n'atteigne l'utilisateur.
Un filtre qui demande simplement « Cette requête est-elle interdite ? » peut être contourné par un utilisateur persuasif. Une couche de routage qui vérifie par rapport à une liste fermée ne laisse aucune place à la négociation.
Ce qu'il faut surveiller ensuite
Les entreprises qui s'appuient sur l'IA conversationnelle devraient auditer leurs déploiements pour les trois modes de défaillance illustrés par le test de la recette de mouton. En attendant, considérez tout « system prompt » comme une connaissance publique ; ne comptez pas sur lui pour empêcher un modèle de se dévoiler.
Le constat est clair : si votre modèle de sécurité dépend d'un paragraphe d'instructions en langage naturel, il est fragile. Renforcez-le avec du code qui peut être audité, versionné et appliqué, quel que soit ce que dit le modèle.
