Security musings

Catégories

Tags

🔍 Licence d'Utilisation 🔍

Sauf mention contraire, le contenu de ce blog est sous licence CC BY-NC-ND 4.0.

© 2025 à 2042 Sébastien Gioria. Tous droits réservés.

⏱️
Temps de lecture estimé
~6 minutes

Dans une chaîne de délégation A2A, chaque agent hérite potentiellement des droits de son parent. Un agent subordonné compromis peut ainsi atteindre des ressources que personne n’avait anticipé.

Partie de la série A2A Security


Description du risque

On constate que la délégation de tâches est le coeur du protocole A2A et c’est précisément là que se nichent les risques d’escalade de privilèges les plus sournois. Quand un agent A délègue à un agent B qui sous-délègue à un agent C, la question devient : quels droits C a-t-il réellement ? La réponse, dans la plupart des implémentations, est : autant que B, qui en avait autant que A, sans vérification à chaque étape.

Ce mécanisme d’héritage implicite des permissions à travers la chaîne de délégation constitue un Confused Deputy Problem classique, transposé au monde des agents IA. L’agent intermédiaire (le “deputy”) agit avec les droits de son parent, y compris pour des actions que ce parent n’avait pas l’intention d’autoriser.

La spécification A2A ne définit pas de mécanisme standardisé pour borner la profondeur de délégation ni pour contraindre les permissions transmises à chaque niveau. Cette lacune est aujourd’hui documentée par l’OWASP sous l’identifiant ASI07.

Chaque niveau de délégation sans contrainte explicite est une porte entrouverte sur les droits du niveau supérieur.


Vecteurs d’attaque

1. Délégation transitive non bornée

Un orchestrateur délègue à un agent B avec tous ses droits. B sous-délègue à C, qui sous-délègue à D. À chaque étape, les permissions s’accumulent sans vérification. Un attaquant qui contrôle l’agent D a potentiellement accès à tout ce que l’orchestrateur pouvait faire, même si la tâche initiale ne l’exigeait pas.

2. Confused Deputy via contexte partagé

Un agent worker légitime reçoit une tâche de l’orchestrateur et dispose des droits nécessaires pour l’exécuter. Un attaquant qui peut influencer le contenu de la tâche (via injection de contexte ou manipulation de l’entrée) amène l’agent à utiliser ses droits légitimes pour accomplir une action non autorisée — par exemple, exporter des données en dehors du périmètre prévu.

3. Escalade via agent worker de confiance compromis

Dans une architecture supervisor-worker, si l’agent worker est compromis (supply chain, vulnérabilité d’exécution), il peut initier de nouvelles tâches A2A sous son propre nom mais avec les droits hérités de l’orchestrateur qui l’a sollicité. Il se comporte alors comme un orchestrateur non autorisé.


Exemple concret

Un système de reporting automatisé implique un orchestrateur de reporting, un agent d’extraction de données et un agent d’export.

  1. L’orchestrateur de reporting délègue à l’agent d’extraction avec ses propres droits (lecture + export + admin).
  2. L’agent d’extraction sous-délègue la tâche d’export à l’agent d’export avec les mêmes droits complets.
  3. L’agent d’export, développé par un prestataire tiers, est compromis via une dépendance malveillante.
  4. L’agent compromis initie une nouvelle tâche A2A vers un agent de sauvegarde, en se présentant comme un agent légitime du pipeline.
  5. L’agent de sauvegarde, qui fait confiance à n’importe quel appelant avec un token valide, exécute la sauvegarde vers le serveur attaquant.

Analyse STRIDE

Catégorie STRIDE Applicable Explication
Spoofing (Usurpation d’identité) Oui Un agent compromis peut initier des tâches sous son nom légitime, masquant l’origine réelle de l’action malveillante.
Tampering (Falsification) Modéré Un agent Confused Deputy peut altérer des données dans les systèmes accessibles grâce à ses droits hérités.
Repudiation (Répudiation) Oui Sans traçabilité de la chaîne de délégation, impossible d’identifier quel agent a initié quelle action dans une chaîne A→B→C→D.
Information Disclosure (Divulgation) Oui Un agent avec des droits hérités trop larges peut accéder à des données bien au-delà du périmètre de sa tâche.
Denial of Service (Déni de service) Faible Impact limité dans ce vecteur spécifique.
Elevation of Privilege (Élévation de privilèges) Oui (PRIMAIRE) L’héritage implicite des permissions à travers la chaîne de délégation est précisément une élévation de privilège non autorisée.

