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

L’endpoint /.well-known/agent.json expose publiquement la cartographie complète de ton écosystème d’agents. Pour un attaquant, c’est une invitation à la reconnaissance.

Partie de la série A2A Security


Description du risque

Le mécanisme de découverte A2A repose sur la publication d’Agent Cards à des endpoints standardisés, typiquement /.well-known/agent.json. Par conception, ces endpoints sont destinés à être accessibles , mais la spécification ne définit pas de contrôle d’accès par défaut. Dans de nombreuses implémentations, les Agent Cards sont publiquement accessibles sans authentification, exposant à quiconque sait où chercher la cartographie complète de l’écosystème d’agents.

Je vous encourage a regarder sur shodan ou fofa pour voir le nombre de systèmes exposant déjà des endpoints de découverte A2A sans protection. C’est une surface d’attaque énorme qui s’ouvre à tous les attaquants du monde.

Ce que contient une Agent Card : le nom et la version de l’agent, la liste de ses capacités et outils exposés, les URLs de ses endpoints, les schémas d’entrée/sortie, et parfois des informations sur les technologies utilisées. C’est exactement ce dont un attaquant a besoin pour préparer une attaque ciblée.

Exposer une Agent Card sans contrôle d’accès, c’est comme afficher l’organigramme de ton infrastructure sur la page d’accueil de ton site.


Vecteurs d’attaque

1. Scan automatisé de l’écosystème

Un attaquant peut automatiser le scan de l’endpoint /.well-known/agent.json sur toutes les machines d’un réseau (plage IP, sous-domaines, endpoints connus). En quelques minutes, il dispose d’une carte complète de l’écosystème agentique : quels agents existent, quelles capacités ils exposent, quelles versions tournent.

2. Exploitation des métadonnées de version

Les Agent Cards exposent souvent la version de l’agent et des informations sur le stack technologique. Un attaquant qui identifie une version vulnérable d’un agent (framework LangChain ancien, SDK A2A non patché) peut cibler précisément cet agent avec un exploit connu.

3. Énumération des capacités pour cartographier les actions disponibles

Avant de lancer une attaque plus élaborée (Tool Poisoning, injection, délégation non autorisée), un attaquant utilise les informations des Agent Cards pour identifier les outils les plus puissants exposés par chaque agent et préparer une attaque ciblée sur les vecteurs à fort impact.


Exemple concret

Un attaquant effectue un scan de reconnaissance sur le réseau d’une entreprise :

  1. Il identifie la plage IP interne des services et effectue un scan sur le port 443 avec le chemin /.well-known/agent.json.
  2. Il découvre 12 agents actifs. L’un d’eux renvoie la réponse suivante :
{
  "name": "finance-automation-agent",
  "description": "Automated financial processing agent",
  "version": "1.2.3",
  "url": "https://finance-agent.internal/a2a",
  "capabilities": {
    "streaming": false
  },
  "skills": [
    {"id": "process_payment", "name": "Process Payment", "description": "Execute bank transfers up to 50000 EUR"},
    {"id": "approve_invoice", "name": "Approve Invoice", "description": "Approve supplier invoices"},
    {"id": "generate_report", "name": "Generate Financial Report", "description": "Access to full P&L data"}
  ],
  "authentication": {
    "schemes": ["none"]
  }
}
  1. L’attaquant dispose maintenant de l’URL exacte de l’agent (finance-agent.internal/a2a), de la liste de ses capacités les plus sensibles (process_payment jusqu’à 50 000 €, accès aux données P&L), et de la confirmation qu’il n’y a pas d’authentification.
  2. Il prépare une attaque ciblée sur le skill process_payment directement, sans avoir eu besoin d’aucun accès préalable.

Analyse STRIDE

Catégorie STRIDE Applicable Explication
Spoofing (Usurpation d’identité) Faible Ce risque est principalement informatif ; il facilite le spoofing d’autres agents mais ne constitue pas lui-même une usurpation.
Tampering (Falsification) Faible La découverte seule ne permet pas de falsifier des données.
Repudiation (Répudiation) Modéré Sans log des accès à l’endpoint de découverte, impossible de détecter qu’une reconnaissance a été effectuée.
Information Disclosure (Divulgation) Oui (PRIMAIRE) L’exposition non contrôlée des Agent Cards révèle la cartographie complète de l’infrastructure agentique : agents, capacités, endpoints, versions.
Denial of Service (Déni de service) Faible Impact limité sur ce vecteur spécifique.
Elevation of Privilege (Élévation de privilèges) Modéré Les informations recueillies facilitent des attaques d’élévation de privilèges ultérieures en identifiant les agents les plus puissants.

