Le pont Axelar de Secret Network a été vidé d'environ 4,67 millions de dollars le 10 juin, après qu'un attaquant a exploité une faille dans un contrat CW20-ICS20 personnalisé qui frappait des versions enveloppées par Secret d'actifs enveloppés par Axelar — appelées saTokens — sans vérifier le canal IBC par lequel un transfert entrant était arrivé. Selon une autopsie de Common Prefix, principal steward Axelar, l'attaquant a lancé une chaîne Cosmos à validateur unique, a ouvert un canal IBC vers le contrat, et s'est auto-relayé des paquets forgés portant des dénominations qui correspondaient à la liste blanche du contrat, frappant ainsi de vrais saTokens à partir de rien. Le drain est passé inaperçu pendant sept jours, ne ressortant que le 17 juin lorsqu'un transfert inter-chaînes normal a échoué parce que le compte de séquestre ne détenait plus assez pour le couvrir.
Pourquoi c'est important
La vulnérabilité n'était pas nouvelle — Common Prefix a remonté la vérification de canal manquante jusqu'au déploiement du contrat début 2023, et une migration du 5 mars qui a mis à jour le bytecode pour de nouvelles fonctionnalités a reconduit la même faille. Le propre writeup de Secret Network indiquait que le contrat de pont avait été refondu d'un modèle de séquestre vers un modèle de mint pour l'intégration Axelar, et les deux fonctions qui auraient validé la source d'un transfert ont été supprimées lors de cette refonte. Surtout, aucun audit externe n'a été demandé par Axelar dans le cadre de l'intégration, et les soldes chiffrés on-chain ont rendu le manque invisible, contrairement à ce qui se serait passé pour un pool vidé sur Ethereum. L'exploit a explicitement été rapproché de la récente divulgation Zcash, où une vulnérabilité de contrefaçon a fait chuter le ZEC de plus de 30 %.
Impact sur le marché
Sept saTokens ont été drainés — saUSDT, saUSDC, saDAI, saWETH, saWBTC, saWBNB et sawstETH — et l'attaquant a routé les produits via Osmosis par packet-forwarding avant de ponter vers Ethereum et de les échanger pour l'essentiel contre de l'ether sur CoW Protocol, en les répartissant sur quelque 30 portefeuilles frais qui ont atterri sur KuCoin, ChangeNow et HitBTC. Le comité d'urgence d'Axelar a désactivé les connexions Secret et Secret-SNIP, et le routeur inter-chaînes Squid a retiré le réseau de sa liste ; l'équipe Axelar a indiqué que son protocole central était intact.
Questions fréquemment posées
-
Comment l'attaquant a-t-il vidé le pont Secret-Axelar ?
L'attaquant a lancé une chaîne Cosmos à validateur unique, ouvert un canal IBC vers un contrat CW20-ICS20 personnalisé sur Secret, et s'est auto-relayé des paquets forgés dont les dénominations correspondaient à la liste blanche du contrat. Le contrat n'a pas pu distinguer ces dénominations nues du canal réel…
-
Quels tokens ont été drainés et quel montant a été dérobé ?
Environ 4,67 millions de dollars ont été pris sur sept saTokens : saUSDT, saUSDC, saDAI, saWETH, saWBTC, saWBNB et sawstETH, selon l'autopsie de Common Prefix.
-
Pourquoi l'exploit est-il passé inaperçu pendant sept jours ?
Les soldes de Secret Network sont chiffrés par défaut, de sorte que les garanties manquantes n'étaient pas visibles on-chain comme l'aurait été un pool vidé sur Ethereum. Le manque n'est ressorti que le 17 juin, lorsqu'un transfert inter-chaînes routinier a échoué avec une erreur montrant que le compte de séquestre ne…
-
La vulnérabilité était-elle nouvelle, et le code a-t-il été audité ?
Common Prefix a remonté la vérification de canal manquante jusqu'au déploiement initial du contrat début 2023, et une migration du 5 mars qui a mis à jour le bytecode pour de nouvelles fonctionnalités a reconduit la même faille. Le propre writeup de Secret Network indiquait qu'aucun audit externe n'avait été demandé…
-
Qu'est-il advenu des fonds volés et du pont ?
L'attaquant a routé les produits via Osmosis jusqu'à Ethereum, les a échangés contre de l'ETH sur CoW Protocol, et a réparti le solde sur quelque 30 portefeuilles frais atterrissant sur KuCoin, ChangeNow et HitBTC. Le comité d'urgence d'Axelar a désactivé les connexions Secret et Secret-SNIP, Squid a retiré le réseau…