Analyse PASTA

Étape 4 — Analyse des menaces

Threat actors :

  • Supply chain compromise : agent worker développé par un tiers contenant du code malveillant
  • Attaquant avec accès à un agent worker : exploite les droits hérités pour initier des tâches non autorisées
  • Injection de contexte : influence le comportement d’un agent légitime pour le transformer en Confused Deputy

Motivations : escalade de privilèges, exfiltration de données, accès persistent via un agent de confiance.

Étape 6 — Modélisation des attaques

graph TD
    A["Unauthorized Delegation"]
    A --> B["Chaîne de délégation transitive"]
    B --> C["Profondeur non bornée (A→B→C→D→...)"]
    B --> D["Permissions non contraintes à chaque niveau"]
    A --> E["Confused Deputy"]
    E --> F["Agent légitime manipulé via injection de contexte"]
    E --> G["Agent worker compromis initie de nouvelles tâches"]

Étape 7 — Analyse de risque/impact

Scénario Probabilité Impact Score
Supply chain compromise d’un agent worker Modérée Critique Critique
Délégation transitive sur 4+ niveaux sans contrainte Élevée (mauvaise pratique commune) Élevé Critique
Confused Deputy via injection de contexte Modérée Élevé Élevé

Impact potentiel

Impact Niveau Description de l'impact
Confidentialité Critique Un agent avec des droits hérités trop larges peut exfiltrer des données qui auraient dû être inaccessibles dans le cadre de sa tâche initiale.
Intégrité Élevé Un agent Confused Deputy peut déclencher des actions destructrices (suppressions, modifications en masse) sur des ressources auxquelles il ne devrait pas avoir accès en écriture.
Disponibilité Modéré Des actions non autorisées initiées par un agent compromis peuvent perturber des workflows dépendants et nécessiter un audit et une remédiation manuelle.
Réputation Sévère Une compromission via supply chain d'un agent worker qui exfiltre des données via délégation transitive expose l'organisation à des responsabilités légales vis-à-vis de ses clients et partenaires.

Recommandations de mitigation

1. Borner explicitement la profondeur de délégation

Définir un paramètre max_delegation_depth dans chaque tâche A2A. Chaque agent qui reçoit une délégation décrémente ce compteur et refuse de sous-déléguer si la valeur atteint zéro.

2. Principe de moindre privilège strict par niveau

Chaque niveau de délégation doit recevoir un token scopé uniquement aux permissions nécessaires pour sa tâche spécifique (voir A2A02). Ne jamais transmettre les droits complets de l’orchestrateur à un agent worker.

3. Human-in-the-Loop pour les délégations critiques

Pour les tâches agentiques qui impliquent des actions destructrices ou financières, imposer une validation humaine avant l’exécution. L’agent ne peut pas initier de sous-délégation sur ce type d’action sans approbation explicite.

4. Audit trail de la chaîne de délégation complète

Logguer chaque niveau de délégation avec l’identifiant de l’agent initiateur, l’identifiant de l’agent destinataire, la profondeur et les permissions transmises. Cela permet de retracer précisément l’origine de toute action anormale dans la chaîne.


Quelques références pour aller plus loin


À retenir

À retenir 📌

  • Borner la profondeur de délégation => jamais plus de 2 ou 3 niveaux ; au-delà, c'est de la complexité ingérable
  • Chaque délégation = downscoping obligatoire => les droits ne se transmettent pas, ils se redéfinissent à chaque niveau
  • Human-in-the-Loop sur les actions critiques => aucun agent ne devrait initier une action financière ou destructrice sans validation humaine
  • Audit trail complet de la chaîne => tracer chaque niveau de délégation pour détecter les anomalies et retracer les incidents

A2A04