Agents

Des failles critiques dans le SDK x402 auraient pu permettre le drainage des soldes de jetons d'agents d'IA

26 octobre 2026 · 3 min de lecture

Également publié en 한국어, हिन्दी, ไทย, 中文

black car instrument panel cluster
Cole Freeman / Unsplash

Des agents d'intelligence artificielle utilisant les kits de développement logiciel SDK de x402 pour payer des appels d'interface de programmation d'application API auraient pu signer un paiement pour la totalité de leur solde de jetons supportés si une API malveillante l'avait demandé, a indiqué la société de sécurité V12 le 22 octobre.

Le problème provenait du client par défaut des SDK, qui ne fixait aucune limite de dépense. Ce risque concernait les agents signant automatiquement les paiements et dont les applications n'avaient pas défini de limites. Cette absence de limite est l'une des 25 failles découvertes par V12 dans le code de x402, et l'une des trois classées comme critiques. La x402 Foundation, qui gère les SDK, a corrigé ces trois failles critiques dans les versions publiées le 18 août.

Une autre faille critique permettait à un facilitateur, le service vérifiant les paiements x402, d'accepter une transaction Solana ne déplaçant aucun jeton comme un paiement valide. Ce défaut était présent uniquement dans le SDK TypeScript. Une troisième faille permettait à un serveur malveillant d'amener un agent à signer un message de connexion pour un site web différent.

V12 a identifié ces problèmes via l'examen du code et des tests locaux. Ni V12 ni la x402 Foundation n'ont signalé publiquement d'attaques utilisant ces failles. La fondation n'a publié aucun avis de sécurité pour ces trois vulnérabilités, et ses journaux de modifications listent les corrections sans les qualifier de correctifs de sécurité. Au 23 octobre, npm audit et PyPI n'affichaient aucun avis ou vulnérabilité pour les versions précédant les corrections, ce qui signifie qu'un développeur s'appuyant sur ces vérifications ne reçoit aucun avertissement de mise à jour.

Le standard ouvert x402 permet aux logiciels, dont les agents d'IA, de payer un appel API directement dans la requête web sans approbation humaine pour chaque transaction. Lorsqu'un serveur demande un paiement via le code d'état HTTP 402, le client choisit une option et signe le paiement. Avant la correction, le client par défaut prenait la première option sans limite de montant. Une API hostile pouvait ainsi transformer une requête de données routinière en une demande du solde complet du portefeuille. Les versions du 18 août ont ajouté des contrôles de dépense pour les clients TypeScript, Python et Go, plafonnant désormais chaque paiement à 1 dollar par défaut et limitant les paiements aux stablecoins en dollars américains reconnus, comme l'USDC.

Concernant la faille Solana, le code du facilitateur TypeScript vérifiait l'appel d'un programme de jetons autorisé mais lisait l'instruction comme un transfert sans en vérifier le type. Une approbation de jeton, qui permet à un autre compte de dépenser des jetons plus tard sans en déplacer immédiatement, ne diffère d'un transfert que par son premier octet. Le facilitateur acceptait donc une approbation comme paiement valide, permettant à un attaquant d'obtenir une ressource payante sans posséder de solde. Les SDK Python et Go effectuaient déjà cette vérification. Les versions de @x402/svm de 2.0.0 à 2.22.0 étaient vulnérables, tandis que celles à partir de 2.23.0 sont corrigées.

Enfin, l'extension de connexion Sign-In-With-X permettait à un agent de se connecter en signant un message. Le client automatisé signait ces messages sans vérifier que le site nommé correspondait au site contacté. Un serveur malveillant pouvait ainsi utiliser une signature relayée pour se connecter à un autre site en tant qu'agent. Les versions du 18 août obligent désormais les clients TypeScript, Python et Go à refuser la signature si les sites ne correspondent pas. La spécification SIWx a également été modifiée pour exiger ce refus.