Claude web_fetch : la mémoire de l'utilisateur pouvait être exfiltrée lettre par lettre
Un chercheur en sécurité a trouvé un moyen de faire exfiltrer par Claude les données personnelles accumulées dans sa mémoire (nom, employeur, réponses à des questions de sécurité) vers un site externe contrôlé par l’attaquant. La vulnérabilité exploitait web_fetch, l’outil avec lequel Claude lit les pages web. Anthropic a confirmé le problème et l’a fermé en supprimant la capacité à suivre les liens trouvés dans les pages déjà téléchargées.
Pourquoi cela te concerne. Claude mémorise ce que tu lui dis. Au cours de longues sessions, tu partages des informations confidentielles : données professionnelles, décisions stratégiques, parfois détails personnels. La protection de web_fetch était considérée comme solide : l’agent pouvait visiter uniquement les URL saisies par l’utilisateur ou retournées par la recherche interne. Le bogue se trouvait dans une règle apparemment inoffensive, celle qui permettait à Claude de cliquer sur les liens trouvés dans les pages qu’il avait déjà chargées. Un site construit à cet effet pouvait utiliser cette porte pour faire exfiltrer les données caractère par caractère, en les cachant dans le chemin d’accès de l’URL.
Si tu utilises un assistant avec mémoire et accès au web sur des données sensibles, c’est le type de risque dont tu dois être conscient. Le correctif est arrivé, mais le schéma est général : chaque fois qu’un agent a accès à des données privées et à des outils pour communiquer vers l’extérieur, la surface d’attaque augmente.
Si tu veux l’essayer. La vulnérabilité est déjà fermée. Ce que tu peux faire, c’est réduire le risque quand tu fais lire par l’IA des contenus tiers : le playbook sur comment se défendre de l’injection de prompt est le point de départ.
En détail
« Trinité mortelle » est le nom que la communauté sécurité donne à la configuration de risque la plus dangereuse pour un assistant IA : accès aux données privées, accès aux outils qui lisent les contenus externes, et instructions hostiles cachées dans ces contenus. Claude chat possède ces trois ingrédients. La mémoire de Claude, composée d’un résumé quotidien des conversations et d’un outil de recherche dans l’historique complet, construit des profils denses des utilisateurs. Et web_fetch donne à l’agent la capacité de charger des pages web, où des instructions malveillantes peuvent se cacher.
La protection d’Anthropic était robuste sur le papier. web_fetch pouvait visiter uniquement trois types d’URL : celles saisies directement par l’utilisateur dans le message, celles retournées par l’outil web_search, ou celles trouvées comme hyperliens dans une page déjà chargée. La troisième règle semblait inoffensive : elle était destinée à permettre à Claude de cliquer sur les liens rencontrés en naviguant, comme le ferait une personne.
Ayush Paul a compris que la troisième règle était la porte d’entrée. Si l’attaquant contrôle le site web, il contrôle aussi les liens qui apparaissent sur la page. Il a construit un site qui fonctionnait comme un clavier : la page d’accueil affichait des liens vers /a, /b, /c et ainsi de suite. Chaque page de lettre menait à des sous-pages (/aa, /ab, /ac). Le prompt d’attaque, déguisé en message Cloudflare demandant à l’IA de « s’authentifier » en spécifiant le nom de l’utilisateur, invitait Claude à naviguer sur le site lettre par lettre. Chaque requête HTTP enregistrée par le serveur de l’attaquant révélait un caractère des données extraites de la mémoire.
Résultat : nom complet, ville de résidence, nom de l’employeur. Données que Claude avait en mémoire parce que l’utilisateur les avait partagées dans des conversations précédentes. L’attaque était invisible pour celui qui chattait : aucune indication que quelque chose avait quitté le sandbox.
L’attaque était aussi sélective : le site piège affichait le prompt malveillant uniquement aux clients ayant Claude-User dans l’user-agent, ce qui rendait plus difficile sa découverte par les chercheurs ou les scanners automatiques.
Anthropic a fermé la vulnérabilité en supprimant la troisième règle. Désormais, web_fetch ne suit plus les liens trouvés dans les pages téléchargées : il peut visiter uniquement les URL saisies par l’utilisateur ou retournées par web_search. N’a pas payé la bug bounty, arguant avoir identifié le problème en interne avant la divulgation.
Le correctif est spécifique à ce vecteur, mais le schéma de risque est général. Tout outil donnant à un modèle accès au réseau peut devenir un canal d’exfiltration si le modèle peut être instruit d’encoder des données dans les paramètres des requêtes. La mémoire des assistants devient la donnée la plus sensible que beaucoup d’utilisateurs possèdent : plus dense qu’un gestionnaire de mots de passe, car elle inclut le contexte et les relations, pas seulement les identifiants.