AP62 · Identité et jetons trop larges
Famille : Sécurité et droits
Preuve forte
Noms d'origine : generic high-privileged identity, maker credentials, token passthrough
L’agent agit sous une identité commune et puissante, avec des jetons qui couvrent bien plus que sa tâche.
Définition
L’agent s’authentifie avec un compte de service, la clé maîtresse d’un service ou les identifiants de son créateur, communs à tous les utilisateurs et sans lien avec la tâche. Variante propre à MCP : un serveur retransmet en aval un jeton qui ne lui a pas été émis, ou accorde tous ses scopes d’emblée.
Symptômes observables
- Une clé `service_role`, le jeton personnel d’un administrateur, des scopes `*` ou `admin:*`.
- Dans les journaux en aval, tous les appels de l’agent apparaissent sous la même identité ; l’appelant réel est indiscernable.
- Un jeton créé pour une tâche, comme la gestion de domaines, permet d’autres opérations, comme la suppression de volumes.
Pourquoi c'est nuisible
Le rayon d’impact d’une erreur ou d’une injection devient celui du compte le plus privilégié, et l’imputabilité disparaît. Un jeton retransmis sans vérification contourne en outre les contrôles du serveur et peut être réutilisé sur plusieurs services.
Chiffres
- La spécification MCP qualifie explicitement la transmission de jetons (« token passthrough ») d’anti-pattern : un serveur MCP ne doit accepter aucun jeton qui ne lui a pas été explicitement émis.
- Microsoft (février 2026) range l’authentification par le créateur parmi les dix mauvaises configurations des agents Copilot Studio : chaque utilisateur de l’agent hérite des permissions de son créateur, ce qui contourne le principe du moindre privilège.
Incidents publics
- 2026-04 — PocketOS, Railway Un agent de code (Cursor, avec Claude Opus 4.6) a trouvé un jeton Railway créé pour gérer des domaines, mais qui autorisait toute opération. Il s’en est servi pour supprimer le volume de production de PocketOS. Correctif annoncé : Le PDG de Railway a restauré les données ; Railway a ensuite ajouté la suppression différée.
- 2026-01-13 — ServiceNow BodySnatcher (CVE-2025-12420), publiée par AppOmni : un secret statique, identique sur toutes les instances, et une liaison de compte fondée sur la seule adresse e-mail permettaient d’exécuter des agents au nom de n’importe quel utilisateur, jusqu’à créer un compte administrateur.
Remèdes du catalogue
- A2 · Outils et interface agent-machine (ACI) — Des outils à périmètre étroit et des jetons courts, limités à la tâche : un jeton de gestion de domaines ne peut pas supprimer un volume.
- G6 · Règle de deux — Ne pas confier un jeton large à une session autonome qui lit aussi du contenu non fiable.
Mesures hors catalogue
- Propager l’identité de l’utilisateur (on-behalf-of) et donner à chaque agent sa propre identité, pour que les journaux en aval disent qui a agi.
- Côté MCP : vérifier l’audience de chaque jeton, accorder des scopes minimaux, puis les élever à la demande.
Patterns détournés
Anti-patterns voisins
Sources
- Cursor-Opus agent snuffs out startup’s production database — The Register (T. Claburn), 2026-04-27
- BodySnatcher (CVE-2025-12420): agentic hijacking vulnerability in ServiceNow — AppOmni (A. Costello), 2026-01-13
- Security Best Practices — Model Context Protocol (spécification, version draft)
- Detecting and mitigating common agent misconfigurations — Microsoft Defender Security Research Team, 2026-02-12
Contenu relu le 2026-10-05