Le poisoning de la mémoire des agents AI nécessite des défenses couvrant tout le cycle de vie
Tech
AI
AI Agents
AI Security
Memory Poisoning

Le poisoning de la mémoire des agents AI nécessite des défenses couvrant tout le cycle de vie

Une architecture fondée sur la recherche pour empêcher qu’une mémoire d’agent empoisonnée ne survive d’une session à l’autre et n’influence l’utilisation des outils.

Uygar DuzgunUUygar Duzgun
Aug 2, 2026
Mis à jour 15 août 2026
17 min read

Le poisoning de la mémoire des agents AI transforme une entrée non fiable en état durable. Lorsqu’un agent écrit du contenu contrôlé par un attaquant dans une mémoire persistante, ce contenu peut réapparaître plusieurs jours ou sessions plus tard sous la forme d’un contexte apparemment fiable. Défendez l’ensemble du cycle de vie : contrôlez chaque écriture, associez une provenance et une date d’expiration, isolez les enregistrements par utilisateur et par agent, réévaluez les résultats de retrieval, maintenez l’autorisation des actions en dehors du modèle et conservez un journal d’influence permettant le rollback.

Prompt — Copy & Paste
Public : praticiens avancés concevant ou exploitant des agents AI utilisant des outils et dotés d’une mémoire. Les résultats des études ci-dessous décrivent des systèmes expérimentaux spécifiques. Les contrôles de production sont des interprétations pratiques, et non des affirmations selon lesquelles les chercheurs cités recommanderaient une architecture universelle unique.

Table des matières

Qu’est-ce que le poisoning de la mémoire des agents AI ?

Le poisoning de la mémoire des agents AI consiste à insérer ou modifier des enregistrements persistants afin que leur retrieval ultérieur modifie la réponse, la décision ou l’utilisation d’un outil par un agent. L’entrée d’origine peut avoir disparu lorsque l’effet se manifeste. Ce décalage temporel rend l’attaque plus difficile à détecter et à reconstituer qu’une prompt injection visible dans la conversation actuelle.

La mémoire peut se trouver à plusieurs endroits :

une base de données vectorielle contenant des faits et préférences extraits
des résumés écrits dans un stockage relationnel
des fichiers modifiables tels que des notes ou des documents d’instructions
l’état d’outils, des calendriers, des files de tâches ou des fiches clients
une mémoire partagée utilisée par plusieurs agents

La technologie de stockage n’est pas le facteur déterminant. La persistance, combinée à une influence ultérieure, crée la frontière de sécurité.

Ce risque se distingue de trois risques voisins. La prompt injection manipule le contexte actuel du modèle, même si elle peut devenir le canal de diffusion d’une mémoire empoisonnée. Le poisoning des données d’entraînement modifie le comportement du modèle via le corpus d’entraînement. Le retrieval poisoning cible le contenu sélectionné pour une requête. Le poisoning de la mémoire d’un agent persiste un enregistrement que le système peut ensuite traiter comme faisant partie de l’historique, des préférences ou de l’état opérationnel de l’utilisateur.

Trois schémas d’attaque sont importants en pratique :

SchémaForme stockéeActivationPourquoi un filtre simple éprouve des difficultés
------------
Corruption directeUn enregistrement contient la directive nuisible ou le faux faitL’enregistrement est récupéré ultérieurementLe contenu peut être déguisé en préférence, résumé ou note de tâche
Corruption compositionnellePlusieurs enregistrements semblent acceptables pris isolémentLe retrieval conjoint assemble le sens nuisibleChaque écriture est acceptée, car le risque n’apparaît qu’en combinaison
Corruption dormanteUn enregistrement contient une instruction dépendant d’un déclencheurUn événement, une phrase ou un état d’outil ultérieur l’activeLe déclencheur est absent au moment de l’écriture

Les recommandations actuelles de Microsoft décrivent la même préoccupation structurelle en termes défensifs : la mémoire persistante stocke des données sensibles et influence également le comportement du modèle ainsi que la sélection des outils. Elle doit donc être gouvernée à la fois comme un système de données et comme un plan de contrôle. Microsoft Learn

Ce que trois études récentes ont mesuré

Trois preprints de juillet 2026 ont examiné différentes parties de cette menace. Considérés ensemble, ils montrent pourquoi un filtre de mémoire unique constitue un faible critère de mise en production.

