Prendre rendez-vous

Agentic AI Security Testing : Les preuves qui rendent les agents IA testables

Une trace commune montre seulement que des événements vont ensemble. Elle ne dit pas si un agent d’IA y a respecté l’approbation, la cible, l’autorisation et la provenance des données. Notre article, accepté à l’ICSPIS 2026 (IEEE), montre quelle télémétrie est nécessaire pour cela. Cette page transpose les résultats à l’OWASP Agent Control Standard (ACS).

Mise à jour: octobre 2026 · Valeri Milke, Lead Auditor ISO 27001 & ISO 42001

Accepted version avec mention de copyright IEEE

92,9 %Rappel de sécurité du profil threat-guided P3 sur l’ensemble des sept conditions de télémétrie : avec 100 % de précision et 0 % de faux positifs sur les cas bénins
16,7 %Rappel avec une corrélation purement causale (P2), bien que 85,7 % des effets aient été attribués sans ambiguïté. L’attribution et l’évaluation de sécurité sont des exigences distinctes
50 %Rappel de P3 lorsque tous les événements de décision manquent (F1). Les contrôles d’approbation, de scope et de cible perdent leur point de comparaison
3024Cellules profil-perturbation-trace : 36 templates de workflow synthétiques × 3 répétitions déterministes × 4 profils de preuves × 7 conditions de télémétrie

Les applications agentiques relient des décisions de modèle à des outils qui lisent des données, délèguent du travail et modifient des systèmes externes. Un incident de sécurité s’étend donc du contenu ingéré jusqu’à l’effet sur le système cible, en passant par la planification, l’approbation et l’appel d’outil. Dans l’article « Threat-Model-Guided Security Testing for Agentic AI: MCP Traces with MAESTRO and STRIDE », Valeri Milke dérive de MAESTRO et de STRIDE un Evidence Contract pour les workflows du Model Context Protocol. Il a été testé sur 3024 cellules profil-perturbation-trace. Le résultat central : les identifiants de trace causaux améliorent l’attribution, mais ne fournissent pas la sémantique nécessaire pour évaluer l’autorisation ou la provenance. Seules des liaisons pertinentes pour la sécurité font passer le rappel de 16,7 % à 92,9 %. L’OWASP Agent Control Standard (ACS) offre pour cela une spécification ouverte : v0.1.0, release 0.1.2, qualifiée de « public preview » par son Project Lead et rattachée depuis septembre 2026 à l’OWASP GenAI Security Project. Elle fournit hooks, dispositions, provenance et mappings de trace. Nous montrons champ par champ comment les deux s’articulent. Nous montrons aussi où ACS v0.1 présente encore des lacunes et comment en tirer des tests de sécurité solides pour vos agents.

En un coup d’œil

Les résultats en cinq phrases

En bref : pour que la sécurité d’un agent d’IA puisse être testée, la télémétrie doit attester chaque étape, de l’entrée à l’effet observé en passant par la décision de policy et l’appel d’outil, avec des faits comparables. Les identifiants de corrélation seuls ne suffisent pas. L’OWASP Agent Control Standard fournit pour cela des hooks, de la provenance et des mappings de trace. Les Decision Receipts et des preuves d’effet indépendantes doivent être ajoutés par les opérateurs.

  1. 92,9 %Les liaisons sémantiques sont décisivesLe profil threat-guided P3 a atteint, sur l’ensemble des conditions de télémétrie, 92,9 % de rappel avec 100 % de précision et 0 % de faux positifs. La corrélation purement causale n’a atteint que 16,7 %.
  2. 85,7 %L’attribution n’est pas l’évaluationP2 et P3 ont attribué sans ambiguïté autant d’effets l’un que l’autre. Seul P3 pouvait juger si l’approbation, le scope, la provenance et la cible avaient été respectés.
  3. 50 %Les Decision Receipts sont critiquesSans événements de décision, le rappel de P3 est tombé de moitié. La reconstruction et l’attribution sont tombées à 0 %. Dans ACS, cela correspond, selon notre interprétation, à un Guardian fail-open sans Decision Receipt.
  4. +255 %Les preuves ont un prixP3 a produit en médiane 2341 octets de JSON canonique par workflow, contre 659 octets pour des logs fragmentés. C’est pourquoi il faut introduire d’abord des receipts complets pour les opérations privilégiées.
  5. 6Six familles, limite de portée claireL’expérience vérifie la force probante de fixtures déterministes de type MCP. Ce n’est pas un benchmark de LLM ni de prompt injection. La prochaine étape est un véritable SDK MCP.

Du modèle de menaces au standard de contrôle

Les briques sur lesquelles reposent l’article et ACS, et la suite. Cliquez sur une étape pour en voir le détail.

Concepts clés de l’article et du standard

Cliquez sur une carte pour lire le concept en détail. L’ordre suit l’article : de la problématique à l’Evidence Contract, jusqu’aux coûts et à l’exploitation.

Quatre profils de preuves, et ce que chacun établit réellement

Les profils se construisent les uns sur les autres. Chaque niveau ajoute des champs. Les taux valent sur l’ensemble des sept conditions de télémétrie (Table II de l’article), les valeurs en octets sont des médianes sous F0.

Rappel 84,5 % · Faux positifs 85,7 %
  • Uniquement des identifiants et des horodatages locaux aux composants. La reconstruction attribue un effet à l’outil le plus proche dans le temps.
  • Attribution sans ambiguïté 0 % : des workflows parallèles de la même famille fusionnent en chaînes erronées.
  • Le rappel apparemment élevé n’est pas une performance de sécurité. Des chaînes fusionnées à tort déclenchent une alerte sur 85,7 % des cas bénins, la précision tombe à 66,4 %.
pas d’ACSHeuristique temporelleseul le comptage des doublons est fiable
Interactif · Trace Replay

Evidence Contract × ACS : examiner un chemin d’agent étape par étape

Choisissez une famille d’attaques de l’article, le profil de preuves et, en option, la perturbation F1. Les noms de champs et les valeurs proviennent de l’expérience, les règles de contrôle sont les mêmes que dans l’évaluateur. L’étape à laquelle les preuves attestent la violation en premier est marquée en rouge.

Scénario
Profil de preuves

L’approbation valait pour mail.send avec des arguments précis. C’est le même nom d’outil qui est exécuté, avec des arguments échangés. Le digest d’arguments diffère.

pInput

Prompt ou enregistrement récupéré avec sa provenance, l’opération demandée, le scope et la cible visée.

trace_id
"4bf92f3577b34da6a3ce929d0e0e4736"
span_id
"00f067aa0ba902b7"
parent_span_id
null
action_id
"act-9c41e2d07a"
source_trust
"trusted"
requested_operation
"read"
requested_scope
"kb.read"
principal_id
"principal-vamisec"
memory_trust
"trusted"
memory_age_s
30
intended_target
"tenant-a/resource-17"
Équivalent dans ACS v0.1
Hook / source
steps/userMessage · steps/knowledgeRetrieval · steps/memoryContextRetrieval
Champs
Provenance { origin, source_id, derived_from }
OpenTelemetry
acs.message.user · acs.knowledge.retrieval · acs.memory.retrieval + acs.provenance.origin
OCSF
6002 Application Lifecycle (ACS: Application Activity) · 6005 Datastore Activity + acs_provenance_origin
dDecision

Décision de policy explicite : qui a approuvé quoi, avec quoi, vers où et avec quelles capabilities ?

