système : OPÉRATIONNEL
← retour à tous les hacks
AGENTS MEDIUM NEW

Cinq attaques sur x402 : quand les agents IA paient, les coutures inter-couches fuient

Un papier du 12 mai 2026 casse formellement x402, le protocole de paiement agentique fondé sur HTTP 402. Cinq attaques sur le règlement, le rejeu, la couche web et la découverte — un paiement rejoué a produit 248 accès sur un endpoint en production.

2026-06-08 // 7 min affects: x402, agentic-payments, ai-agent-commerce, coinbase-x402-sdk

De quoi s’agit-il ?

Le 12 mai 2026, des chercheurs de l’Ohio State University, du CSIRO et de l’Université de Manchester ont publié Five Attacks on x402 Agentic Payment Protocol (arXiv:2605.11781). x402 est un standard ouvert — porté par Coinbase — qui ressuscite le code de statut HTTP 402 Payment Required, longtemps inutilisé, pour permettre à des agents logiciels de payer des API et des contenus à la volée : le serveur répond à une requête par un 402, l’agent joint un en-tête X-PAYMENT, un facilitateur hors chaîne vérifie et règle le paiement on-chain, puis la ressource est délivrée.

La thèse du papier est structurelle. x402 couple une autorisation HTTP synchrone à un règlement blockchain asynchrone, et cette couture — absente aussi bien des paiements web classiques que des paiements purement on-chain — est l’endroit où le protocole fuit. Les auteurs formalisent quatre propriétés de sécurité (solidité de l’autorisation, correspondance paiement–service, résistance au rejeu et k-atomicité du facilitateur), puis montrent que x402 les viole à la fois par conception et dans les implémentations déployées.

Comment ça marche

Le travail caractérise cinq attaques réparties en quatre classes. Aucune ne casse la cryptographie ; elles exploitent les écarts entre la couche HTTP et la chaîne.

Classe                        Attaque         Défaillance centrale
----------------------------  --------------  -------------------------------------------
I  Incohérence de règlement   I-A Revert-grant  ressource accordée avant finalité du paiement
                              I-B Préemption    règlement non lié à l'appelant, consommé par
                                                un observateur avant le vrai facilitateur
II Rejeu / idempotence        II               charge X-PAYMENT réutilisable -> accès multiples
III Couche web                III              fuite de cache CDN du contenu payant ; ambiguïté
                                                proxy / en-tête
IV Sélection de serveur       IV               la couche de découverte oriente l'agent vers un
                                                endpoint payant malveillant

Le résultat sur le rejeu est le plus parlant : quand un serveur délivre la ressource avant d’enregistrer atomiquement une identité de paiement, une charge X-PAYMENT valide peut être réutilisée, et sur un endpoint en production les auteurs ont observé 248 accès à partir d’un seul paiement. Les incohérences de règlement permettent à un agent de recevoir une ressource jamais payée in fine (revert-grant reproduit jusqu’à 5,18 % même avec des facilitateurs honnêtes). À la couche de découverte — avant tout paiement — manipuler les métadonnées d’un serveur a biaisé la sélection de l’agent vers un endpoint adverse jusqu’à 71,8 % des cas, et un flooding Sybil à cinq identités a atteint 60,2 %.

Aucune charge reproductible n’est reprise ici ; la référence canonique reste le papier. Les résultats ont été validés sur un banc d’essai de plus de 25 000 requêtes de paiement sur 48 configurations (Hardhat/Anvil et Base Sepolia) plus quatre endpoints en production, avec des intervalles de confiance de Wilson à 95 %.

Pourquoi c’est important

Le commerce agentique passe de la démo au déploiement, et x402 en est l’un des rails porteurs. La surface d’attaque est inédite parce que la frontière de confiance traverse plusieurs protocoles : l’en-tête X-PAYMENT se comporte comme une capacité au porteur que l’infrastructure HTTP ordinaire — proxys, CDN, caches — rejouera ou stockera volontiers, tandis que l’argent ne se règle que quelques secondes plus tard sur une chaîne que la couche web ne peut pas annuler. Une mauvaise configuration de cache devient un contournement de paiement ; une clé d’idempotence manquante devient du service gratuit à grande échelle.