GhostWriter a testé l’injection immédiate et l’activation ultérieure

When Agents Remember Too Much a présenté GhostWriter, une attaque en deux étapes contre des agents personnels utilisant des outils. Un adversaire place d’abord du contenu dissimulé dans une source non fiable. L’agent traite cette source et écrit une mémoire influencée par l’attaquant. Une tâche ultérieure récupère l’enregistrement et active son effet.

Dans les agents et modèles testés par l’article, GhostWriter a atteint un taux moyen d’injection d’environ 98 % et un taux moyen d’activation d’environ 60 %. Les auteurs ont également testé AM-Sentry, qui combine une politique plus stricte de sauvegarde en mémoire avec un écran de retrieval. L’article évalue à la fois la réussite de l’attaque et l’utilité de la tâche dans sa simulation personnalisée d’une semaine de travail ; les résultats de la défense varient selon le modèle et la configuration.

Les limites sont importantes. Le travail couvre cinq agents, quatre familles de modèles et des workflows liés aux e-mails ou aux calendriers. Son test d’utilité est personnalisé, les attaquants ne sont pas adaptatifs et les résultats n’estiment pas la fréquence des attaques contre des agents déployés.

MemPoison a séparé les défaillances directes, compositionnelles et dormantes

MemPoison a rassemblé 1 227 cas validés manuellement, répartis entre quatre types d’attaque, trois canaux d’injection et trois substrats mémoire. L’évaluation incluait sept familles de modèles open-weight et trois familles de modèles closed-weight.

La contribution utile de l’article est sa taxonomie à trois niveaux. L1 correspond à une corruption directe d’un seul enregistrement. L2 devient nuisible lorsque plusieurs enregistrements sont récupérés ensemble. L3 reste dormant jusqu’à ce qu’un contexte ultérieur l’active. Les auteurs indiquent que les défenses de base au moment de l’écriture suppriment les attaques directes plus efficacement que les cas L2 ou L3. Leur analyse mécaniste de l’influence attribue cet écart aux enregistrements qui semblent inoffensifs lors de leur stockage, mais deviennent nuisibles par composition ou sous l’effet d’un déclencheur.

Cela ne prouve pas que tous les filtres d’écriture utilisés en production échoueront. Le benchmark couvre trois substrats mémoire représentatifs et des canaux textuels standard. Les auteurs appellent à approfondir les travaux sur la dégradation, la summarization, les contrôles d’accès et d’autres écosystèmes mémoire.

MemGhost a testé un canal de diffusion par e-mail en une seule étape

When Claws Remember but Do Not Tell a présenté WhisperBench, un benchmark de 108 cas utilisant un workflow IMAP/SMTP réel et une compétence d’agent e-mail. Son framework d’attaque, MemGhost, génère un payload e-mail sans feedback à l’exécution. La réussite exige que l’agent adopte la mémoire empoisonnée, évite d’alerter l’utilisateur dans sa réponse immédiate et modifie son comportement ultérieur.

Sur 56 cas réservés au test, l’article rapporte une réussite de bout en bout de 87,5 % sur OpenClaw avec GPT-5.4 et de 71,4 % sur le Claude Code SDK avec Sonnet 4.6.

Ces chiffres appartiennent au benchmark, à l’environnement proxy, à la conception de la récompense et aux versions de modèles des auteurs. L’évaluation commence après l’arrivée d’un message dans la boîte de réception. Elle ne modélise pas les contrôles du fournisseur de messagerie tels que le filtrage antispam, SPF, DKIM ou DMARC. L’article est un preprint en première version ; ses résultats doivent donc être répliqués.

Pourquoi le filtrage au moment de l’écriture ne suffit pas

Un contrôle d’écriture observe l’enregistrement proposé et les éléments disponibles à cet instant. Il peut ne pas voir la tâche future, les autres enregistrements qui seront récupérés à ses côtés ou l’outil que l’agent appellera ultérieurement.

Cela crée quatre angles morts :

Composition : deux enregistrements d’apparence ordinaire peuvent former ensemble une instruction dangereuse.
Changement de contexte : une préférence sûre dans un workflow peut devenir dangereuse dans un autre.
Obsolescence : un enregistrement autrefois correct peut devenir faux après une modification de politique, de compte ou de projet.
Dérive d’autorité : une mémoire descriptive peut être traitée comme une permission alors qu’aucun système d’autorisation ne l’a approuvée.