Analyse PASTA

Étape 4 — Analyse des menaces

Threat actors :

  • Attaquant externe ayant accès au réseau (via VPN compromis, accès partenaire, SSRF depuis une application web)
  • Attaquant interne (employé malveillant, prestataire) qui scanne le réseau interne
  • Bot de reconnaissance automatisé ciblant les endpoints standardisés connus

Motivations : collecte d’information pour préparer une attaque ciblée, identification des agents à fort impact, cartographie de la surface d’attaque.

Étape 6 — Modélisation des attaques

graph TD
    A[Reconnaissance via Agent Discovery] --> B[Scan de l'endpoint /.well-known/agent.json]
    A --> C[Exploitation des métadonnées]
    B --> B1[Sur réseau interne - mouvement latéral]
    B --> B2[Via SSRF depuis une application web exposée]
    C --> C1[Version → recherche CVE]
    C --> C2[Skills exposés → identification des cibles]
    C --> C3[URL endpoints → préparation d'attaque directe]

Étape 7 — Analyse de risque/impact

Scénario Probabilité Impact Score
Scan automatisé des Agent Cards internes Élevée Élevé Critique
Exposition de capacités sensibles (paiement, admin) Élevée Critique Critique
Exploitation de version vulnérable identifiée Modérée Critique Élevé

Impact potentiel

Impact Niveau Description de l'impact
Confidentialité Élevé La cartographie complète de l'écosystème agentique est exposée : quels agents existent, quelles actions ils peuvent effectuer, quelles technologies ils utilisent.
Intégrité Modéré Ce risque est principalement un facilitateur. L'impact sur l'intégrité se matérialise via les attaques subséquentes rendues possibles par la reconnaissance.
Disponibilité Modéré Un scan massif de l'endpoint de découverte peut constituer un DoS léger sur les agents qui traitent ces requêtes sans rate limiting.
Réputation Élevé L'exposition d'une infrastructure agentique sans contrôle d'accès, si découverte par des chercheurs en sécurité ou des médias, génère une couverture négative significative sur la maturité sécurité de l'organisation.

Recommandations de mitigation

1. Authentifier l’accès aux Agent Cards

L’endpoint /.well-known/agent.json ne doit pas être public par défaut. Protéger l’accès avec au minimum une authentification par clé API ou OAuth 2.0. Seuls les agents et orchestrateurs légitimes doivent pouvoir découvrir les Agent Cards.

2. Minimiser les informations exposées dans les Agent Cards

Appliquer le principe de moindre exposition : ne pas inclure les numéros de version précis, ne pas décrire en détail les capacités sensibles, ne pas exposer les endpoints internes dans les Agent Cards publiques.

// À ÉVITER : Agent Card trop détaillée
{
  "version": "1.2.3",
  "skills": [{"description": "Execute bank transfers up to 50000 EUR"}],
  "authentication": {"schemes": ["none"]}
}

// PRÉFÉRER : Agent Card minimale
{
  "skills": [{"id": "finance", "name": "Financial Operations"}],
  "authentication": {"schemes": ["Bearer"]}
}

3. Monitorer les accès à l’endpoint de découverte

Logger tous les accès à /.well-known/agent.json et alerter sur les patterns de reconnaissance (nombreuses requêtes depuis une même origine, scan séquentiel d’endpoints). Un pic soudain d’accès à cet endpoint est un signal d’alerte fort.

4. Utiliser l’Agent Name Service (ANS) OWASP

L’ANS OWASP fournit un registre centralisé avec authentification pour la découverte d’agents, évitant l’exposition publique des Agent Cards individuelles.


Quelques références pour aller plus loin


À retenir

À retenir 📌

  • L'endpoint /.well-known/agent.json n'est pas public par défaut => protéger l'accès avec une authentification dès le départ
  • Minimiser les métadonnées exposées => pas de version précise, pas de description détaillée des capacités sensibles
  • Logger et alerter sur les accès à l'endpoint de découverte => un scan de reconnaissance se détecte au niveau de ce log
  • Considérer l'ANS OWASP pour une découverte centralisée et authentifiée, plutôt que des endpoints dispersés

A2A06