trace_id
"4bf92f3577b34da6a3ce929d0e0e4736"
span_id
"a1b2c3d4e5f60718"
parent_span_id
"00f067aa0ba902b7"
action_id
"act-9c41e2d07a"
decision
"allow"
approval_id
"apr-7f3c2a91d0be"
approval_subject
"principal-vamisec"
approved_tool
"mail.send"
approved_args_hash
"a3f9e0…c21e"
approved_target
"recipient:security@example.org"
approved_audience
"mcp://server-a"
approved_capabilities
["mail.send"]
max_delegation_depth
1
idempotency_required
true
Équivalent dans ACS v0.1
Hook / source
AcsResult (response envelope) · policy_data
Champs
decision · reasoning · reason_codes · policy_references · cited_provenance_ids · ask_details · chain_hash
OpenTelemetry
span event acs.decision (acs.decision, acs.evaluator)
OCSF
2004 Detection Finding (deny · modify · ask · defer)
tTool

Appel d’outil MCP qui répète les valeurs réellement exécutées au lieu de simplement renvoyer à la décision.

trace_id
"4bf92f3577b34da6a3ce929d0e0e4736"
span_id
"b7ad6b7169203331"
parent_span_id
"a1b2c3d4e5f60718"
action_id
"act-9c41e2d07a"
approval_id
"apr-7f3c2a91d0be"
approval_subject
"principal-vamisec"
tool_name
"mail.send"
args_hash
"9d02b7…e4f8"
target
"recipient:security@example.org"
audience
"mcp://server-a"
effective_capabilities
["mail.send"]
delegation_depth
1
idempotency_key
"idem-5be04d1c"
Équivalent dans ACS v0.1
Hook / source
steps/toolCallRequest · steps/subagentStart
Champs
tool · operation · capability · arguments[].provenance · intent
OpenTelemetry
gen_ai.tool.call (ACS span · gen_ai.tool.name, acs.capability)
OCSF
1007 Process Activity
eEffect

Effet observé indépendamment sur le système cible, avec cible, digest, approbation et clé d’idempotence.

trace_id
"4bf92f3577b34da6a3ce929d0e0e4736"
span_id
"5f1e0c2b9d8a7e64"
parent_span_id
"b7ad6b7169203331"
action_id
"act-9c41e2d07a"
tool_name
"mail.send"
args_hash
"9d02b7…e4f8"
target
"recipient:security@example.org"
audience
"mcp://server-a"
approval_id
"apr-7f3c2a91d0be"
idempotency_key
"idem-5be04d1c"
Équivalent dans ACS v0.1
Hook / source
steps/toolCallResult + effect sink
Champs
exit_status · request_id_ref (ACS) · observed target, digest, idempotency key (sink)
OpenTelemetry
gen_ai.tool.result (ACS span · gen_ai.tool.name, acs.exit_status)
OCSF
1007 Process Activity
Invariant violéRègle: Liaison d’approbation · Première étape: t (Tool)P3 : toutes les liaisons threat-guided. Les invariants sont vérifiables.

Représentation sous forme d’esquisse. Chez ACS, les champs du contrat se trouvent en partie dans le payload du hook (Input : provenance ; Tool : tool, arguments, capability), les champs de liaison dans policy_data de l’enveloppe de réponse (Decision) ou dans un puits d’effets indépendant (Effect). La confiance dans la source est déduite par le Guardian à partir de origin/source_id, ce n’est pas un champ du schéma v0.1. Les valeurs comme example.org sont des valeurs fictives.

Interactif · mesures réelles

Matrice de fautes : où la détection tient et où elle casse

Quatre profils de preuves × sept conditions de télémétrie, 108 instances de workflow par cellule. Choisissez un indicateur et cliquez sur une cellule pour voir les résultats par famille d’attaques. Toutes les valeurs proviennent de l’exécution reproductible de l’article.

Indicateur
Matrice de fautes : où la détection tient et où elle casse — Rappel de sécurité
ProfilF0inchangéF1sans décisionF2scission de traceF3sans parent d’effetF4décalage temporelF5effet en doubleF6échange d’Action-ID
P0Logs locaux
P1+ Trace-ID
P2+ Span/Parent/Action
P3+ Security Bindings
Cellule sélectionnée

P3 + Security Bindings × F1 sans décision

Tous les événements de décision supprimés. Dans ACS, par exemple un Guardian injoignable avec la failure posture proceed, des événements acs.decision échantillonnés ou un puits de trace défaillant (Trace est best-effort et ne bloque jamais l’application).

50 %Rappel de sécurité
0 %Attribution sans ambiguïté
0 %Reconstruction exacte
0 %Taux de faux positifs
100 %Précision
50 %Règle correcte

Cas non sûrs par famille d’attaques

  • Authority Inversion
  • Approval Replay
  • Scope Amplification
  • Memory Substitution
  • Target Redirection
  • Duplicate Effect

détecté (12) Faux positifs sur les jumeaux bénins (6)

Interprétation

La faiblesse résiduelle dominante : sans événement de décision, l’autorité de la source, la mémoire et les doublons restent détectables. Les contrôles d’approbation, de scope et de cible perdent leur point de comparaison.

Corpus synthétique et déterministe de 36 templates × 3 répétitions. Les taux ne valent que pour les six familles codées. Des intervalles de confiance seraient trompeurs, car les répétitions ne font varier que les IDs et le jitter.

Mapping

Crosswalk ACS : famille d’attaques → prédicat → hook → réaction du Guardian

Pour chacune des six familles de l’article : quelles preuves attestent la violation, où ACS les capture et comment un Guardian devrait réagir. MAESTRO, STRIDE et OWASP ASI servent de repère.

Famille d’attaquesPrédicat de preuveMAESTRO · STRIDE · OWASPHook et champs ACSRéaction du GuardianPremière étape
Authority InversionProvenance non fiable ET opération demandée en écritureL2 Data Operations · L3 Agent FrameworksSpoofing · Elevation of PrivilegeASI01steps/knowledgeRetrieval → Provenance.origin; steps/toolCallRequest.capabilitydeny, ou ask avec un approbateur humain ; reason code untrusted_into_consequentialp
Approval Replay / échange d’argumentsID d’approbation, sujet, outil ou digest d’arguments à l’appel ≠ valeurs approuvéesL3 Agent Frameworks · L6 Security & ComplianceTampering · RepudiationASI02 · ASI09AcsResult.policy_data ↔ steps/toolCallRequest.argumentsdeny ; après modify, relier à nouveau le receipt aux valeurs réécritest
Delegation Scope AmplificationCapabilities effectives ⊄ ensemble approuvé OU profondeur de délégation > limiteL3 Agent Frameworks · L7 Agent EcosystemElevation of PrivilegeASI03steps/subagentStart · steps/toolCallRequest.capabilitymodify (restreindre les capabilities) ou denyt
Memory Provenance SubstitutionMémoire non fiable ou expirée ET cible ≠ cible viséeL2 Data OperationsTampering · SpoofingASI06steps/memoryContextRetrieval → Provenance.derived_fromdeny ; mettre l’entrée de mémoire en quarantainet
Post-Decision Target RedirectionCible approuvée ≠ cible exécutéeL3 Agent Frameworks · L4 Deployment & InfrastructureTampering · Information DisclosureASI02steps/toolCallRequest.arguments (target) ↔ policy_datadeny ; normaliser la cible avant la comparaison (résolution d’alias)t
Duplicate Effect under RetryPlus d’un effet par approbation (évaluateur de l’article) ; en complément, clé d’idempotence manquante ou renouveléeL4 Deployment & Infrastructure · L5 Evaluation & ObservabilityRepudiation · TamperingASI08steps/toolCallResult + effect sink (idempotency key)Imposer l’idempotence ; le puits d’effets signale le doublon comme findinge