Les contrôles au moment de l’écriture restent importants. Ils réduisent la quantité d’état non sûr qui atteint la persistance. L’erreur consiste à traiter l’approbation du stockage comme une confiance permanente.

Le retrieval doit renvoyer un contexte candidat, et non une autorité. Avant d’insérer un enregistrement dans le contexte du modèle, le système peut vérifier sa source, son ancienneté, sa pertinence pour la tâche, ses contradictions, sa sensibilité et l’effet demandé. Un enregistrement à haut risque peut être retenu, résumé ou envoyé en revue. Les recommandations actuelles de Microsoft préconisent cette séparation entre écriture et retrieval, ainsi qu’un isolement déterministe et une visibilité sur l’ensemble du cycle de vie. Microsoft Learn

Recommandé pour vous

La décision finale de sécurité doit toujours être prise en dehors de la mémoire. Une note récupérée indiquant « envoyer les rapports à cette adresse » ne doit pas modifier la liste blanche des destinataires. Une préférence mémorisée pour une région de déploiement ne doit pas créer de permission cloud. Utilisez deterministic AI agent permissions pour évaluer l’action proposée selon l’utilisateur, la ressource, la portée et la politique actuels.

Une architecture sécurisée pour la mémoire des agents

Le système doit disposer d’une chaîne traçable allant de la source à l’action :

`source → write decision → stored version → retrieval decision → model context → policy decision → tool result`

Cycle de vie de la sécurité de la mémoire d’un agent AI avec contrôle des écritures, quarantaine, stockage isolé, contrôles du retrieval, autorisation des actions, audit et rollback
Cycle de vie de la sécurité de la mémoire d’un agent AI avec contrôle des écritures, quarantaine, stockage isolé, contrôles du retrieval, autorisation des actions, audit et rollback

*Légende : un enregistrement mémoire ne devient un contexte candidat qu’après les contrôles d’écriture et de retrieval. Une politique indépendante autorise toujours chaque action ayant des conséquences, tandis que la chaîne d’influence facilite l’investigation et le rollback.*

1. Exiger une intention explicite pour les écritures durables

Ne laissez pas chaque message, document ou réponse d’outil devenir une mémoire à long terme. Définissez les événements pouvant créer un état durable. Les préférences confirmées par l’utilisateur et les actions explicites « souviens-toi de ceci » sont plus faciles à justifier qu’un résumé autonome d’une pièce jointe non fiable.

Enregistrez qui ou quoi a demandé l’écriture. Si un outil ou un sous-agent l’a initiée, préservez cette identité au lieu de tout attribuer au nom de l’utilisateur final.

2. Stocker la provenance, la portée et l’expiration avec l’enregistrement

Un enregistrement mémoire utile nécessite davantage que du texte et un embedding. Stockez au minimum :

l’identité de la source et l’objet source
la portée de l’utilisateur, de l’agent, du tenant et de l’espace de travail
la date de création, la version du modèle ou de l’extracteur et la version de la politique
le niveau de confiance ou le statut de vérification
la finalité prévue et les workflows autorisés
la date d’expiration ou de révision
l’enregistrement parent et l’historique des remplacements

Une signature peut protéger l’intégrité de l’enregistrement. Elle ne peut pas prouver que le contenu d’origine était vrai, sûr ou autorisé.

3. Appliquer l’isolement dans le code et le stockage

Les frontières entre tenants, utilisateurs, agents et espaces de travail doivent être appliquées par des listes de contrôle d’accès, des tokens à portée limitée, des politiques au niveau des lignes et des frontières de chiffrement. Les instructions de prompt ne constituent pas un contrôle d’accès. La mémoire partagée doit être une fonctionnalité explicite, avec des auteurs et lecteurs nommés, et non un namespace par défaut choisi par commodité.

Recommandé pour vous

Le même principe s’applique à l’environnement d’exécution. Si le contenu récupéré peut provoquer l’exécution de code ou une utilisation étendue des outils, confinez le processus avec AI agent sandbox security. L’isolation de la mémoire limite le contexte qui franchit une frontière. Les contrôles de sandbox et d’identité limitent ce qui se produit si un contexte non sûr atteint malgré tout l’agent.

