🤖HermesBlog
Plateformes de Messagerie Hermes · Partie 378/14/2026

Mécanismes de sécurité A2A : le système de contrôle d'accès pour la confiance entre agents

Hermes Messaging Platform, intégration épisode 37 : les quatre lignes de défense de l'A2A et les correctifs communautaires en conditions réelles.

Faire se « téléphoner » deux IA, quelle est la plus grande peur ? Ce n’est pas qu’elles discutent sans fin, mais qu’un inconnu se fasse passer pour une connaissance et frappe à la porte.

A2A -security

Principes de conception sécurité : verrouiller la porte avant de l’ouvrir

Imaginez que vous emménagez dans une nouvelle maison : la première chose que vous faites, ce n’est pas accrocher les rideaux, c’est changer la serrure. Les concepteurs du protocole A2A ont pensé la même chose — sécurisé par défaut, chaque assouplissement doit être une opération explicite. Ce mécanisme fonctionne comme un système de contrôle d’accès complet : la serrure (token), le badge d’accès (clé par pair), le judas (identification), la caméra de surveillance (journaux d’audit). Sur la plateforme de messagerie Hermes, la fonctionnalité A2A est fournie sous forme de plugin, mais les valeurs de sécurité par défaut ne font aucun compromis : sans token configuré, elle n’écoute que sur 127.0.0.1 en local — c’est comme si la porte était verrouillée et que la clé n’était qu’entre vos mains.

Détail des quatre lignes de défense

Première ligne : liaison locale + token (la serrure)

Par défaut, A2A n’écoute qu’en local — l’extérieur ne peut même pas toucher la porte. Pour exposer un service à l’extérieur, deux conditions doivent être remplies simultanément : définir l’adresse d’exposition A2A_HOST et configurer un bearer token. C’est comme si vous deviez non seulement ouvrir la fenêtre, mais aussi poser un cactus épineux sur le rebord — les deux sont indispensables.

Deuxième ligne : clé indépendante par pair (le badge d’accès)

Chaque pair possède son propre token dédié, configuré via A2A_PEER_TOKENS="alice:tok1,bob:tok2". Ce n’est pas un passe-partout qui ouvre toutes les portes, mais plutôt un badge d’accès individuel pour chaque visiteur. L’identité authentifiée pilote le rate limiting, les listes de confiance et l’audit — qui a badgé, combien de fois, à quel moment, tout est enregistré.

Troisième ligne : filtrage d’injection + désensibilisation (le portique de sécurité)

Les textes entrants sont filtrés et marqués comme « entrée de pair non fiable » ; les pairs distants ne peuvent pas invoquer les commandes slash de l’opérateur. C’est comme le contrôle de sécurité à l’aéroport : les liquides dans le bagage doivent être sortis et inspectés séparément. Dans les réponses sortantes, les chaînes en forme d’identifiants (clés API, JWT, tokens) sont automatiquement effacées — comme si une lettre envoyée voyait automatiquement le numéro de carte d’identité du destinataire masqué.

Quatrième ligne : journaux d’audit + anti-boucle (la caméra de surveillance)

Chaque échange est ajouté à ~/.hermes/a2a_audit.jsonl, comme une caméra de surveillance 24h/24 devant la porte. La limite de tours anti-boucle fonctionne comme l’interphone de la maison du voisin — si deux IA discutent sans fin, le système coupe automatiquement.

Histoires d’attaques réelles : 3 problèmes découverts et corrigés par la communauté

Histoire n°1 : contournement SSRF (#78298) — tromper la serrure avec un « code numérique secret »

Un attaquant a découvert que la vérification de sécurité de l’URL de callback utilisait une correspondance par préfixe de chaîne sur le nom d’hôte, par exemple en vérifiant si l’URL commence par 127.. Mais les adresses IP ont une écriture « en entier » — 2130706433 n’est qu’une autre façon d’écrire 127.0.0.1. C’est comme écrire son numéro de rue en code Morse : le gardien ne le reconnaît pas et laisse passer. Correctif : résoudre d’abord l’hôte du callback en IP standard avant de juger — c’est comme si le gardien traduisait toute forme d’adresse en numéro de rue standard avant de comparer.

Histoire n°2 : effondrement d’identité derrière un reverse proxy (#80534/#80779) — tout le monde devient la même personne

Déployé derrière nginx ou K8s, le plugin A2A déduit l’identité de l’appelant à partir de l’adresse socket. Mais le serveur proxy se trouve entre les deux, et tous les pairs apparaissent avec la même IP — celle du proxy. C’est comme le poste de garde d’un immeuble : tous les visiteurs sont enregistrés comme « signé par le poste de garde ». Le rate limiting partage un seul bucket (un utilisateur occupé ralentit tout le monde), la liste blanche de confiance ne peut contenir que l’adresse du proxy, et l’audit ne voit pas le véritable appelant. Correctif : déduire l’identité réelle depuis X-Forwarded-For, mais uniquement si l’on est « derrière un proxy de confiance ».

Histoire n°3 : angle mort d’audit (#81003/#81042) — les coups de poing refusés ne sont pas enregistrés

Les journaux d’audit n’enregistrent que le trafic accepté. Les requêtes 401 (token invalide) et 403 (non fiable) ne génèrent aucune trace. C’est comme une caméra de surveillance qui ne filme que les personnes qui entrent sans encombre, mais qui rate l’image du cambrioleur en train de crocheter la serrure. Attaques par bourrage d’identifiants, sondages avec tokens révoqués, tentatives de mouvement latéral — ce sont précisément ces comportements que l’audit doit capturer. Correctif : toutes les refus d’authentification sont également ajoutés au journal d’audit en append-only, avec un champ decision + code de statut HTTP + IP de l’appelant.

Ce que cela signifie pour l’utilisateur

La logique centrale de ce mécanisme est la suivante : la sécurité n’est pas une correction après coup, c’est l’état par défaut. En tant qu’utilisateur de Hermes, vous n’avez pas besoin d’être un expert en sécurité pour bénéficier d’une protection de base — les quatre lignes de défense s’activent automatiquement. Plus important encore, la communauté ne cesse de renforcer le système face à de vraies attaques : du contournement SSRF à l’effondrement d’identité derrière un reverse proxy, en passant par l’angle mort d’audit, chaque problème correspond à un scénario réel. Le protocole A2A est comme un château sans cesse renforcé, chaque brique ayant été éprouvée au combat. La prochaine fois que vos deux agents se « téléphonent », il n’y a pas seulement entre eux une serrure, un badge d’accès, un portique de sécurité et une caméra de surveillance — il y a aussi une équipe de gardiens qui surveillent les journaux.

📖 Documentation officielle

Cet article est basé sur la documentation officielle de Hermes Agent :Docs officiels › user-guide/messaging/a2a