La correspondance avec MAESTRO, STRIDE et OWASP ASI ainsi que les réactions de Guardian recommandées sont des interprétations VamiSec fondées sur l’article. Les noms de hooks et de champs correspondent aux schémas ACS v0.1.0. Le reason code untrusted_into_consequential y est cité comme catégorie d’exemple.

Interactif · Threat-to-Assertion

Compilateur de tests : faire d’une menace un invariant vérifiable

L’article traduit chaque hypothèse MAESTRO/STRIDE en un tuple H = (boundary, precondition, invariant, evidence, oracle). Choisissez l’un des cinq groupes d’invariants. Le compilateur montre le tuple et deux esquisses : une policy de Guardian sur des entrées ACS et un test négatif pour la CI.

Hypothèse H = (boundary, precondition, invariant, evidence, oracle)
Frontière
Decision → Tool
Précondition
Une approbation existe (allow ou ask avec accord).
Invariant
L’ID d’approbation, le sujet, l’outil et le digest d’arguments à l’appel correspondent exactement aux valeurs approuvées.
Preuves
Decision Receipt dans policy_data, écho de l’outil dans steps/toolCallRequest
Oracle
Alarme à toute divergence de l’un des quatre champs. Première étape : t
package acs.guardian.approval_binding

# Sketch: an approval is valid only for the exact call it approved.
# data.receipts holds the bound values the Guardian wrote into policy_data.
receipt := data.receipts[input.params.metadata.session_id][input.params.payload.tool.name]

# Digest over argument values only (provenance labels excluded).
values := {k: v.value | some k, v in input.params.payload.arguments}

exercised := {
  "args_hash": crypto.sha256(json.marshal(values)),
  "target": input.params.payload.arguments.target.value,
  "principal": input.params.metadata.user_context.user_id,
}

decision := {
  "decision": "deny",
  "reasoning": "Call does not match the bound approval",
  "reason_codes": ["approval_binding_mismatch"],
} if {
  input.method == "steps/toolCallRequest"
  some field in ["args_hash", "target", "principal"]
  exercised[field] != receipt[field]
}

Esquisses à titre d’illustration, non normatives. Les chemins comme input.params.payload suivent l’enveloppe de requête ACS v0.1.0 ; les champs de policy_data sont les liaisons de l’Evidence Contract.

Calculateur

Budget de preuves : ce que l’Evidence Contract représente en stockage

La base est constituée des octets médians par workflow de l’article. Le calculateur montre le volume de JSON canonique par profil, la priorisation de l’article (receipts complets pour les opérations privilégiées) et, comme hypothèse VamiSec, le tracing causal pour le reste. La détection sémantique y disparaît toutefois.

Conservation
Volume sur la durée de conservation
  • P024 GB
  • P131 GB
  • P245 GB
  • P385 GB
Mix recommandé53 GBP3 pour les workflows privilégiés, P2 pour les autres · 146 MB par jour

Indicateur du volume de sérialisation : JSON canonique hors enveloppes de transport, compression, indexation, réplication ou contrôles de protection des données. Pas une mesure de production (article §V-C).

Deep Dive · 10 chapitres

De l’article à la pratique : tests d’agents avec Evidence Contract et ACS

Problème, modèle de menaces, Evidence Contract, l’OWASP Agent Control Standard, le mapping entre les deux, protocole expérimental, résultats, coûts, un playbook pratique et les limites de la portée des conclusions. Les chiffres proviennent de l’article accepté à l’ICSPIS 2026, les indications sur ACS de la spécification v0.1.0.

01Chapitre 1

Pourquoi les tests d’agents ont besoin de preuves

Les agents d’IA qui utilisent des outils franchissent des frontières de confiance avant qu’une opération choisie par le modèle ne devienne un effet externe. C’est précisément là que les preuves manquent dans la plupart des environnements.

Dans le Model Context Protocol (MCP), un hôte crée un client pour chaque serveur. L’hôte est censé faire respecter l’autorisation, le consentement et les frontières de sécurité. Les outils sont découverts et appelés via des opérations de protocole structurées. Leurs descriptions et annotations peuvent influencer le comportement du modèle et ne sont pas fiables en soi. Un incident s’étend donc sur l’ingestion de contenu, la planification, l’approbation, l’appel d’outil et l’effet distant. Il ne reste pas confiné à un seul appel de modèle.

De cette architecture découlent trois transitions observables : hôte→client, client→serveur et serveur→effet. Une trace qui se termine sur une réponse d’outil réussie peut néanmoins passer à côté de la question de savoir si une écriture externe a eu lieu, a été exécutée deux fois ou a atteint une autre cible. Les logs de composants ordinaires ou un identifiant de trace commun consignent rarement si l’approbation correspondait, à l’exécution, au principal, aux arguments, à la cible et à l’autorité déléguée.

Trois questions de recherche

  • RQ1 : quels profils de preuves reconstruisent un effet sous des perturbations de télémétrie contrôlées et l’attribuent sans ambiguïté ?
  • RQ2 : des liaisons sémantiques dérivées de menaces améliorent-elles la détection de sécurité au-delà de la simple corrélation ?
  • RQ3 : que coûtent les preuves, et quels modes de défaillance subsistent ?

La contribution comporte trois volets : un Evidence Contract en quatre étapes qui fait correspondre les constats MAESTRO et STRIDE à des champs d’exécution ; un corpus déterministe d’injection de fautes avec six familles d’attaques, des variantes bénignes très proches et un ledger de ground truth que le reconstructeur ne voit jamais ; et une comparaison de profils fragmentés, corrélés, causaux et threat-guided sur 3024 cellules.

02Chapitre 2

MAESTRO × STRIDE : du modèle de menaces à l’hypothèse de test

Le threat modeling identifie les transitions dangereuses. Un test opérationnel exige en plus des preuves qui relient la transition à ce qui s’est réellement passé.

MAESTRO organise les menaces sur sept couches en interaction d’un système agentique et met l’accent sur les effets inter-couches. Les couches vont des Foundation Models aux opérations sur les données, aux frameworks d’agents, à l’infrastructure de déploiement, à l’évaluation et l’observabilité, puis à la sécurité et la conformité, jusqu’à l’écosystème d’agents. STRIDE ajoute six catégories de propriétés : Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service et Elevation of Privilege.

L’article utilise les deux frameworks pour sélectionner des scénarios pertinents aux frontières. Il ne revendique aucune validation empirique des frameworks. L’OWASP Top 10 for Agentic Applications 2026 sert de contre-vérification du vocabulaire, notamment ASI01 Agent Goal Hijack, ASI02 Tool Misuse and Exploitation, ASI03 Identity and Privilege Abuse, ASI06 Memory & Context Poisoning et ASI08 Cascading Failures ; ces risques y sont considérés comme des problèmes au niveau du système.

Famille d’attaquesFrontière testéeQuestion STRIDELien OWASP Agentic
Authority Inversion (untrusted source)Confiance dans la source à l’entréeSpoofing, Elevation of PrivilegeASI01 Agent Goal Hijack
Approval Replay / échange d’argumentsLiaison décision ↔ appelTampering, RepudiationASI02 Tool Misuse and Exploitation, ASI09 Human-Agent Trust Exploitation
Delegation Scope AmplificationAutorité déléguéeElevation of PrivilegeASI03 Identity and Privilege Abuse
Memory Provenance SubstitutionProvenance et cohérence de la cibleTampering, SpoofingASI06 Memory & Context Poisoning
Post-Decision Target RedirectionCible approuvéeTampering, Information DisclosureASI02 Tool Misuse and Exploitation
Duplicate Effect under RetryCardinalité d’exécutionRepudiation, TamperingASI08 Cascading Failures

