Skip to content

exploit

Polkadot : la trésorerie perd 1,38 M$ en DOT via un bug XCM sur Asset Hub

Du 24 au 26 octobre, un attaquant a exploité une faille de l'exécuteur XCM pour sous-évaluer la supply de dotUSD et siphonner le pool DOT/dotUSD. Correctif en runtime 2.5.1, puis 2.5.2.

par 5 min de lecture

Entre le 24 et le 26 octobre 2026, un attaquant a exploité une vulnérabilité de l'exécuteur XCM de Polkadot pour sous-évaluer la supply officielle du stablecoin dotUSD sur l'Asset Hub, puis vider progressivement le pool DOT/dotUSD dont la trésorerie Polkadot était l'unique fournisseur de liquidité. Perte estimée : ~1,381 million de dollars en DOT. Aucun utilisateur n'a été affecté. Le post-mortem complet vit sur le forum Polkadot : « XCM incident review: what happened and what we learned », publié par bkchr (Parity Technologies). La reprise détaillée côté FR est signée Cryptoast.

Le mécanisme de l'attaque

  • Un programme XCM contenant l'instruction WithdrawAsset provoque, en cas d'erreur en cours d'exécution, le rollback du débit sur les comptes — mais pas de la diminution de supply totale enregistrée côté dotUSD.
  • En répétant ces programmes XCM voués à l'échec, l'attaquant abaisse la supply officielle de dotUSD sans toucher aux balances des utilisateurs.
  • Le pool DOT/dotUSD d'Asset Hub pricing dotUSD en prenant le minimum entre son propre solde dotUSD et la supply officielle. Une fois la supply tombée sous le solde du pool, dotUSD devient artificiellement surévalué.
  • L'attaquant swap alors dotUSD contre DOT à un taux faussé et siphonne la liquidité fournie par la trésorerie.

Le stablecoin dotUSD lui-même reste intégralement adossé : le Peg Stability Module (PSM) continue d'honorer la frappe et le rachat 1:1 contre USDT pendant toute la durée de l'incident.

Le vecteur : Snowbridge

Les messages XCM malveillants sont arrivés depuis Ethereum via Snowbridge, le bridge natif qui relie Ethereum et Polkadot. Parity précise que la faille réside dans l'exécuteur XCM, pas dans Snowbridge : les équipes ont pu reproduire le comportement sans passer par le bridge. Snowfork, l'opérateur des relayers de consensus Snowbridge, a stoppé ses relayers le 24 octobre, ce qui a interrompu l'attaque. Deux jours plus tard, le 26 octobre, l'attaquant a redémarré l'attaque en opérant son propre relayer Snowbridge.

Chronologie

  • Juin 2026 : le bug est reporté via le programme Bug Bounty de Parity. Correctif merge dans le PR #11910, classé initialement medium severity. Le patch rate la release stable-2606 et n'est pas déployé.
  • 20 octobre 2026 : un commentaire public sur le forum Polkadot, posté par le rapporteur initial, référence le fix. Le commentaire est supprimé quelques heures plus tard ; Parity estime qu'il a pu suffire à attirer l'attention d'un attaquant sur la zone vulnérable.
  • 24 octobre 2026 : début de l'attaque. Snowfork halte ses relayers de consensus dans la journée, coupant temporairement le flot.
  • 26 octobre 2026 : l'attaquant relance l'attaque via son propre relayer. Runtime 2.5.1 est proposé via OpenGov et appliqué on-chain environ 6 heures après la reprise de l'attaque — cette version contient le fix XCM.
  • 30 octobre 2026 : Runtime 2.5.2 est appliqué via OpenGov. Il corrige la supply enregistrée de dotUSD en la reconstituant à partir des balances existantes et répare un bug de poids Snowbridge.

Le post-mortem ne donne ni hash de transaction précis, ni block number d'enactement, ni identité de l'attaquant. bkchr précise que l'entité qui a déclenché l'exploit via XCM n'est pas nécessairement celle qui a profité de l'arbitrage sur le pool.

Chiffres

  • Perte totale : ~1,381 M$ en DOT
  • Fournisseur de liquidité unique du pool DOT/dotUSD : Trésorerie Polkadot
  • Utilisateurs affectés : 0
  • dotUSD : reste adossé 1:1 à USDT via le PSM
  • Correctif XCM : Runtime 2.5.1 (appliqué ~26 oct., ~6h après la reprise)
  • Correctif comptable dotUSD + Snowbridge : Runtime 2.5.2 (appliqué 30 oct.)
  • PR du fix : #11910 (Parity Bug Bounty, juin 2026)
  • Source : forum.polkadot.network / « XCM incident review »

Ce qu'il faut retenir

  1. Un fix connu, non déployé. Le bug avait été signalé, fixé et mergé quatre mois avant l'attaque. La release stable-2606 est passée à côté. Les processus de backport et de publication côté Parity sont le prochain point à surveiller.
  2. Le danger des commentaires publics avant déploiement. Un fix mergé dans un dépôt public mais pas encore sur mainnet reste une cible ; Parity l'énonce clairement dans son post-mortem.
  3. Pas de perte utilisateur, mais une trésorerie ponctionnée. Le modèle « PSM + pool unique fourni par la trésorerie » absorbe le choc, mais confirme que la trésorerie Polkadot joue le rôle d'assureur de dernier recours sur Asset Hub. Les propositions de gouvernance à venir devront arbitrer entre augmenter cette trésorerie-liquidité et la diversifier auprès de LPs externes.

Ce que les autres médias ont manqué

Le fait que l'attaquant a redémarré l'attaque en opérant son propre relayer Snowbridge après que Snowfork a coupé les siens est, en pratique, la partie la plus importante du post-mortem : elle démontre que la décentralisation de Snowbridge, vantée comme une force, a été immédiatement retournée par l'attaquant pour reprendre l'exécution. Les reprises courtes se sont concentrées sur le montant et le bug XCM ; cette dynamique est dans le forum et pas dans la plupart des reprises.

Articles liés