système : OPÉRATIONNEL
← retour à tous les hacks
AGENTS MEDIUM NEW

L'angle mort des défenses à l'écriture contre l'empoisonnement mémoire

Un banc d'essai de juillet 2026 classe les attaques sur la mémoire persistante selon trois niveaux de difficulté — et montre que les filtres à l'écriture qui bloquent le poison grossier ne freinent presque pas les variantes distribuées et dormantes.

2026-07-20 // 6 min affects: llm-agents, agent-memory-systems, rag-pipelines

De quoi s’agit-il ?

Le 16 juillet 2026, des chercheurs de l’université de Nanjing ont publié sur arXiv un article présentant un banc d’essai et un cadre d’analyse de l’empoisonnement de la mémoire persistante des agents LLM. Les assistants modernes conservent une mémoire externe à long terme — préférences, faits, état des tâches, notes de passation — afin qu’une session reprenne sans rupture de continuité. Cette même persistance constitue une surface d’attaque durable : un contenu injecté par un canal ordinaire peut survivre au-delà de son tour d’origine et infléchir le comportement bien plus tard. La contribution ici n’est pas un nouvel exploit mais une mesure. Les auteurs construisent un jeu figé de 1 227 cas validés à la main, l’exécutent sur dix familles de modèles, et rangent l’empoisonnement mémoire en trois niveaux structurels. Le constat principal : les défenses bon marché appliquées à l’écriture attrapent le niveau le plus visible et manquent largement les deux autres.

Comment ça marche

L’article organise l’empoisonnement en une échelle de difficulté définie par l’écart entre l’injection et le préjudice.

L1 — corruption à enregistrement unique. Un enregistrement explicitement malveillant dont l’intention est visible à l’écriture (par exemple, une mémoire affirmant qu’un point d’accès de production a migré vers un hôte contrôlé par l’attaquant). C’est le cas qu’un contrôle de plausibilité ou de sûreté à l’admission devrait intercepter.

L2 — corruption compositionnelle. La charge est répartie sur plusieurs enregistrements individuellement plausibles, injectés dans le temps. Chacun paraît anodin isolément ; le préjudice ne se manifeste que lorsque les fragments sont co-récupérés et composés lors d’une tâche ultérieure. Les filtres d’admission par enregistrement ne voient rien d’anormal dans aucun fragment pris seul.

L3 — corruption dormante déclenchée par le contexte. Un enregistrement inerte en usage normal, qui ne s’active que lorsqu’un contexte naturel précis apparaît plus tard (une instruction « dormante » qui se déclenche lors d’une tâche récurrente donnée). À l’admission, il se lit comme neutre.

Le modèle de menace est délibérément faible : l’attaquant n’a accès ni aux poids, ni aux invites système, ni aux entrailles de la base mémoire, et n’écrit que par des canaux standards — saisie utilisateur, sorties d’outils ou messages inter-agents. Pour expliquer pourquoi les défenses se comportent différemment selon les niveaux, les auteurs ajoutent la Mechanistic Influence Decomposition (MID), une méthode contrefactuelle qui retire des éléments de mémoire et mesure la variation de sortie — isolant l’influence d’un enregistrement seul, l’interaction par paires et l’activation conditionnée par le déclencheur, signatures respectives de L1, L2 et L3.

Pourquoi c’est important

Sans défense, les dix modèles restaient très précis sur les tâches propres (environ 94 % en moyenne) tout en étant fortement corruptibles, avec un taux de corruption comportementale moyen de 62,5 %, s’étalant d’environ 54 % à 67 % selon les familles. La corruption augmentait le long de l’échelle : par niveau, les taux non défendus étaient d’environ 45 % (L1), 52 % (L2) et 77 % (L3). Les écritures médiatisées par l’extérieur — retours d’outils et messages inter-agents — corrompaient la mémoire plus souvent que la saisie directe de l’utilisateur, et les mémoires « à plat » étaient plus exposées que les magasins de faits décomposés.

C’est sur les défenses que le constat mord. Un contrôle de cohérence à l’écriture ramenait la corruption L1 sous les 5 % — mais laissait L2 près de 23 % et L3 près de 28 %. Autrement dit, le filtre qui neutralise le cas grossier ne bouge presque pas les cas distribués et dormants. Le meilleur résultat venait de l’empilement de défenses sur toute la chaîne (un ensemble atteignait environ 11 % au global), mais une corruption résiduelle subsistait, concentrée sur L2 et L3. La MID en donne la raison structurelle : un filtre d’admission ne peut juger un enregistrement qu’au moment où il est écrit ; un préjudice différé — assemblé plus tard à partir de morceaux anodins, ou déverrouillé par un contexte futur — tombe dans un angle mort qu’aucun contrôle à l’écriture ne peut voir.

Défenses

En pratique, il faut cesser de considérer l’admission à l’écriture comme la ligne de défense principale, et cesser de noter l’hygiène mémoire avec un unique taux de succès d’attaque. Le filtrage à l’écriture reste utile comme plancher contre L1, mais associez-le à des contrôles au moment de la récupération et du comportement : pondérez ou verrouillez les mémoires récupérées selon la provenance et l’indépendance des sources, afin que des fragments co-récupérés d’une même origine non fiable ne puissent former discrètement une charge, et appliquez un raisonnement sensible aux conflits qui signale les mémoires récupérées contredisant l’état de confiance avant d’agir. Traitez les sorties d’outils et les messages inter-agents comme des écritures mémoire plus risquées que la saisie utilisateur directe, et privilégiez des représentations mémoire décomposées plutôt qu’un stockage verbatim par blocs quand c’est faisable.

Comme le comportement nuisible en L2 et L3 n’apparaît qu’à la récupération ou au déclenchement, la surveillance doit aussi se déplacer en aval : journalisez quelles mémoires ont motivé une action conséquente et prévoyez un audit a posteriori capable d’attribuer une mauvaise sortie aux enregistrements responsables, une approche explorée par des travaux concurrents sur la forensique des mémoires empoisonnées. Testez en red team les chaînes mémoire avec des cas compositionnels et dormants, pas seulement des enregistrements grossiers isolés, et évaluez les défenses étape par étape — admission, récupération, comportement — plutôt que de rapporter un score agrégé qui masque où la chaîne échoue réellement. Ces contrôles rejoignent les recommandations de l’OWASP sur l’empoisonnement de la mémoire et des données pour les applications LLM agentiques.

Statut

ÉlémentDétail
ContributionBanc d’essai + analyse mécaniste de l’empoisonnement mémoire persistant
TaxonomieL1 enregistrement unique · L2 compositionnel · L3 dormant déclenché par contexte
Banc d’essai1 227 cas validés à la main · 10 familles de modèles · 3 substrats mémoire
Corruption non défendue~62,5 % en moyenne (L1 ~45 % · L2 ~52 % · L3 ~77 %)
Contrôle de cohérence à l’écritureL1 <5 % · L2 ~23 % · L3 ~28 % (angle mort sur L2/L3)
Meilleure défense (ensemble)~11 % au global, corruption résiduelle en L2/L3

Date clé : article de banc d’essai publié sur arXiv le 16 juillet 2026.

Sources