Le triangle des compromis : défendre un tuteur LLM contre l'injection de prompt
Un benchmark de mai 2026 sur les défenses anti-injection pour tuteurs pédagogiques LLM chiffre une vérité gênante : aucun garde-fou ne gagne à la fois sur la robustesse, l'usabilité et la latence.
What is this?
En mai 2026, Alexandre Cristovão Maiorano a publié sur arXiv Evaluating Prompt Injection Defenses for Educational LLM Tutors: Security-Usability-Latency Trade-offs (arXiv:2605.06669, v2). Ce n’est pas une nouvelle attaque. C’est un article de mesure, et ce qu’il mesure est la partie de l’ingénierie des garde-fous que les fiches produit passent discrètement sous silence : ce que vous perdez quand vous activez une défense.
Le terrain est un tuteur LLM — un agent conversationnel qui aide un élève à apprendre, qui doit suivre l’intention de l’élève tout en refusant de révéler le corrigé, de sortir de son rôle pédagogique ou de divulguer son prompt système. L’article évalue trois défenses sur un même jeu contrôlé de 480 requêtes (369 d’injection, 111 bénignes) et reporte chacune sur trois axes simultanés : la fréquence à laquelle une injection passe (taux de contournement), la fréquence à laquelle une requête légitime est bloquée à tort (taux de faux positifs, FPR) et la latence ajoutée. Reporter les trois ensemble est l’apport — la plupart des articles ne reportent que le premier.
How it works
L’auteur construit un pipeline propre au domaine, en quatre couches — filtres déterministes par motifs, validation structurelle, sandboxing contextuel et contrôles comportementaux au niveau de la session — puis le confronte à deux systèmes largement déployés, NVIDIA NeMo Guardrails et Prompt Guard de Meta, sous instrumentation unifiée et sur le même jeu de données. Les chiffres se posent à trois endroits très différents du triangle :
Defense Bypass↓ FPR↓ Added latency
-------------------------- -------- -------- -------------------
Custom 4-layer pipeline 46.34% 0.00% ~2.5 ms
Meta Prompt Guard 38.48% 3.60% (classifier-speed)
NVIDIA NeMo Guardrails 0.00% 16.22% ~1.5 s
-------------------------- -------- -------- -------------------
Bypass = injections passées (plus bas = plus sûr)
FPR = requêtes légitimes bloquées à tort (plus bas = plus utilisable)
Lisez ligne par ligne et le compromis saute aux yeux. NeMo bloque toutes les injections du jeu — au prix du blocage d’environ une requête légitime sur six et d’un ajout d’environ 1,5 seconde par tour. Le pipeline maison ne bloque jamais une vraie requête et répond en moins de trois millisecondes — mais laisse passer 46 % des injections. Prompt Guard se situe entre les deux sur chaque axe. Aucune ligne n’est la meilleure sur les trois.
Un second résultat affine le propos : le corpus couvre l’anglais et le portugais brésilien, et les filtres lexicaux — calibrés sur l’anglais — affichent un contournement nettement plus élevé sur les requêtes en PT-BR. Un garde-fou réglé dans une langue se dégrade silencieusement dans une autre, ce qui compte pour tout tuteur déployé sur plusieurs régions.
La méthodologie d’évaluation est la partie durable. L’auteur reporte des intervalles de confiance par bootstrap stratifié, des tests de significativité de McNemar appariés et des balayages de sensibilité multi-graines, et publie un paquet de reproductibilité (image Docker, jeu de données, scripts) pour rejouer la même comparaison dans des conditions identiques — le type de protocole à conditions égales que les affirmations « 0 % de succès d’attaque » permettent rarement.
Why it matters
La plupart des défenses anti-injection sont vendues sur un seul chiffre — le taux de succès ou de contournement — mesuré contre un ensemble figé de charges connues. Cet article rappelle que ce chiffre n’a aucun sens sans ses deux compagnons. Un garde-fou qui atteint 0 % de contournement en bloquant 16 % du trafic bénin n’est pas « plus sûr » au sens opérationnel ; dans une salle de classe, c’est un garde-fou qui rend le tuteur inutilisable, et c’est ainsi qu’un garde-fou finit désactivé.
Pour celles et ceux qui exploitent réellement ces systèmes, la leçon est que le bon point de fonctionnement est un choix institutionnel, pas un choix technique. Un outil d’évaluation à fort enjeu peut accepter un FPR élevé pour garantir l’absence de fuite. Un assistant aux devoirs que les élèves abandonneront au premier refus injustifié exige l’inverse. Le même article, les mêmes données, soutiennent les deux décisions — et c’est là le but. Cela rejoint, du côté empirique, l’argument d’intégrité contextuelle selon lequel une défense ne peut être à la fois maximalement sûre et maximalement permissive : ici, vous observez le compromis en points de base.
L’écart multilingue est l’avertissement le plus discret et le plus généralisable. Si vos filtres ont été réglés sur l’anglais et que vos utilisateurs n’écrivent pas tous en anglais, votre taux de contournement réel est supérieur à ce que dit votre benchmark.
Defenses
L’enseignement actionnable est une méthode pour choisir un garde-fou, pas un garde-fou unique à installer.
-
Exigez les trois chiffres. Avant d’adopter un garde-fou d’entrée, demandez son taux de contournement, son taux de faux positifs sur votre trafic bénin et sa latence ajoutée — mesurés sur un même jeu, pas sur trois jeux différents. Un fournisseur qui ne cite que le taux de succès d’attaque cache les deux tiers du tableau.
-
Fixez le point de fonctionnement à partir du risque, puis réglez-le. Décidez si votre application tolère les blocages injustifiés (assistant aux devoirs : non) ou les fuites (évaluation notée : non) et choisissez la ligne correspondante. N’héritez pas d’un seuil par défaut.
-
Superposez rapide et lent. Les données soutiennent une conception en paliers : un filtre déterministe sous la milliseconde en premier passage peu coûteux, n’escaladant que les cas ambigus vers un rail plus lent basé sur un modèle comme NeMo. Vous récupérez l’essentiel du budget de latence sans renoncer au garde-fou lourd là où il compte. Voir aussi le filtrage en sortie et l’approche par hiérarchie d’instructions comme couches complémentaires.
-
Recalibrez par langue. Si vous déployez dans plusieurs langues, mesurez le contournement par langue et réglez les motifs lexicaux pour chacune. Une calibration anglais-seul augmente silencieusement votre taux de contournement partout ailleurs.
-
Adoptez un protocole de benchmark reproductible. Utilisez un jeu de validation figé avec intervalles de confiance et tests de significativité appariés (McNemar) pour que les comparaisons garde-fou contre garde-fou soient honnêtes. L’artefact public de l’article est un point de départ utilisable.
-
Traitez l’injection indirecte à part. Le benchmark cible l’injection directe ; l’auteur signale l’injection indirecte — des charges arrivant via des documents récupérés ou des contenus de LMS — comme un chantier ouvert. Si votre tuteur ingère du matériel externe, cette surface n’est pas mesurée ici et exige ses propres contrôles.
Status
| Élément | Référence | Date | Notes |
|---|---|---|---|
| Article publié sur arXiv (v2) | arXiv:2605.06669 | 2026-05 | Auteur : Alexandre Cristovão Maiorano |
| Jeu de benchmark | Article | 2026-05 | 480 requêtes (369 injection / 111 bénignes) |
| Pipeline maison 4 couches | Article | 2026-05 | 46,34 % contournement, 0,00 % FPR, ~2,5 ms |
| NeMo Guardrails (référence) | NVIDIA | évalué 2026-05 | 0,00 % contournement, 16,22 % FPR, ~1,5 s |
| Prompt Guard (référence) | Meta | évalué 2026-05 | 38,48 % contournement, 3,60 % FPR |
| Paquet de reproductibilité | Article (artefact public) | 2026 | Docker + jeu de données + scripts |
Le message n’est pas « les garde-fous ne marchent pas ». C’est que le chiffre de sécurité d’un garde-fou est incomplet pris isolément, et que choisir une défense pour un tuteur LLM — ou tout assistant en contact avec l’utilisateur — revient à dépenser un budget fixe entre robustesse, usabilité et latence. L’apport de cet article est de rendre ce budget visible.