Un audit multi-implémentations de trois SDK open source et quatre endpoints en production a révélé 11 vulnérabilités, dont un comportement « accorder avant régler » dans un SDK Python tiers, l’absence de liaison à l’identifiant de ressource, un règlement « fire-and-forget » et des en-têtes Cache-Control absents. Ce n’est pas un modèle théorique : c’est du code en production. Les travaux du même trimestre — Hardening x402 sur la fuite de métadonnées en clair et le SoK sur les agents autonomes dans le commerce agentique — vont dans le même sens : la couche de paiement fait désormais partie intégrante du modèle de menace des agents.

Défenses

Il n’y a pas de correctif unique — ce sont des classes au niveau du protocole et du déploiement. Les mitigations proposées par le papier, et le durcissement standard pour quiconque exploite x402 :

  1. Rendre le règlement atomique avec l’octroi (règlement en deux phases). Ne délivrez pas la ressource sous exécution optimiste. Liez l’appelant on-chain, le facilitateur, la ressource et la décision d’accès en un seul objet atomique, afin qu’un revert ne laisse pas un état accordé-mais-impayé.

  2. Imposer une idempotence obligatoire avec liaison à la ressource. Enregistrez une identité de paiement avant de délivrer quoi que ce soit, et liez chaque paiement à un identifiant de ressource précis. Cela ferme la classe rejeu/idempotence qui a produit 248 accès pour un paiement.

  3. Traiter l’en-tête X-PAYMENT comme un secret au porteur dans votre stack web. Posez un Cache-Control: no-store explicite sur les réponses payantes, auditez le comportement des CDN et proxys contre les fuites de cache, et appliquez un encodage canonique pour qu’aucune ambiguïté en-tête/proxy ne soit exploitable par différentiel de parseurs.

  4. Durcir la découverte côté agent. Ne laissez pas des métadonnées non vérifiées ou le volume d’enregistrements piloter la sélection d’endpoint. Utilisez réputation, enregistrements signés et résistance Sybil dans la découverte de type Bazaar, pour qu’un agent ne puisse pas être orienté vers un serveur payant malveillant avant même de payer.

  5. Minimiser et protéger les métadonnées de paiement. D’après Hardening x402, des champs comme resource_url, description et reason circulent en clair vers le facilitateur — filtrez ou caviardez les données personnelles avant exécution.

  6. Auditer votre SDK, pas seulement la spécification. La plupart des 11 failles étaient des bugs d’implémentation. Testez l’octroi-avant-règlement, l’idempotence manquante et l’absence d’en-têtes de cache dans la bibliothèque x402 que vous déployez.

Statut

ÉlémentRéférenceDateNotes
Five Attacks on x402 Agentic Payment ProtocolarXiv:2605.117812026-05-12Cinq attaques / quatre classes ; modèle formel + banc d’essai
Rejeu produisant des accès multiplesMême papier2026-05-12248 accès à partir d’un paiement, endpoint en production
Biais de la couche découverteMême papier2026-05-1271,8 % par manipulation de métadonnées ; 60,2 % flood Sybil à 5
Audit SDK / endpointsMême papier2026-05-1211 vulnérabilités sur 3 SDK + 4 endpoints
Divulgation responsableHackerOne #3679163/#3679179/#36792202026Signalé en privé à Coinbase avant publication
Hardening x402 (métadonnées/PII)arXiv:2604.114302026-04Fuite de métadonnées en clair et filtrage pré-exécution

La leçon dépasse un seul protocole : quand l’autorisation d’un agent vit dans HTTP mais que son argent vit sur une chaîne, la sécurité ne tient que si les deux sont liés atomiquement. Tout ce qu’exploitent ces attaques se loge dans l’écart entre les deux.

Sources