La sélection est organisée à dessein selon des prédicats de preuve aux quatre frontières du contrat, et non selon la fréquence des attaques. La correspondance avec STRIDE et OWASP ASI est une interprétation VamiSec fondée sur l’article, et non une couverture complète des frameworks.

03Chapitre 3

L’Evidence Contract : quatre étapes qui s’attestent mutuellement

L’unité observable est le chemin P = (p, d, t, e). Il ne devient pertinent pour la sécurité que lorsque des étapes voisines répètent les mêmes faits et deviennent ainsi comparables.

Chaque événement porte un identifiant d’événement immuable, un composant, une étape, une version de schéma et un horodatage. Des champs de corrélation y ajoutent les Trace-IDs, Span-IDs, Parent-IDs et Action-IDs. Les champs threat-guided lient des faits dont un oracle de test contrôle l’égalité ou l’ordre. Il est décisif que l’événement d’outil répète les valeurs exécutées au lieu de simplement pointer vers la décision. Seule la comparaison d’étapes voisines rend visibles des substitutions qui restent invisibles dans de simples traces de corrélation.

ÉtapeChamps enregistrés (article §III-A)
p · InputConfiance dans la source, opération et scope demandés, cible visée, provenance mémoire
d · Decisionallow/deny, principal, ID d’approbation, outil approuvé, digest d’arguments, cible, audience, ensemble de capabilities, limite de profondeur de délégation, exigence d’idempotence
t · ToolRépétition des valeurs réellement exécutées : outil, arguments ou digest, cible, capabilities, délégation
e · EffectCible observée, digest d’opération, audience, approbation, clé d’idempotence

Ce que le contrat n’enregistre volontairement pas

Aucun profil n’enregistre de chain-of-thought masquée. Les preuves de décision se limitent à des résultats de policy explicites, des reason codes concis, des attributs approuvés et des hashes adaptés à des tests contrôlés. Il n’est pas nécessaire de stocker des contenus de prompt sensibles ni le raisonnement du modèle. Des labels de provenance, des identifiants stables et des keyed digests suffisent pour les tests et réduisent l’exposition.

04Chapitre 4

L’OWASP Agent Control Standard (ACS) en dix minutes

ACS est une spécification de wire ouverte. Un Guardian Agent peut ainsi vérifier les actions d’un agent d’IA avant leur exécution et les autoriser, les bloquer, les réécrire, les soumettre à approbation ou les différer (allow, deny, modify, ask, defer), via des enveloppes signées (ACS-Core les exige ; l’implémentation de référence, une preuve de concept, ne le met pas encore en œuvre) et avec une piste d’audit.

Depuis septembre 2026, ACS est un projet de l’OWASP GenAI Security Project, au niveau 2 (Incubator) selon ses propres métadonnées ; la spécification v0.1.0 date du 5 juin 2026, le tag de release actuel est 0.1.2. ACS est issu de l’Agent Observability Standard (AOS). Selon ACS, un agent est digne de confiance lorsqu’il est inspectable, traceable et instrumentable. Les opérateurs doivent donc pouvoir établir après coup ce qu’un agent a fait et pourquoi, et pouvoir limiter à l’avance ce qu’il a le droit de faire.

