Leaders d’opinion
Une attaque d’injection de prompt que l’on ne peut pas prévenir : pensée magique ou préoccupation réelle ?

Dans cet article, je souhaite engager le lecteur dans une expérience de pensée. Je vais argumenter que dans un avenir pas si lointain, un certain type d’attaque d’injection de prompt sera effectivement imprévisible. Mon argument sera plus spéculatif que concret, je ne cherche donc pas à vous convaincre de quoi que ce soit. Au lieu de cela, j’invite à explorer ces pensées. Avant de commencer, comme tout écrivain convaincant le ferait, je veux discuter des échecs et des moteurs d’échecs.
Les moteurs d’échecs superhumains et une affirmation sur l’expérience humaine
L’un des éléments les plus agréables des échecs qui manque dans d’autres disciplines est la capacité à objectivement mesurer la qualité ou la force d’un joueur. Le système de notation ELO utilisé à cette fin a ses défauts, mais il fournit une très bonne estimation approximative qui se maintient dans le temps. Une note de 2700 ou plus est communément reconnue comme de classe mondiale (top 30 dans le monde). Le meilleur joueur du monde est juste en dessous de 2850. Aucun humain n’a jamais atteint une note de 2900.
Dans le milieu des années 90, nous avons vu le premier moteur d’échecs (Deep Blue) à atteindre un niveau de classe mondiale. L’implication pratique de ce jalon a été l’adoption généralisée des moteurs par les joueurs de tous niveaux pour la pratique et l’analyse. En fait, l’utilisation du moteur est devenue essentielle pour les meilleurs joueurs du monde. Cependant, pour plusieurs générations de ces moteurs de classe mondiale, la révision de leurs mouvements recommandés (c’est-à-dire la sortie) était impérative. Il y avait même un format spécial créé appelé « échecs avancés » dans lequel les humains concouraient avec un moteur à leurs côtés, et la combinaison humaine + machine était considérée comme supérieure à la machine seule.
Il a fallu environ 20 ans, et quelques progrès critiques dans l’apprentissage profond et l’apprentissage par renforcement pour les moteurs d’échecs pour atteindre un niveau superhumain (environ 3200 ELO). Mais une fois que cette stratosphère a été franchie vers 2017, quelque chose de très surprenant s’est produit. Eh bien, en fait, deux choses se sont produites. La première chose était complètement attendue ; les moteurs sont devenus la source de « vérité » dans 99 % de toutes les positions. Dans la pratique, cela signifiait que nous sommes entrés dans l’« ère de la confiance aveugle » dans le moteur. Ces jours-ci, il est virtuellement impossible pour un humain de proposer un mouvement significativement meilleur que le moteur. Aussi amusant que les « échecs avancés » l’aient été, il s’agit maintenant d’un exercice inutile ; les humains contribueraient presque rien au jeu. Mais la deuxième chose a été choquante pour la plupart des joueurs d’échecs. Ces moteurs neuronaux superhumains (c’est-à-dire les réseaux de neurones profonds) joueraient parfois dans un style qui peut être décrit comme « romantique ». En d’autres termes, ils feraient des mouvements dont la valeur ne pourrait être appréciée que bien plus tard, bien au-delà de ce que tout humain ou moteur de classe mondiale pourrait calculer. Cela ressemblait beaucoup à ce que les moteurs aient développé un « sentiment » ou une « intuition » pour certaines positions. Sauf que cette intuition n’est pas quelque chose qu’un humain pourrait jamais saisir ou imiter.
Autrement dit, un moteur neuronal superhumain peut faire des mouvements qui sont au-delà de l’horizon cognitif d’un humain. C’est le point critique ici ; la question n’est pas celle de l’explicabilité. Plutôt, un humain ne peut simplement pas comprendre pourquoi un moteur recommande un mouvement sans jouer la position et observer le résultat bien plus tard, c’est-à-dire en déroulant toute la trajectoire des séquences de jeu possibles. Par conséquent, nous avons un écart de capacité insurmontable. Il est objectivement optimal d’accepter la sortie du moteur sans révision. Je peux résumer mon affirmation comme suit :
Les échecs sont une preuve d’existence que l’IA superhumaine fonctionnerait effectivement de manière autonome dans certains domaines. Permettre au système d’IA de prendre des décisions sans révision humaine serait la manière optimale de déployer un tel système.
Puisque mon affirmation peut frapper quelqu’un comme évidente ou sans importance, je veux mettre en évidence quelques nuances. Supposons que nous ayons un système d’IA qui démontre un niveau superhumain pour une tâche complexe et critique avec des conséquences concrètes et irréversibles. Il y a deux implications à mon affirmation :
- Le système serait déployé pour prendre des décisions pour la tâche sans révision humaine, malgré le risque inhérent
- Les connaissances acquises à partir de la surveillance d’un tel système ne préviendraient pas une décision préjudiciable ; les dommages auraient déjà été faits
La révision de la sortie et la surveillance sont précisément les deux dernières couches de défense contre l’injection de prompt. Par conséquent, notre attaque d’injection de prompt hypothétique pourrait contourner ces couches simplement en ciblant le système approprié.
C’est un scénario très réaliste dans mon esprit. Un système d’IA superhumain dans un domaine spécifique n’est pas l’IA générale, et la plupart des experts pensent que de tels systèmes sont juste à l’horizon. Nous n’avons pas non plus supposé que les décisions étaient sensibles au temps, mais simplement que la tâche était suffisamment complexe pour rendre la révision humaine inextricable.
Bien sûr, nous n’avons jusqu’à présent contourné que deux couches de défense, et heureusement pour nous, plusieurs autres ont été développées. Pour aborder le reste, plongeons dans les éléments fondamentaux qui rendent l’injection de prompt difficile à défendre.
Qu’est-ce que l’injection de prompt ?
L’injection de prompt est une manipulation d’un grand modèle de langage (LLM) par des entrées conçues, provoquant le LLM à exécuter involontairement les intentions de l’attaquant. Il peut être considéré comme l’ingénierie sociale pour l’IA. De manière cruciale, il ne s’agit pas d’un bug logiciel conventionnel. Une attaque d’injection de prompt exploite une vulnérabilité inhérente du LLM. Puisque les LLM traitent à la fois les invites de système et d’utilisateur comme des séquences de texte, ils ne peuvent pas intrinsèquement distinguer les instructions légitimes des instructions nuisibles. La vulnérabilité est donc effectivement conçue, plutôt que fortuite.
Techniques d’injection de prompt
L’injection de prompt est généralement reconnue comme le #1 risque pour les applications LLM. Il y a plusieurs raisons pour lesquelles c’est le cas. Le facteur le plus évident est la variété d’injection de techniques qui ont été développées. En les regroupant grossièrement en quatre catégories, les techniques les plus connues incluent :
- Syntaxique : en utilisant des caractères spéciaux, des émojis ou un langage alternatif
- Indirecte : en utilisant des sources externes (récupération à partir d’un site), le codage (base 64), ou la référence multimodale (texte dans une image)
- « Faisons semblant » : en introduisant un style manipulateur par exemple en faisant du role-play, en faisant appel à l’émotion, en utilisant un cadre éthique et en changeant de format
- Brutale : tentative explicite de « forcer » les instructions du modèle par la force brute, le renforcement ou la invite négative
La variété seule constitue un défi pour les développeurs d’applications, mais ces attaques ont également continué à évoluer rapidement. Le côté gauche du diagramme ci-dessous prétend décrire l’état de l’art pour le début de 2023, tandis que le côté droit reflète la nature des attaques d’aujourd’hui.

