Aller au contenu
Exfiltration par rendu Markdown et liensLecture : 0 %

Exfiltration par rendu Markdown et liens

Comment un assistant sans aucun outil d'envoi fait sortir des données par une image ou un lien rendus dans votre interface, et pourquoi la parade se place dans le composant de rendu et la politique de contenu plutôt que dans le prompt.

Par Elias Varen7 min de lectureMembres

Votre assistant n'a aucun outil d'envoi. Pas de mail, pas de webhook, pas d'appel HTTP. Il lit des données du tenant, lit parfois un document externe, et répond par du texte. En revue, on note « pas de canal de sortie » et on passe au sujet suivant.

Le texte de la réponse est rendu en Markdown dans votre interface. Le Markdown sait afficher des images. Une image a une adresse, et le navigateur de l'utilisateur va chercher cette adresse dès que le composant l'affiche. Si l'adresse a été composée par le modèle, le modèle vient de faire émettre une requête HTTP vers le serveur de son choix, avec dans l'URL ce qu'il a bien voulu y mettre. Le canal de sortie existait depuis le début, et c'est votre front.

Une requête que personne n'a décidée

L'enchaînement ne demande aucune faille au sens classique. Chaque composant fait ce pour quoi il est prévu.

1. l'agent lit un contenu tiers (ticket, page, pièce jointe)
2. ce contenu lui demande d'ajouter à sa réponse une image dont l'adresse
   pointe vers un serveur externe et contient, en paramètre, une donnée
   du contexte
3. le modèle écrit la réponse, image comprise
4. le front rend le Markdown
5. le navigateur charge l'image : la donnée part dans l'URL
6. le serveur externe lit son journal d'accès

L'utilisateur n'a cliqué sur rien. Il peut ne rien voir, qu'il s'agisse d'une image d'un pixel ou d'une image cassée perdue dans une réponse longue. Ce qui sort tient dans une URL, donc quelques milliers de caractères par image, largement de quoi emporter un nom, une adresse, un extrait de conversation ou un token qui traînait dans le contexte.

Le lien cliquable est la variante à un clic. L'adresse est composée de la même façon, le texte affiché est rassurant, et la donnée part quand l'utilisateur clique. Et l'utilisateur clique, puisque le lien lui est présenté par l'assistant de sa propre application.

Ce canal reste ouvert dans beaucoup de produits pour une raison d'organisation plus que de technique. L'équipe qui conçoit l'agent raisonne en outils et considère la réponse comme un texte inerte. L'équipe front reçoit une chaîne à afficher et branche le composant Markdown habituel, celui qui sert déjà pour le contenu écrit par l'équipe elle-même. Personne ne possède la question « qui a écrit cette URL ? ».

Exfiltration par rendu Markdown et liens · Deepstack