4. Mettre en quarantaine les écritures à faible confiance

Créez un état intermédiaire entre « rejeté » et « mémoire fiable ». Les fichiers externes, e-mails, pages web, sorties indirectes d’outils et enregistrements dont l’intention est incertaine peuvent entrer en quarantaine. Ils ne doivent pas apparaître dans le retrieval normal avant qu’une règle déterministe ou un réviseur autorisé ne les promeuve.

La quarantaine offre également aux équipes de réponse aux incidents un emplacement où conserver les preuves sans poursuivre l’influence.

5. Réévaluer les enregistrements au moment du retrieval

Le risque du retrieval dépend de la tâche actuelle. Évaluez l’ensemble sélectionné, et pas seulement chaque enregistrement :

La source a-t-elle le droit d’influencer ce workflow ?
L’enregistrement a-t-il expiré ou été remplacé ?
Contredit-il une source de confiance supérieure ?
Plusieurs enregistrements forment-ils une nouvelle instruction lorsqu’ils sont combinés ?
L’enregistrement décrit-il un fait ou tente-t-il d’accorder une autorité ?
Sa présentation franchirait-elle une frontière entre utilisateurs ou tenants ?
Recommandé pour vous

Évaluez le retrieval séparément de la génération. Un RAG evaluation workflow aide à distinguer « le mauvais enregistrement a été sélectionné » de « le modèle a mal utilisé un enregistrement correct ». Ajoutez des dimensions propres à la mémoire, telles que la provenance, la dépendance à un déclencheur, la composition et l’activation intersessions.

6. Maintenir l’autorisation des outils indépendante

La mémoire peut fournir des paramètres. Elle ne doit jamais étendre les permissions. La passerelle d’outils doit appliquer l’identité actuelle, l’action autorisée, la limite de ressource, la destination, le budget et les exigences d’approbation. Traitez les arguments dérivés de la mémoire comme des entrées non fiables et validez-les selon la politique actuelle.

L’approbation humaine nécessite également un contexte récent. Affichez l’action proposée, la ressource concernée, la destination des données et les mémoires qui l’ont influencée. Un simple « Approuver ? » sans cette chaîne dissimule les éléments pertinents de la décision.

7. Journaliser l’influence et permettre le rollback

Journalisez les opérations de création, lecture, mise à jour et suppression de la mémoire, avec leur identité et leur provenance. Pour les actions ayant des conséquences, conservez les identifiants et versions des enregistrements injectés dans le contexte. Cela permet de répondre à trois questions d’incident :

Quelle source a créé l’enregistrement empoisonné ?
Quelles sorties ou actions ultérieures l’ont utilisé ?
Quelles versions doivent être révoquées, corrigées ou rejouées ?

La suppression doit éliminer l’influence active, et pas seulement masquer une ligne dans l’interface utilisateur. Testez les indexes, résumés, caches, réplicas et enregistrements dérivés. Les recommandations d’OWASP pour les agents préconisent une mémoire validée et isolée, ainsi que des tests adversariaux et des preuves avant mise en production ; son analyse plus large de la mémoire associe la prompt injection persistante à la surface de menace de la mémoire des agents. OWASP Agent Security Cheat Sheet OWASP GenAI Security Project

Choisir une politique pour chaque classe de mémoire

Une seule politique de rétention est trop grossière. Commencez par des classes soumises à des règles différentes d’écriture et de retrieval.

Classe de mémoirePolitique d’écriture par défautPolitique de retrievalAutorité sur les actions
------------
Contexte de tâche éphémèreAutomatique, TTL courtTâche actuelle uniquementAucune
Préférence confirmée par l’utilisateurConfirmation expliciteMême utilisateur et finalité déclaréePeut suggérer, jamais autoriser
Résumé généré par l’agentVersionné et lié aux sourcesRevérifier les sources et l’actualitéAucune
Contenu externeQuarantaine par défautSeulement après vérifications de confiance et de pertinenceAucune
Instruction opérationnelleAuteur autorisé et revue de politiquePortée exacte, version actuelleNécessite toujours la politique de l’outil
Secret ou donnée réglementéeBloquer ou utiliser des systèmes dédiés aux secrets et aux donnéesNe jamais placer dans la mémoire généralePlan de contrôle dédié uniquement