Les développeurs d’applications LLM doivent également prendre en compte le compromis classique entre convivialité et sécurité. Ils pourraient certainement introduire chaque couche de défense appropriée et modèle de conception, mais à quel coût ? Les couches de défense ajoutent une latence significative et introduisent des faux positifs (FP) – signalant incorrectement des invites sûres comme malveillantes – les deux facteurs ayant un impact négatif sur l’expérience utilisateur. Par conséquent, un certain niveau de compromis est inévitable dans la pratique, et il n’y a pas de « solution miracle ».
Cependant, dans cet article, je ne suis pas vraiment intéressé par ce jeu de chat et de souris sans fin. Plutôt, je sonde si une attaque peut être en principe imprévisible. Du point de vue du développeur/défenseur, il n’y a qu’une seule idée clé :
La séparation des instructions des données dans l’invite est fondamentale pour répondre au risque d’injection de prompt
Nous pouvons supposer que les compromis ne sont pas un facteur, et que toute couche de défense ou technique peut être utilisée. Sous cette (forte) hypothèse, est-il possible de concevoir un scénario dans lequel la séparation instruction-donnée dans une invite est effectivement impossible ?
L’analogie ADN
Une fois que la question a été formulée en termes de séparation instruction-donnée, ma première pensée a été d’utiliser la biologie comme analogie.
Considérez une cellule et une étendue d’ADN (appelée gène). Le gène fournit des instructions pour construire une protéine par transcription et traduction. Il encode également les informations (données) qui impactent la structure et la fonction de la protéine. Ainsi, le gène dicte simultanément ce qu’il faut construire, et comment le construire, ou du moins je l’ai raisonné. Cependant, c’est simplement faux puisqu’un gène ne décide pas de la façon dont il doit s’interpréter lui-même. Il n’y a pas d’équivalent de suivi d’instructions en biologie au niveau du gène. Le « comment » est entièrement externalisé à la machinerie cellulaire.
Par conséquent, même si je ne peux pas secouer le sentiment que les prochaines générations de LLM – ou plus précisément, les systèmes dans lesquels ils évolueront – ressembleront davantage à des machines biologiques, l’analogie proposée ne fonctionne simplement pas. Nous ne pouvons pas substituer une cellule à un LLM et un gène à une invite, puis effectuer une injection dans le gène qui finirait par provoquer la construction d’une protéine « endommagée ». Il semble plus productif de s’en tenir au langage naturel et aux tâches qui nécessitent l’interprétation sémantique.
Enlever les couches de défense
Il ne devrait pas surprendre que les stratégies de défense à couches multiples soient considérées comme plus efficaces pour arrêter les attaques d’injection de prompt. L’image ci-dessous montre les couches de défense les plus courantes dans l’ordre, ainsi que les techniques associées utilisées dans chaque couche.

