Une incohérence entre les soldes et l’offre totale

Entre le 24 et le 26 octobre, un programme XCM malveillant a utilisé l’instruction WithdrawAsset. Lorsqu’il échouait, les débits des comptes étaient annulés, mais la baisse de l’offre totale enregistrée de dotUSD persistait. Répéter la séquence a donc réduit l’offre comptable sans modifier les soldes détenus par les utilisateurs.

Faits établis par le rapport de Parity : le bug se trouvait dans l’exécuteur XCM, pas dans Snowbridge. Les messages sont arrivés depuis Ethereum, mais l’équipe a reproduit le comportement sans utiliser le pont.

Comment le prix du pool a été déformé

Le DEX de l’Asset Hub plafonnait la quantité de dotUSD disponible au plus petit montant entre le solde du pool et l’offre enregistrée. Une fois l’offre artificiellement passée sous le solde réel, cette hypothèse a cassé. Le dotUSD s’est trouvé surévalué dans le pool, permettant de l’échanger contre davantage de DOT.

ÉtapeEffet
Échec d’un programme XCMDébit du compte annulé
Erreur de comptabilisationBaisse d’offre dotUSD conservée
RépétitionOffre affichée inférieure aux soldes réels
Calcul du DEXPrix artificiellement élevé du dotUSD
ArbitrageSortie de DOT aux dépens de la trésorerie

Une perte publique, pas une perte des utilisateurs

Cryptoast estime à 1,38 million de dollars la valeur des DOT retirés du pool, dont la trésorerie était l’unique fournisseur de liquidité. Parity affirme que les soldes utilisateurs n’ont pas changé et que le module de stabilité a maintenu la conversion de dotUSD contre USDT au ratio de 1 pour 1.

Les preuves onchain ne permettent pas d’affirmer que l’auteur de l’exploitation XCM et celui qui a réalisé l’arbitrage sont la même personne. Cette distinction reste donc non vérifiée.

Un correctif connu mais non encore déployé

La vulnérabilité avait été signalée dans le programme de bug bounty en juin et corrigée dans le code. Classée de sévérité moyenne avant le lancement de dotUSD, elle n’avait pas été intégrée à la version stable alors en production. Parity estime qu’un commentaire public du chercheur, depuis supprimé, a pu donner aux attaquants suffisamment de contexte.

La réponse technique et les enseignements

Snowfork a d’abord interrompu ses propres relais, ralentissant les messages entrants. L’attaquant a ensuite utilisé son propre relais. Le runtime 2.5.1 a appliqué le correctif environ six heures après cette reprise, puis la version 2.5.2 a rétabli l’offre enregistrée à partir des soldes sans modifier les comptes. Parity annonce une réévaluation plus fréquente des vulnérabilités, un déploiement accéléré des correctifs et une meilleure surveillance des variations d’émission.