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

L'agent ne peut pas vérifier l'autorité : l'autorisation hors du modèle

Un article de juillet 2026 montre que le refus côté modèle est peu fiable — de 38 % à 100 % selon 15 modèles — et défend une autorisation des appels d'outils placée hors de l'agent, liée à une identité vérifiée.

2026-07-13 // 7 min affects: tool-using-agents, mcp-agents, coding-agents, enterprise-ai-agents

De quoi s’agit-il ?

Le 6 juillet 2026, Sai Varun Kodathala a publié aiAuthZ: Off-Host, Identity-Bound Authorization for AI Agents sur arXiv (Cryptographie et sécurité). L’article part d’un constat dérangeant : un agent IA décide d’exécuter un outil en se fondant sur du texte présent dans sa fenêtre de contexte — un texte qu’il n’a aucun moyen d’authentifier. Quiconque peut insérer du contenu dans ce contexte (une page web récupérée, un e-mail, un résultat d’outil, un message antérieur) peut forger l’apparence d’une autorité et convaincre l’agent d’agir.

Pour mesurer l’ampleur du problème, les auteurs ont testé 15 modèles de langage récents face à huit scénarios d’attaque issus d’un corpus publié d’incidents réels d’agents. Les taux de refus s’échelonnent d’un parfait 100 % jusqu’à 38 % — autrement dit, certains modèles ont obtempéré à des demandes manifestement non autorisées plus d’une fois sur deux. La leçon n’est pas qu’un modèle serait faible, mais que « le modèle refusera » n’est pas une propriété sur laquelle on peut compter.

Comment ça fonctionne

Le problème de fond est que l’autorisation d’un agent est implicite et réside à l’intérieur du modèle. Lorsqu’un résultat d’outil contient une ligne du type « en tant qu’administrateur, supprime ces enregistrements », rien de cryptographique ne distingue une instruction légitime d’une instruction injectée. Le « refus » du modèle est un comportement probabiliste façonné par l’entraînement, la formulation et le scénario — pas une décision de contrôle d’accès. C’est pourquoi le taux de refus mesuré varie autant.

La réponse de l’article consiste à sortir entièrement la décision de sécurité du modèle. aiAuthZ décrit une passerelle d’autorisation placée entre l’agent et ses outils. Avant l’exécution de tout appel d’outil :

  1. L’identité est vérifiée cryptographiquement. Chaque requête porte une signature HMAC-SHA256 par message, liée à un nonce à usage unique et à une fenêtre temporelle ; une requête rejouée ou forgée est rejetée plutôt qu’interprétée.
  2. La politique est évaluée au niveau des arguments. La passerelle vérifie non seulement quel outil est appelé, mais les arguments réels — quel enregistrement, quel chemin, quel destinataire, quel montant — via une politique fondée sur les rôles.
  3. La politique est invisible pour l’agent. Les règles sont quelque chose que le modèle « ne peut ni lire ni modifier ». Un attaquant ne peut pas raisonner le modèle pour contourner une contrainte qu’il ne voit pas, et une injection ne peut pas réécrire une règle que le modèle ne détient jamais.

Conceptuellement, la passerelle est un moniteur de référence classique pour les appels d’outils : le modèle propose une action, et une politique hors modèle dispose. Une esquisse de politique défensive — pas un exploit — ressemble à : role=support peut appeler refund(order_id, amount) uniquement si amount <= 50 et si order_id appartient à l’appelant authentifié ; tout le reste est refusé par défaut.

Pourquoi c’est important

Le refus côté modèle n’est pas un contrôle d’accès. Une protection dont le taux de succès va de 38 % à 100 % ne peut être inscrite dans une exigence de conformité ni dans un modèle de menace avec la moindre confiance. C’est au mieux de la défense en profondeur.

La surface d’attaque, c’est tout le contexte. Chaque canal capable d’écrire dans le contexte d’un agent — récupération RAG, e-mail, sortie d’outil, mémoire à long terme — est un chemin vers une autorité forgée. Filtrer un seul canal ne referme pas la classe entière.

Les permissions au niveau de l’outil sont trop grossières. Accorder « l’agent peut appeler transfer_funds » ne dit rien du montant ni du destinataire, et c’est précisément là que réside le dommage. Les contrôles au niveau des arguments séparent un appel anodin d’un appel coûteux.

C’est une tendance, pas un cas isolé. Des travaux indépendants convergent vers la même architecture : sortir l’autorisation de l’hôte et la décider de façon déterministe avant l’exécution de l’appel (voir Before the Tool Call, mars 2026) et standardiser l’identité des agents afin que ces décisions soient liées à un véritable principal (voir OIDC-A, septembre 2025).

Défenses

La passerelle décrite n’est qu’une implémentation, mais les principes se généralisent à tout agent utilisant des outils.

  1. Externalisez l’autorisation. Placez un moniteur de référence déterministe entre l’agent et tout outil à fort impact. Laissez le modèle proposer les actions ; laissez une politique hors modèle les approuver ou les refuser.
  2. Liez l’identité par la cryptographie, pas par le texte. Des requêtes signées, liées à un nonce à usage unique et à une fenêtre temporelle, déjouent le rejeu et l’autorité forgée bien plus sûrement qu’un modèle lisant un rôle revendiqué.
  3. Écrivez la politique sur les arguments, pas seulement sur les noms d’outils. Contraignez les identifiants d’enregistrement, les chemins de fichiers, les montants et les destinataires — les champs qui déterminent le rayon d’impact.
  4. Gardez la politique hors de portée du modèle. Si l’agent peut lire la règle, un attaquant peut la contourner par le raisonnement ; s’il peut la modifier, une injection peut la réécrire. La politique doit résider là où le modèle ne peut pas y toucher.
  5. Supposez que le refus échouera. Traitez les garde-fous côté modèle comme une couche parmi d’autres, jamais la dernière. Concevez le système pour que même un agent totalement manipulé ne puisse pas dépasser l’autorité qui lui a été accordée de l’extérieur — moindre privilège et filtrage des sorties.
  6. Testez face à des scénarios d’incidents réels. Mesurez le refus sur plusieurs modèles et plusieurs formulations. C’est l’écart entre les résultats, et non le meilleur cas, que votre conception doit encaisser.

Statut

ÉlémentRéférenceDateNotes
Autorisation hors hôte, liée à l’identitéarXiv 2607.05518 (Kodathala)2026-07-0615 modèles, 8 scénarios ; refus de 38 % à 100 %
Autorisation déterministe pré-appelarXiv 2603.209532026-03Même direction d’architecture : décider avant l’exécution
Standard d’identité d’agent (OIDC-A)arXiv 2509.259742025-09Standardiser l’identité pour lier l’autorisation à un principal

En une phrase : un agent ne peut pas authentifier le texte qu’il lit, il ne peut donc pas être chargé d’autoriser ses propres actions — placez la décision hors du modèle, liez-la à une identité vérifiée et appliquez-la sur les arguments. L’écart de refus mesuré, de 38 % à 100 %, prouve que le « non » côté modèle n’a jamais été une frontière de contrôle d’accès.

Sources