Nous avons déjà discuté des deux dernières couches (sortie, surveillance) ci-dessus, nous allons donc nous concentrer sur les quatre premières.
En considérant la couche d’entrée, il est raisonnable de supposer que la désinfection ou la validation de l’invite serait quite réussie pour détecter les attaques indirectes. Cependant, si l’injection est livrée directement, et comme suggéré ci-dessus, en s’appuyant sur l’interprétation sémantique, peut-être la désinfection est-elle sans importance (rien à désinfecter), et la validation est impossible par défaut puisque le calcul doit être terminé pour identifier le problème.
Il n’y a essentiellement pas de limites aux garde-fous que vous pourriez construire dans la couche de détection. En fait, vous pourriez même utiliser un LLM dédié pour la détection d’injection. Mais une fois encore, il sera difficile pour un classificateur ou un détecteur d’anomalie de signaler une invite comme suspecte lorsque le poison est habilement caché dans les sémaniques.
La couche de modèle peut être très efficace lorsque la portée des tâches est étroite, et que l’ajustement est réalisable. Un argument similaire pourrait être fait pour la couche de système lorsque l’utilisation des outils est prévisible. Cependant, au moins intuitivement, ni l’un ni l’autre ne lèvera d’alarme si l’injection déroute l’interprète.
Château de cartes
Mon intention lors du début de la rédaction de cet article était de décrire une attaque d’injection de prompt « imprévisible » en termes généraux. Peut-être ai-je fini par suivre une approche « non constructive » en faisant des trous dans les couches de défense existantes. Les techniques de défense continuent d’évoluer rapidement, et ainsi que la surface d’attaque. Ce jeu ne montre pas de signes de fin prochaine. Cependant, je crois également que nous ne serons plus les seuls à jouer ce jeu pendant longtemps. Je suppose que l’injection de prompt réussie dans le futur serait toujours en langage naturel, mais dans un langage que les humains ne peuvent pas comprendre ; et je suppose qu’elle serait auto-découverte par un système soit construit à cette fin spécifique, soit peut-être accidentellement après avoir abordé une tâche connexe, telle que la recherche d’ambiguïté sémantique dans un espace de représentation.
Il y a quelque chose de désagréable à admettre que nous perdons le contrôle et pourtant à ressentir que c’est la chose la plus rationnelle à faire. Vous pouvez y penser comme la « preuve intuitive » que certaines attaques seraient inarrêtables. Et si cela vous laisse mal à l’aise, vous seriez ravi de savoir que GPT 5.2 a trouvé cet argument pour être « pas controversé ou nouveau » et a préconisé que je n’« insiste pas sur le point » et que je réduise de 40 % l’article.
