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é
~5 minutes

Une seule requête peut déclencher des centaines de délégations en cascade. Le DoS par amplification A2A est un déni de service économique silencieux qui vide les budgets avant qu’on s’en aperçoive.

Partie de la série A2A Security


Description du risque

La puissance des architectures multi-agents A2A réside dans leur capacité à paralléliser et à sous-déléguer des tâches, mais c’est précisément cette capacité qui crée un vecteur de DoS unique. Quand un attaquant peut déclencher une tâche A2A qui se subdivise en N sous-tâches, qui se subdivisent elles-mêmes en M sous-sous-tâches, l’effet d’amplification peut rapidement devenir exponentiel.

Ce type de Déni de Service est particulièrement insidieux dans un contexte IA car :

  • Le coût est économique, pas seulement computationnel : chaque délégation consomme des tokens LLM facturés à l’usage. Avec Claude Opus 4.6 à plusieurs dollars par million de tokens, une boucle de délégation non bornée peut générer des factures de milliers d’euros en quelques minutes.
  • Le signal d’alerte est retardé : contrairement à un DDoS réseau, les effets se voient sur la facture cloud, pas sur les métriques système en temps réel.
  • Aucun circuit breaker n’est défini dans la spécification A2A v2 pour limiter l’amplification.

Une architecture multi-agents sans budget de délégation est une dépense sans plafond attendant son déclencheur.


Vecteurs d’attaque

1. Fan-out attack

Un attaquant envoie une tâche à un orchestrateur A2A qui délègue à N agents en parallèle, chacun déléguant à N autres, et ainsi de suite. Sans limite de fan-out explicite, un arbre de délégation de profondeur 4 avec un facteur de branchement de 5 génère 625 sous-tâches LLM à partir d’une seule requête initiale.

2. Boucle de délégation circulaire

Sans vérification de cycle dans le graphe de délégation, un agent A peut déléguer à B, qui délègue à C, qui délègue à A, créant une boucle infinie. Chaque itération consomme des ressources et des tokens jusqu’à épuisement du budget ou timeout du système.

3. Tâches à longue durée déclenchées en masse

Un attaquant déclenche un grand nombre de tâches A2A qui impliquent des opérations longues (analyse de gros documents, recherche approfondie, génération de code complexe). Même si chaque tâche est légitime individuellement, leur déclenchement simultané épuise les ressources et le budget.


Exemple concret

Un système de recherche agentique reçoit une requête d’analyse de marché.

  1. L’orchestrateur reçoit : “Analyse en profondeur les 50 principaux marchés européens pour notre expansion.”
  2. Sans circuit breaker, l’orchestrateur délègue à 50 agents de recherche en parallèle (un par marché).
  3. Chaque agent de recherche délègue à 5 sous-agents spécialisés (économie, régulation, concurrence, culture, logistique).
  4. Chaque sous-agent fait appel à 3 agents de synthèse.
  5. Résultat : 750 appels LLM déclenchés par une seule requête, chacun traitant des dizaines de milliers de tokens.

Un attaquant qui peut déclencher cette requête , même de manière légitime en apparence , peut vider le budget LLM mensuel en une seule opération.


Analyse STRIDE

Catégorie STRIDE Applicable Explication
Spoofing (Usurpation d’identité) Faible Ce risque ne porte pas sur l’identité.
Tampering (Falsification) Faible Ce risque ne porte pas sur l’intégrité des données.
Repudiation (Répudiation) Modéré Sans log du graphe de délégation complet, difficile d’identifier l’origine d’un fan-out excessif.
Information Disclosure (Divulgation) Faible Impact limité sur ce vecteur.
Denial of Service (Déni de service) Oui (PRIMAIRE) Le déni de service économique (épuisement du budget LLM) et opérationnel (saturation des ressources) est l’impact central de ce risque.
Elevation of Privilege (Élévation de privilèges) Faible Impact limité sur ce vecteur.

Analyse PASTA

Étape 4 — Analyse des menaces

Threat actors :

  • Utilisateur malveillant avec accès légitime au système, qui formule des requêtes conçues pour déclencher un fan-out maximal
  • Attaquant externe ayant accès à un endpoint A2A public ou peu protégé
  • Agent compromis qui déclenche délibérément des cascades de délégation non bornées

Motivations : interruption de service, augmentation des coûts pour la cible (attaque économique), couverture pour d’autres actions malveillantes.

Étape 6 — Modélisation des attaques

graph TD
    A["DoS par amplification A2A"] --> B["Fan-out attack"]
    A --> C["Boucle circulaire"]
    B --> B1["Requête unique → N délégations → N² sous-délégations"]
    B --> B2["Absence de limite de branchement dans l'orchestrateur"]
    C --> C1["A→B→C→A : cycle de délégation infini"]
    C --> C2["Absence de détection de cycle dans le graphe"]

Étape 7 — Analyse de risque/impact

Scénario Probabilité Impact Score
Fan-out non borné sur requête légitime volontairement large Élevée Élevé Critique
Boucle circulaire de délégation Modérée Critique Critique
Déclenchement massif de tâches longues Modérée Élevé Élevé

Impact potentiel

Impact Niveau Description de l'impact
Confidentialité Faible Impact limité sur ce vecteur , l'objectif est la perturbation de service, pas l'exfiltration de données.
Intégrité Modéré La saturation des ressources peut entraîner des résultats partiels ou corrompus dans les pipelines agentiques en cours d'exécution.
Disponibilité Critique Interruption complète du pipeline agentique, saturation des quotas LLM, épuisement du budget cloud. Un fan-out de profondeur 4 peut générer des centaines de tâches en quelques secondes.
Réputation Élevé Une facture cloud anormale de plusieurs milliers d'euros en quelques heures, nécessitant une investigation et une explication aux équipes financières, avec impact opérationnel visible.

Recommandations de mitigation

1. Budget de tokens par pipeline A2A

Définir un budget de tokens maximum par pipeline complet (requête initiale + toutes les sous-délégations). Implémenter un circuit breaker qui interrompt la délégation dès que le budget est atteint.

2. Limite de fan-out et détection de cycle

Définir un facteur de branchement maximum (ex. 10 délégations parallèles max par nœud) et maintenir un graphe de délégation pour détecter les cycles (un agent ne peut pas apparaître deux fois dans la même chaîne).

3. Rate limiting sur les endpoints A2A

Implémenter un rate limiting strict sur l’endpoint /tasks/send de chaque agent : nombre de requêtes par minute par client, et nombre de tâches simultanées en cours.

4. Monitoring du graphe de délégation en temps réel

Surveiller en temps réel la profondeur et le fan-out du graphe de délégation avec des alertes dès que des seuils anormaux sont atteints. Des outils comme Langfuse ou Prometheus permettent de visualiser ces métriques.


Quelques références pour aller plus loin


À retenir

À retenir 📌

  • Budget de tokens par pipeline obligatoire => sans plafond, chaque pipeline agentique est une dépense potentiellement illimitée
  • Limiter le fan-out => max 10 délégations parallèles par nœud, et détecter les cycles de délégation
  • Rate limiting sur /tasks/send => traiter l'endpoint A2A comme tout endpoint API exposé
  • Monitoring du graphe de délégation en temps réel => un fan-out anormal se détecte en secondes avec les bons outils

A2A07