19hooks natifs steps/* dans la spécification v0.1.0 — de sessionStart à sessionEnd, y compris les trois hooks de skills
5dispositions : allow, deny, modify, ask, defer
44schémas JSON sous /schema/v0.1.0/
3piliers : Instrument, Trace, Inspect

Les trois piliers

Instrument

Des hooks aux points d’exécution à fortes conséquences : input, récupération de connaissances, mémoire, appels d’outils, compaction, sous-agents et skills. Les actions de code, de shell, de fichiers et de réseau passent par steps/toolCallRequest, qui doit se déclencher pour toute action quittant le contexte de raisonnement. Le Guardian répond par une disposition. La gate d’application principale est steps/toolCallRequest. steps/toolCallResult sert de gate pour masquer des sorties avant qu’elles n’atteignent l’agent.

Trace

Vocabulaire normatif pour OpenTelemetry et OCSF. Un appel d’outil devient le span gen_ai.tool.call avec gen_ai.tool.name et acs.capability. Les décisions sont consignées comme événement de span acs.decision sur le span de l’étape vérifiée, et non comme span distinct. Dans OCSF, deny, modify, ask et defer deviennent des Detection Findings (classe 2004). Les mappings ont le statut « Working draft » ; Trace est best-effort et relève de l’auto-déclaration de l’environnement observé. Les trois hooks de skills ne sont pas mappés, et gen_ai.tool.call est un nom de span ACS, pas un span OpenTelemetry GenAI (où l’on utilise execute_tool {gen_ai.tool.name}).

Inspect

Une Agent Bill of Materials (AgBOM) expose les outils, modèles et données accessibles de l’agent, avec une correspondance possible vers CycloneDX, SPDX et SWID. Les méthodes agbom/snapshot et agbom/changed apparaissent dans OCSF comme classe 5001 Device Inventory Info (ACS la nomme « Inventory Info »). Sérialisation en CycloneDX 1.6, SPDX 3.0 ou SWID (au moins un ; statut « Working draft »).

Wire, provenance et chaîne d’audit

  • Format de transmission JSON-RPC 2.0. Namespaces de méthodes : steps/* (hooks), protocols/* (MCP encapsulé ; A2A est réservé pour v0.2), agbom/*, system/* et handshake/*. En cas de conflit de version, le handshake se termine par UNSUPPORTED_VERSION. La prose de la spécification suppose encore des mécanismes MCP antérieurs à la révision 2026-07-28, et l’appartenance du wrapping MCP à ACS-Core est contradictoire dans le texte ; les appels d’outils MCP peuvent aussi passer par steps/toolCallRequest/-Result.
  • La provenance est un label d’origine factuel posé sur les champs porteurs de données. Il est posé par du code de framework déterministe, jamais par le LLM : origin (user_input, system, tool_output, retrieved, agent_generated, a2a_inbound, external), source_id et derived_from comme arêtes de filiation.
  • Dans le profil acs-provenance, la provenance au niveau du champ est obligatoire pour chaque champ porteur de données de la session, y compris chaque argument de steps/toolCallRequest. La classification de confiance est faite par le Guardian selon la policy locale ; ce n’est pas un champ du schéma v0.1.
  • Chaque réponse pour une étape porteuse de contenu comporte un chain_hash : la tête SHA-256 glissante de la chaîne d’audit. policy_references (y compris la policy_version optionnelle) et cited_provenance_ids rendent la décision rejouable.
  • Les signatures sont crypto-agiles et obligatoires dans ACS-Core : chaque requête et chaque réponse est signée sur l’enveloppe canonique ; HMAC-SHA256 avec une clé de session dérivée par HKDF est la base qui satisfait cette exigence. Elle rend détectable une altération sur le réseau, mais pas un Guardian compromis. La non-répudiation n’arrive qu’avec le profil acs-crypto : ML-DSA-65 (obligatoire) et SLH-DSA-128s (recommandé en secours).
05Chapitre 5

Evidence Contract ↔ ACS : ce que couvre le standard et ce que vous devez compléter

Pour l’Input, la Decision et le Tool, ACS fournit les hooks, enveloppes et mappings de trace ; pour l’effet, seulement le retour de l’outil. Les deux lacunes principales sont la liaison de décision, dont l’absence explique dans l’expérience la faiblesse résiduelle dominante F1, et les preuves d’effet indépendantes, que l’article justifie comme exigence sans les mesurer séparément.

Étape du contratÉquivalent ACS (v0.1.0)Besoin de complément
p · Input & Provenancesteps/userMessage, steps/knowledgeRetrieval, steps/memoryContextRetrieval ; provenance origin/source_id/derived_from ; attribut OTel acs.provenance.origin ; enrichissement OCSF acs_provenance_originPorter la confiance dans la source comme policy du Guardian (le schéma v0.1 ne comporte pas de champ trust)
d · DecisionAcsResult : decision, reasoning, reason_codes, policy_references (policy_version), cited_provenance_ids, ask_details (approver, timeout_disposition), chain_hash ; événement de span acs.decision ; OCSF 2004 Detection FindingLier dans policy_data le digest d’arguments, la cible normalisée, l’ensemble de capabilities, la profondeur de délégation, l’expiration et l’exigence d’idempotence ; persister durablement le Decision Receipt
t · Tool & Delegationsteps/toolCallRequest : tool, operation, capability, arguments avec provenance, raw_command, intent ; steps/subagentStart ou agentTrigger (a2a_inbound) ; turn_id/parent_turn_id ; span gen_ai.tool.call ; OCSF 1007Comparer les valeurs exécutées au receipt : égalité du digest d’arguments, de la cible et de la capability comme oracle de test
e · Effectsteps/toolCallResult (exit_status, request_id_ref) ; span gen_ai.tool.resultObservation d’effet indépendante sur le système cible (gateway, audit de base de données, sink) avec cible observée, digest d’opération et clé d’idempotence, corrélée via l’Action-ID

Les indications sur ACS proviennent des schémas JSON publiés v0.1.0 (hooks/*, provenance.json, response-envelope.json, trace/otel-mapping.json, trace/ocsf-mapping.json). policy_data est expressément prévu dans le standard comme champ structuré spécifique à la policy. Selon la spécification, les événements Trace d’ACS sont des auto-déclarations de l’environnement observé et best-effort ; ils ne deviennent une preuve que lorsqu’une partie extérieure au runtime émetteur les atteste. Les signatures (acs-crypto) et la liaison au contenu (acs-audit) renforcent l’intégrité. L’expérience suppose une télémétrie authentique (chapitre 10).

Pourquoi la lacune d’effet est structurelle

Les hooks ACS se déclenchent dans le runtime de l’agent. steps/toolCallResult signale ce que l’outil renvoie à l’agent. Il ne signale pas ce qui s’est réellement passé sur le système cible. L’article montre pourquoi cette différence compte : une trace qui se termine sur la réponse d’outil réussie peut manquer des écritures en double ou des cibles redirigées. Les preuves d’effet doivent donc provenir d’une seconde source, indépendante de l’agent. Elle est liée à la trace ACS via les Action-IDs et Request-IDs.

Pourquoi le fail-open est le problème F1

Si le Guardian est injoignable avec la failure posture proceed, l’action se poursuit. ACS exige certes de consigner chaque proceed en fail-open comme événement d’audit, mais il ne se crée aucun Decision Receipt avec liaisons d’approbation. Sur le plan opérationnel, cela correspond à la perturbation F1 de l’expérience (interprétation VamiSec). Lorsque les événements de décision manquent, la reconstruction exacte et l’attribution tombent à 0 %, le rappel du profil threat-guided à 50 %. Un déploiement ACS qui prend les tests de sécurité au sérieux négocie donc on_decision_failure: deny (dans l’implémentation de référence : ACS_ON_DECISION_FAILURE=deny), règle la startup posture sur refuse côté Observed Agent et considère un receipt manquant comme un échec de test, et non comme une lacune dans le log.

06Chapitre 6

Protocole expérimental : corpus, profils et perturbations

36 templates de workflow, trois répétitions déterministes, quatre profils de preuves, sept conditions de télémétrie. S’y ajoute un ledger de ground truth que le reconstructeur ne voit jamais.

Le corpus contient six familles de workflows avec chacune quatre variantes non sûres et deux variantes bénignes très proches : 36 templates, dont 24 non sûrs et 12 bénins. Trois répétitions déterministes donnent 108 instances de workflow. Les répétitions font varier les identifiants et le jitter des événements. Elles constituent un contrôle de reproductibilité, et non des échantillons statistiques indépendants.

Un générateur de confiance produit des événements JSON canoniques de type MCP. Séparément, un ledger de ground truth est créé avec les identités d’événements attendues, les arêtes parent, les labels unsafe, la règle violée et la première étape de violation. Avant la reconstruction, les IDs de cas privés sont retirés des événements observables. Les workflows de la même famille partagent une fenêtre temporelle volontairement chevauchante. C’est un cas difficile pour l’attribution au plus proche dans le temps.

ConditionPerturbationÉquivalent réel dans l’exploitation d’ACS
F0Preuves inchangéesRéférence
F1Tous les événements de décision supprimésGuardian injoignable avec proceed, événements acs.decision échantillonnés, Detection Findings abandonnés, puits de trace défaillant (Trace est best-effort et ne bloque jamais l’application)
F2Trace-IDs remplacés à la frontière de l’outilPropagation de contexte rompue entre le client et le serveur MCP
F3Liens parent supprimés sur les événements d’effetTélémétrie d’effet issue de systèmes cibles sans contexte de trace
F4Horodatages décalés, ordre inverséClock skew, exporters asynchrones
F5Télémétrie d’effet dupliquéeExport at-least-once, retries dans le collector
F6Action-IDs échangés entre workflows parallèlesErreurs de concurrence dans l’instrumentation ou le collector

La colonne « Équivalent réel » est une interprétation VamiSec, et non un résultat de l’article. Les perturbations qui visent des champs absents d’un profil sont considérées comme non applicables pour l’évaluation de la détection de fautes.

Reconstruction et métriques

  • P0 regroupe un effet avec l’outil le plus proche dans le temps, P1 par Trace-ID. P2 et P3 suivent les arêtes parent et se rabattent sur les Action-IDs lorsqu’un parent d’effet manque.
  • La reconstruction exacte exige le prompt, la décision, l’outil, tous les effets et, dans P2/P3, les arêtes parent attendues.
  • L’attribution sans ambiguïté exige que tous les effets attendus soient projetés exactement sur le bon prompt, la bonne décision et le bon outil, même lorsqu’une arête parent manque.
  • Le rappel et la précision utilisent le label unsafe, le taux de faux positifs sur les cas bénins s’appuie sur les 12 templates bénins. Les taux Correct-Rule et First-Stage testent le diagnostic.

L’implémentation n’utilise que la bibliothèque standard Python. Deux exécutions propres ont produit des hashes de configuration, de cas, d’agrégats et de summary identiques à l’octet près. Trois tests unitaires vérifient la taille et l’équilibre de la matrice, les sorties déterministes ainsi que la comparaison de rappel P3 contre P2.

07Chapitre 7

Résultats : ce qui tient et ce qui casse

Les preuves causales résistent aux scissions de trace et aux parents d’effet perdus. Une étape de décision manquante empêche cependant la reconstruction complète et fait perdre l’essentiel de la signification de sécurité.

ProfilExactAttributionRappelPrécisionFaux positifsOctets
P0 · IDs locaux, temps0,0 %0,0 %84,5 %66,4 %85,7 %659
P1 · + Trace-ID71,4 %71,4 %16,7 %100 %0 %843
P2 · + Span/Parent/Action71,4 %85,7 %16,7 %100 %0 %1245
P3 · + Security Bindings71,4 %85,7 %92,9 %100 %0 %2341

Table II de l’article : taux agrégés sur l’ensemble des sept conditions de télémétrie. Octets = médiane du JSON canonique par workflow sous F0.

P0 n’a jamais atteint d’attribution sans ambiguïté, car les workflows qui se chevauchent dans le temps ont fusionné. Son rappel apparent de 84,5 % n’est pas une performance de sécurité exploitable : des chaînes fusionnées à tort ont déclenché une alerte sur 85,7 % des cas bénins. P1 n’a détecté que des effets en double. P2 a porté l’attribution sans ambiguïté à 85,7 %, le rappel de sécurité est resté à 16,7 %. P3 a conservé l’attribution de P2 et porté le rappel, le taux Correct-Rule et la localisation First-Stage à 92,9 %.

Sensibilité aux fautes

  1. F0Preuves inchangées

    P1 à P3 reconstruisent et attribuent chaque workflow. P3 atteint 100 % de rappel et de précision sans faux positifs.

  2. F2Scission de trace à la frontière de l’outil

    P1 perd entièrement la reconstruction et l’attribution. P2 et P3 restent à 100 %, car les identifiants de parent et d’action franchissent la frontière de trace modifiée.

  3. F3Parents d’effet perdus

    La reconstruction exacte de P2/P3 tombe à 0 %, l’attribution sans ambiguïté reste à 100 % grâce au repli sur l’action.

  4. F4–F6Décalage temporel, doublons, échange d’Action-ID

    Aucune perte pour P2/P3 : les preuves restantes fournissent un chemin sans ambiguïté, et les contrôles de corruption révèlent l’incohérence injectée.

  5. F1Événements de décision manquants

    La faiblesse résiduelle dominante : la reconstruction et l’attribution tombent à 0 % dans P1 à P3, le rappel de P3 à 50 %. L’autorité de la source, la mémoire et les doublons restent détectables. La liaison d’approbation, de scope et de cible perd son point de comparaison.

08Chapitre 8

Coûts des preuves et exploitation : prioriser plutôt qu’échantillonner

Plus de liaisons signifient plus d’octets. La réponse est une priorisation délibérée, et non un échantillonnage qui écarte des Decision Receipts.

659 oP0 par workflow (médiane, JSON canonique, F0)
843 oP1 : +27,9 %
1245 oP2 : +88,9 %
2341 oP3 : +255,2 % par rapport à P0, +88,0 % par rapport à P2

Par rapport à P0, P3 ajoute 1682 octets (environ 1,64 Kio), par rapport à P2 1096 octets. Un collector avec la même représentation d’événements conserverait, pour un workflow de taille moyenne, environ 3,55 fois les octets canoniques de P0, ou 1,88 fois ceux de P2. Ces valeurs répondent à RQ3 comme comparaison du volume de sérialisation. Elles ne mesurent ni la latence, ni le CPU, ni le volume de transfert, ni la compression, ni l’indexation, ni les coûts monétaires.

Règles d’exploitation de l’article, transposées à ACS

  • Des Decision Receipts, Invocation Receipts et Effect Receipts complets d’abord pour les opérations privilégiées : en termes ACS, pour des capabilities comme filesystem.delete, network.egress ou process.execute.
  • Fixer des limites de conservation explicites. La déduplication, la compression et les keyed digests peuvent réduire le volume, mais doivent être mesurés séparément.
  • Celui qui omet un champ pertinent pour les invariants ou échantillonne des Decision Receipts modifie l’Evidence Contract et doit réévaluer. F1 montre ce qui est alors perdu.
  • Modéliser séparément l’intégrité, les horloges, la conservation et le contrôle d’accès. ACS propose pour cela la base HMAC (acs-core), des signatures asymétriques ou PQC (acs-crypto), request_hash (acs-audit) et le chain_hash de la chaîne d’audit.
09Chapitre 9

Playbook pratique : des tests de sécurité fondés sur ACS dans le pipeline

Voici comment traduire l’article et le standard en une suite de tests qui s’exécute en CI et passe de façon fiable au rouge lorsque les preuves manquent.

  1. Étape 1Traduire les menaces en hypothèses

    Passer en revue, pour chaque workflow d’agent, les couches MAESTRO et les propriétés STRIDE. Formuler pour chaque transition dangereuse un tuple H = (boundary, precondition, invariant, evidence, oracle).

  2. Étape 2Définir les hooks et profils ACS

    ACS-Core comme base, plus les profils acs-trace et acs-provenance. En plus des six hooks obligatoires d’ACS-Core (sessionStart, userMessage ou agentTrigger, toolCallRequest, toolCallResult, agentResponse, sessionEnd), instrumenter steps/knowledgeRetrieval, steps/memoryContextRetrieval et steps/subagentStart — et vérifier que le Guardian les inscrit dans methods_evaluated (sinon ALLOW-by-default).

  3. Étape 3Définir le Decision Receipt

    Principal, version de policy, reason code, opération, cible normalisée, digest d’arguments, capabilities, profondeur de délégation, expiration et idempotence dans policy_data. Persisté et lié à request_id ainsi qu’à chain_hash.

  4. Étape 4Durcir la failure posture

    Régler la failure posture sur fail-closed : on_decision_failure: deny dans le ServerHello (implémentation de référence : ACS_ON_DECISION_FAILURE=deny) et, côté Observed Agent, la startup posture refuse au cas où le handshake lui-même échoue. Signer les enveloppes. Un receipt manquant est un échec de test.

  5. Étape 5Raccorder un puits d’effets indépendant

    L’audit de gateway, de base de données ou de sink fournit la cible observée, le digest d’opération et la clé d’idempotence, corrélés via l’Action-ID.

  6. Étape 6Tests négatifs avec jumeaux bénins

    Pour chaque famille, des cas non sûrs et des cas bénins très proches, par exemple une résolution d’alias autorisée ou des accès en lecture répétés. Figer les predicates avant de tester.

  7. Étape 7Deux gates CI

    Gate 1 reconstruction : étapes obligatoires et arêtes parent complètes, sinon quarantaine. Gate 2 correction : invariants satisfaits, sinon arrêt avec la règle violée et la première étape.

  8. Étape 8Injecter des fautes de télémétrie

    Exécuter régulièrement F1 à F6 contre votre propre pipeline. Un test qui reste vert sous F1 ne vérifie aucune approbation.

Test négatif : Approval Replay

Accorder une approbation pour l’outil A avec le digest d’arguments X, puis appeler l’outil A avec le digest Y. On attend que l’invariant de liaison d’approbation soit violé à l’étape t. Jumeau bénin : approbation fraîche et liée, avec retry.

Test négatif : Target Redirection

Cible approuvée tenant-a, cible exécutée tenant-b. On attend que l’égalité des cibles soit violée à l’étape t ou e. Jumeau bénin : résolution d’alias autorisée vers la même cible canonique.

Test négatif : Scope Amplification

Un sous-agent hérite de write alors que seul read a été délégué. On attend : capabilities effectives ⊄ ensemble approuvé. Jumeau bénin : enfant restreint en lecture seule.

10Chapitre 10

Limites de la portée et prochaine étape de validation

L’expérience valide la force probante des preuves pour des fixtures déterministes de type MCP. Ce n’est ni un benchmark LLM ni un benchmark de robustesse en production.

L’étude utilise des fixtures déterministes synthétiques, des invariants écrits à la main et des plannings d’événements fixes. Elle n’exécute ni LLM, ni implémentation MCP, ni OAuth, ni moteur de policy, ni service externe. Elle ne mesure pas le succès d’une prompt injection et ne montre pas non plus qu’un contrôle empêche un effet. La précision et le rappel ne valent que pour les six familles codées. Comme l’évaluateur a été conçu à partir des mêmes hypothèses de menace, l’expérience teste la force probante et la cohérence de l’implémentation, et non la découverte de nouvelles menaces.

  • Le ledger de ground truth est logiquement séparé, mais provient de la même base de code. Des implémentations indépendantes, une mutation property-based et de vraies captures de protocole réduiraient les erreurs de mode commun.
  • La télémétrie est supposée authentique. Les producteurs falsifiés, la troncature de logs au-delà des fautes injectées, les collectors compromis et la vérification cryptographique restent ouverts.
  • Les nouvelles classes de menaces exigent leur propre hypothèse, leurs champs, leurs oracles et des tests écrits indépendamment. L’épuisement de ressources (Resource Exhaustion) exige par exemple des preuves de budget et de consommation, la télémétrie falsifiée exige l’identité du producteur et un contrôle d’intégrité.

Divulgation issue de l’article : OpenAI Codex a été utilisé pour l’organisation de la littérature, l’ossature d’implémentation et la revue du code d’évaluation synthétique, les premières ébauches et la révision linguistique ainsi que la mise en forme. La problématique, le modèle de menaces, l’exécution, la vérification des résultats et des sources ainsi que toutes les décisions finales relèvent de l’auteur.

Autoévaluation

Evidence-Readiness-Radar : vos agents sont-ils vraiment testables ?

Dix questions en cinq dimensions, dérivées de l’Evidence Contract de l’article et des profils de l’OWASP Agent Control Standard. Le résultat montre où votre télémétrie ne prouve pas encore les approbations, les cibles, la délégation et les effets.

  1. ProvenanceACS · Provenance
    Chaque contenu qui entre dans l’agent (saisie utilisateur, retrieval, sortie d’outil, mémoire) reçoit-il un label de provenance posé de façon déterministe, avec sa source ?
  2. ProvenanceArticle §IV-C
    Une policy empêche-t-elle que des contenus issus de sources non fiables autorisent une opération lourde de conséquences ?
  3. Decision ReceiptsArticle §VI-A
    Existe-t-il, pour chaque exécution d’outil lourde de conséquences, un Decision Receipt persisté avec principal, version de policy et reason code ?
  4. Decision ReceiptsArticle §III-A
    Le Decision Receipt lie-t-il le digest d’arguments, la cible normalisée, l’ensemble de capabilities, la profondeur de délégation et l’heure d’expiration ?
  5. Outils & délégationACS · steps/toolCallRequest
    L’événement d’outil reprend-il les valeurs réellement exécutées, au lieu de simplement renvoyer à la décision ?
  6. Outils & délégationACS · steps/subagentStart
    Les délégations à des sous-agents sont-elles enregistrées avec capabilities effectives et profondeur, et vérifiées par rapport à l’ensemble approuvé ?
  7. Preuves d’effetArticle §II-A
    L’effet sur le système cible est-il observé indépendamment de l’agent, par exemple via un audit de gateway, de base de données ou de puits d’effets (sink) ?
  8. Preuves d’effetArticle §III-B
    Les effets en écriture portent-ils une clé d’idempotence, de sorte que les exécutions en double soient détectables en cas de retry ?
  9. Exploitation & intégritéACS · failure posture
    Votre Guardian est-il configuré en fail-closed, de sorte qu’aucune action ne s’exécute sans décision ?
  10. Exploitation & intégritéArticle §VI-A
    Vos tests de sécurité CI échouent-ils lorsque des étapes obligatoires ou des arêtes parent manquent dans les preuves ?
ProvenanceDecisionReceiptsOutils &délégationPreuvesd’effetExploitation& intégrité
Provenance0 %Decision Receipts0 %Outils & délégation0 %Preuves d’effet0 %Exploitation & intégrité0 %

Répondez aux dix questions. Le résultat apparaît ici.

Research Edition · téléchargement gratuit

Threat-Model-Guided Security Testing for Agentic AI : article et ACS Practitioner Brief

L’article accepté à l’ICSPIS 2026 en accepted version, complété par une partie pratique. Elle montre comment mettre en œuvre l’Evidence Contract avec l’OWASP Agent Control Standard et l’intégrer à votre pipeline sous forme de tests négatifs.

Couverture de la Research Edition VamiSec « Threat-Model-Guided Security Testing for Agentic AI »
Article (5 p.) + ACS BriefPDF, gratuitAnglaisMise à jour : 10/2026
  • Article complet : méthode, résultats sur 3024 cellules, analyse des fautes et limites de validité
  • Mapping Evidence Contract ↔ ACS v0.1 : hooks, provenance, dispositions, OTel et OCSF
  • Schéma minimal de Decision Receipt et recommandations sur la failure posture : fail-closed plutôt que proceed
  • Catalogue de tests négatifs avec six familles d’attaques et gates CI pour la reconstruction et la correction
Téléchargement gratuit

Demander un livre blanc

Research Edition : Threat-Model-Guided Security Testing for Agentic AI (ICSPIS 2026)

Ce que contient la Research Edition

L’article complet

La version acceptée (accepted version) de l’article ICSPIS 2026 avec la méthode, les Table I/II, l’analyse des fautes, les coûts des preuves et les limites de validité. Publiée avec la mention de copyright IEEE.

ACS Practitioner Brief

En quatre pages : le mapping de l’Evidence Contract sur les hooks ACS, la provenance, les dispositions, les spans OpenTelemetry et les classes OCSF, y compris les lacunes d’ACS v0.1 que vous devez combler vous-même.

Schéma de Decision Receipt

Les champs minimaux d’un Decision Receipt économe en données : principal, version de policy, reason code, opération, cible, digest d’arguments, capabilities, profondeur de délégation, expiration et clé d’idempotence.

Catalogue de tests négatifs

Six familles d’attaques avec chacune quatre variantes non sûres et deux variantes bénignes, comme modèle pour votre propre suite de tests, plus des gates CI pour la reconstruction et la correction.

Le standard en détail

OWASP Agent Control Standard : comprendre le contrôle à l’exécution avant de le tester

Cette page utilise ACS comme vocabulaire des preuves de test. Le fonctionnement du standard lui-même – Guardian et Observed Agent, 19 hooks, cinq dispositions, handshake et failure posture, profils et maturité de la v0.1.0 – est expliqué dans notre dossier, avec simulateur Guardian, cycle de vie des hooks et matrice des risques.

19hooks natifs steps/*
5dispositions : allow, deny, modify, ask, defer
7profils : ACS-Core et six profils optionnels
  • Simulateur Guardian avec des exemples de wire conformes au schéma
  • Matrice des risques OWASP Agentic Top 10 × briques ACS
  • Évaluation de maturité ACS et livre blanc pour RSSI (en allemand)
FAQ

Questions fréquentes sur l’Agentic AI Security Testing et ACS

Réponses brèves aux questions qui nous parviennent le plus souvent sur l’article, l’Evidence Contract et l’OWASP Agent Control Standard.

Le Threat-Model-Guided Security Testing dérive la télémétrie et les oracles de test d’un agent d’IA directement d’un modèle de menaces, dans l’article de MAESTRO et de STRIDE. Chaque menace devient un tuple vérifiable composé d’une frontière, d’une précondition, d’un invariant, de preuves et d’un oracle. Le test vérifie ensuite de façon déterministe si les faits enregistrés satisfont l’invariant, par exemple si l’outil, les arguments et la cible correspondent, lors de l’appel, aux valeurs approuvées.

ACS fournit les points de contrôle et le vocabulaire : des hooks comme steps/toolCallRequest, la provenance des arguments, les dispositions, le chain_hash ainsi que des mappings OpenTelemetry et OCSF. L’Evidence Contract de l’article fixe les faits qui doivent au minimum être liés à ces points pour qu’un test puisse vérifier approbation, cible, périmètre et provenance. Deux briques restent à la charge de l’exploitant : un decision receipt durable avec les champs de liaison dans policy_data et des effets observés indépendamment sur le système cible. Le standard lui-même – Guardian, 19 hooks, cinq dispositions, profils et maturité – est expliqué dans notre dossier « Agent Control Standard (ACS) » de l’espace Agentic AI Security.

Non. Les identifiants de trace et de parent montrent quels événements vont ensemble. Ils ne montrent pas pourquoi une action était autorisée. Dans l’expérience, le profil purement causal a attribué sans ambiguïté 85,7 % des effets, mais n’a détecté que 16,7 % des cas non sûrs. Seules des liaisons pertinentes pour la sécurité, comme l’ID d’approbation, le digest d’arguments, la cible, les capabilities et la provenance, ont porté le rappel à 92,9 %.

L’article recommande un Decision Receipt durable et économe en données, qui lie à un Action-ID le principal, la version de policy, le reason code, l’opération approuvée, la cible normalisée, le digest d’arguments pertinent, les capabilities déléguées et l’heure d’expiration. Dans ACS, decision, reasoning, reason_codes, policy_references et chain_hash figurent déjà dans l’enveloppe de réponse. Vous ajoutez les champs de liaison dans policy_data.

Avec proceed, une action se poursuit lorsque le Guardian est injoignable. ACS prescrit certes de consigner chaque proceed en fail-open comme événement d’audit, mais il n’existe alors aucun Decision Receipt avec liaisons d’approbation. Selon notre interprétation, cela correspond à la perturbation F1 de l’expérience : sans événements de décision, la reconstruction et l’attribution sont tombées à 0 % et le rappel à 50 %. La spécification prévoit expressément on_decision_failure: deny (fail-closed) pour les déploiements qui n’acceptent pas d’échanger l’application des décisions contre la disponibilité ; pour les handshakes échoués s’y ajoute la startup posture refuse, configurée hors protocole côté Observed Agent ; sinon, un handshake échoué démarre la session sans protection (sa valeur par défaut est également proceed). Le README du projet recommande de régler ACS_ON_DECISION_FAILURE=deny avant de compter sur le fail-closed. La valeur par défaut proceed est elle-même débattue dans le projet (issues #32 et #37).

En médiane, le profil threat-guided a produit 2341 octets de JSON canonique par workflow. Cela représente 255,2 % de plus que des logs fragmentés (659 octets) et 88,0 % de plus qu’un tracing causal (1245 octets). La valeur est un indicateur du volume de sérialisation, hors compression, transport ou indexation. En pratique, vous introduisez d’abord des receipts complets pour les opérations privilégiées.

Non. L’expérience valide la force probante des preuves pour des fixtures déterministes de type MCP. Elle n’exécute ni LLM, ni véritable implémentation MCP, ni moteur de policy, et ne mesure pas si une prompt injection réussit. Des benchmarks comme InjecAgent ou AgentDojo répondent à la question de la robustesse. L’article intervient ensuite et précise quelles preuves un évaluateur exige au minimum pour reconstruire et classer un chemin.

L’article a été accepté pour la 9th International Conference on Signal Processing and Information Security (ICSPIS 2026), qui se tient du 10 au 12 novembre 2026 à Dubaï. La version acceptée est disponible ici en téléchargement comme Research Edition, avec la mention de copyright IEEE et un ACS Practitioner Brief complémentaire. Après la publication, nous ajouterons la citation complète avec un lien vers IEEE Xplore.

Normes & sources

Le contenu de cette page s'appuie sur les guides et études suivants, accessibles publiquement.

V. Milke, VamiSec GmbH · ICSPIS 2026 (accepted) · 2026

Threat-Model-Guided Security Testing for Agentic AI: MCP Traces with MAESTRO and STRIDE

Source primaire de cette page : Evidence Contract, corpus d’injection de fautes et résultats sur 3024 cellules. Accepted version avec mention de copyright IEEE.

OWASP GenAI Security Project · 2026

Agent Control Standard (ACS)

Référencement dans la rubrique Agentic Security, daté du 1er septembre 2026

GenAI Security Project (GitHub) · 2026

agent-control-standard : spécification, schémas et implémentation de référence (preuve de concept)

README avec les lacunes connues de l’implémentation de référence (authentification du wire, failure posture proceed) et feuille de route (v0.2.0 objectif mars 2027). En v0.1.0, la conformité est autodéclarée, sans suite de tests (issue #19).

OWASP GenAI Security Project · 2026

ACS JSON Schema v0.1.0 (44 schémas)

Enveloppes de requête et de réponse, provenance, hooks ainsi que mappings OpenTelemetry et OCSF : base du mapping de cette page.

Model Context Protocol · 2026

Model Context Protocol: Architecture (Revision 2026-07-28)

Hôte, clients et serveurs, responsabilité de l’hôte pour l’autorisation et le consentement.

Model Context Protocol · 2026

Model Context Protocol: Tools (Revision 2026-07-28)

Découverte et invocation des outils, recommandation de laisser un humain refuser les opérations sensibles.

K. Huang, Cloud Security Alliance · 2025

Agentic AI Threat Modeling Framework: MAESTRO

Sept couches en interaction, accent sur les effets inter-couches.

Microsoft Learn

Threats: Microsoft Threat Modeling Tool (STRIDE)

Les six catégories STRIDE comme ancres de propriétés.

W3C · 2021

Trace Context (W3C Recommendation)

Identifiants de trace et de parent standardisés pour la corrélation distribuée : base des profils P1/P2.

OWASP GenAI Security Project · 2025

OWASP Top 10 for Agentic Applications for 2026

ASI01–ASI10 comme contre-vérification du vocabulaire des scénarios.

Zhan, Liang, Ying, Kang · Findings of ACL · 2024

InjecAgent: Benchmarking Indirect Prompt Injections in Tool-Integrated LLM Agents

Benchmark de prompt injection indirecte via des outils.

Debenedetti et al. · NeurIPS Datasets and Benchmarks · 2024

AgentDojo: A Dynamic Environment to Evaluate Prompt Injection Attacks and Defenses for LLM Agents

Environnement extensible avec des tâches, des attaques et des défenses réalistes.

NIST · 2008

NIST SP 800-115: Technical Guide to Information Security Testing and Assessment

Procédures de test reproductibles et preuves claires.

OWASP Foundation · 2025

OWASP AI Testing Guide

Test des systèmes d’IA orienté contrôles.

OCSF Project

Open Cybersecurity Schema Framework (OCSF)

Classes d’événements sur lesquelles ACS s’appuie : 3002 Authentication, 6002 (« Application Activity » chez ACS, Application Lifecycle dans OCSF), 1007 Process Activity, 6005 Datastore Activity, 2004 Detection Finding, 5001 Device Inventory Info.

Vos agents sont-ils testables, ou simplement journalisés ?

Lors du premier entretien, nous vérifions si la télémétrie de vos agents prouve réellement les approbations, les cibles, la délégation et les effets. Nous clarifions aussi comment intégrer à votre pipeline les hooks ACS, les policies du Guardian et les tests négatifs.