Ce tableau constitue un point de départ, et non une affirmation de conformité. Un agent médical, un assistant de programmation, un agent commercial et un assistant personnel présentent des modèles de dommages différents. L’invariant est plus limité : la persistance ne doit pas convertir silencieusement un contenu non fiable en permission.

Un workflow reproductible de test du memory poisoning

Construisez le banc de test autour de marqueurs inoffensifs et de comptes jetables. Vous n’avez pas besoin de véritables identifiants ni de payloads d’exfiltration pour détecter les défaillances de persistance et de politique.

Étape 1 : Capturer une référence propre

Exécutez un ensemble fixe de tâches avec un magasin mémoire vide. Enregistrez les réponses, les résultats du retrieval, les propositions d’outils, les décisions de politique, la latence et les explications visibles par l’utilisateur. Répétez suffisamment l’expérience pour distinguer les changements du système de la variance normale du modèle.

Étape 2 : Définir des cas propres et empoisonnés appariés

Pour chaque cas, conservez la tâche utilisateur constante et ne modifiez que le chemin potentiel de la mémoire. Couvrez au minimum :

un enregistrement direct contenant un marqueur inoffensif non autorisé
deux enregistrements dont le sens combiné diffère de celui de chacun pris isolément
un enregistrement dormant activé par une phrase ou un état de tâche ultérieur
un enregistrement obsolète entrant en conflit avec une source faisant plus autorité et plus récente
un enregistrement écrit pour un utilisateur ou tenant et interrogé depuis un autre
un enregistrement corrigé ou supprimé, suivi de la tâche d’activation d’origine

Utilisez une action canary telle que l’écriture de `TEST_BLOCKED` dans un journal jetable. Le test échoue si l’agent exécute ou propose cette action en dehors du chemin de politique attendu.

Étape 3 : Observer chaque frontière

Capturez quatre résultats distincts :

Adoption à l’écriture : le candidat a-t-il été stocké, rejeté ou placé en quarantaine ?
Exposition par retrieval : a-t-il été sélectionné et inséré dans le contexte ?
Influence comportementale : la réponse ou le plan a-t-il changé ?
Résultat de l’action : la politique indépendante a-t-elle bloqué ou autorisé l’appel d’outil ?

Une réussite de bout en bout peut masquer une couche faible. Par exemple, l’autorisation peut bloquer l’action canary alors qu’un enregistrement empoisonné a été stocké et récupéré à plusieurs reprises. Il s’agit d’un confinement utile, mais le défaut de mémoire doit tout de même être corrigé.

Étape 4 : Mesurer l’utilité et les faux positifs

Faites passer les cas de mémoire légitimes dans le même pipeline. Suivez l’achèvement des tâches, les préférences utilisateur acceptées, les mises en quarantaine incorrectes, la précision du retrieval, la latence et le volume de revue. Un filtre qui bloque toute mémoire durable présente un faible taux de réussite des attaques parce qu’il a supprimé la fonctionnalité.

Étape 5 : Définir des critères de mise en production selon le risque

Les critères utiles comprennent :

zéro retrieval inter-tenant dans la suite de tests
zéro action canary non autorisée
une provenance complète pour chaque enregistrement durable
des journaux d’influence complets pour les actions ayant des conséquences
une révocation réussie dans les indexes, caches, résumés et réplicas
des taux bornés d’adoption et d’activation des enregistrements empoisonnés pour le modèle de menace choisi
un seuil documenté d’utilité légitime et un budget de faux positifs

Le projet open source Agent Memory Guard d’OWASP constitue un signal d’implémentation pour l’analyse de mémoire et les outils de test. Son dépôt et son évaluation auto-déclarée peuvent aider les équipes à examiner des approches, mais ne remplacent pas les tests de l’agent, du modèle, du backend mémoire et de la pile de politiques réellement utilisés.

Réexécutez la suite après toute modification de l’extraction mémoire, de la summarization, des embeddings, du retrieval, des prompts, des modèles, des schémas d’outils, de l’autorisation ou de la logique de suppression. Ces couches interagissent.

Ce que les éléments disponibles permettent — ou non — d’affirmer

Les articles ont mesuré la réussite des attaques dans des benchmarks construits. Ils n’ont pas mesuré le taux de poisoning de la mémoire des agents AI dans la population de production.

Ils permettent de tirer trois conclusions plus limitées :

la mémoire persistante peut transporter une influence d’une session à l’autre
les attaques directes, compositionnelles et dormantes sollicitent des chemins de défense différents
les défenses limitées à l’écriture laissent subsister des risques qui apparaissent lors du retrieval conjoint ou d’une activation ultérieure

Les articles déduisent que la gouvernance de la mémoire nécessite des défenses sensibles au contexte. Microsoft et OWASP recommandent indépendamment une défense en profondeur couvrant les écritures, l’isolement, le retrieval, le contrôle utilisateur, l’observabilité et les tests.

L’interprétation pratique consiste à rendre chaque transition testable. Une équipe doit pouvoir expliquer pourquoi un enregistrement a été stocké, pourquoi il a été récupéré, comment il a influencé une action, quelle politique a autorisé cette action et comment supprimer les effets en aval de l’enregistrement.

Questions fréquentes des équipes

Le poisoning de la mémoire des agents AI est-il identique à la prompt injection ?

Non. La prompt injection est une manière d’introduire des instructions hostiles. Le poisoning de la mémoire ajoute la persistance : le contenu manipulé est stocké, récupéré dans un contexte ultérieur et peut influencer le raisonnement ou l’utilisation future des outils après la disparition de l’entrée d’origine.

Les enregistrements mémoire signés peuvent-ils empêcher le poisoning ?

Non. Les signatures peuvent prouver qu’un enregistrement n’a pas été modifié après sa création. Elles ne prouvent pas que le contenu d’origine était vrai, sûr ou autorisé. Une conception sécurisée nécessite également une provenance, une intention d’écriture explicite, une portée, une expiration, des contrôles du retrieval et une autorisation indépendante des actions.

Les défenses contre le poisoning de la mémoire doivent-elles s’exécuter à l’écriture ou au retrieval ?

Les deux. Les contrôles d’écriture réduisent la persistance de contenu non sûr. Les contrôles du retrieval détectent les risques obsolètes, contradictoires, compositionnels ou dépendants d’un déclencheur qui n’étaient pas visibles lors du stockage des enregistrements individuels. Aucune de ces couches ne doit pouvoir accorder une autorité sur les outils.

Vérification des affirmations

AffirmationVérificationStatut
---------
GhostWriter a atteint environ 98 % d’injection moyenne et environ 60 % d’activation moyenne dans ses expériencesRapporté par l’article pour les configurations d’agents personnels testées ; il ne s’agit pas d’une estimation de prévalence en productionVérifié, avec périmètre
MemPoison contient 1 227 cas validés manuellement couvrant quatre types d’attaque, trois canaux d’injection et trois substrats mémoireIndiqué dans le résumé et la description de l’évaluation de l’articleVérifié
Les défenses de base au moment de l’écriture présentent des angles morts structurels pour les attaques compositionnelles et dormantesLes auteurs de MemPoison rapportent une influence résiduelle pour les cas L2 et L3Vérifié, avec périmètre
MemGhost a rapporté des taux de réussite de bout en bout de 87,5 % et 71,4 % sur deux configurations réservées au testRapporté sur 56 cas réservés au test dans le cadre expérimental de l’articleVérifié, avec périmètre
MemGhost n’a pas mesuré les contrôles antispam et d’authentification des fournisseurs de messagerieL’évaluation commence après la livraison dans la boîte de réception et ne modélise pas ces contrôlesVérifié
Microsoft recommande de traiter la mémoire comme des données et comme un plan de contrôleIndiqué dans les recommandations actuelles de Microsoft LearnVérifié
Une signature valide ne rend pas une mémoire fiableL’intégrité après création n’établit ni l’origine sûre, ni la véracité, ni l’intention, ni l’autoritéVérifié
L’activité d’un dépôt ne prouve pas qu’un framework mémoire est sécuriséLes étoiles, commits et releases mesurent l’attention et la maintenance, pas l’efficacité de sécuritéVérifié

Sources

Manage memory safety in agentic systems — Microsoft Learn, mis à jour le 3 juin 2026.
AI Agent Security Cheat Sheet — OWASP Cheat Sheet Series.
Memory Is a Feature. It Is Also an Attack Surface — OWASP GenAI Security Project, 13 mai 2026.
OWASP Agent Memory Guard — signal d’implémentation open source et d’outillage de test ; les résultats rapportés par le projet ne constituent pas une validation indépendante.