Aller au contenu
Fondé MMXXVIVol. VI · № 273RSS
Blockchain Breaches

Archive des incidents de sécurité dans les cryptomonnaies — piratages, exploits, défaillances de ponts et rug pulls, documentés avec des preuves on-chain.

Dossier № 098Attaque de gouvernance

Bug d'initializer de la gouvernance Audius

Un attaquant a exploité une faille d'initializer d'Audius pour s'auto-déléguer 10 000 milliards d'AUDIO et faire passer une proposition drainant 6 M$ du trésor.

Date
Victime
Audius
Chaîne(s)
Statut
Fonds dérobés

Le 23 juillet 2022, la plateforme de streaming musical décentralisée Audius a perdu 18,56 millions de tokens AUDIO — d'une valeur d'environ 6,05 millions de dollars à l'époque — lorsqu'un attaquant a exploité une vulnérabilité dans le code d'initialisation des contrats de gouvernance du protocole. Le bug avait été présent à travers deux audits distincts par OpenZeppelin.

Ce qui s'est passé

Audius utilisait des contrats de gouvernance upgradables s'appuyant sur des fonctions d'initializer pour définir leur état critique au moment du déploiement. Les fonctions d'initialisation étaient censées être à usage unique — appelables exactement une fois, par le déployeur du contrat, immédiatement après le déploiement.

Le bug : l'initializer d'un des contrats de gouvernance était appelable de manière répétée sous certaines conditions. L'attaquant l'a réinvoqué pour prendre possession de l'état du contrat, y compris du stockage de délégation et de staking qui déterminait qui détenait le pouvoir de vote en gouvernance.

Avec le contrôle du stockage, l'attaquant a :

  1. Redéfini son adresse comme détenant 10 000 milliards d'AUDIO en pouvoir de vote délégué.
  2. Soumis une proposition de gouvernance malveillante qui retirait l'entièreté du trésor communautaire vers un wallet contrôlé par l'attaquant.
  3. Voté oui sur sa propre proposition avec le pouvoir de vote fabriqué de 10 000 milliards.
  4. La première tentative a échoué pour une raison distincte ; la seconde tentative a réussi.
  5. Exécuté la proposition, transférant 18 564 497 AUDIO hors du trésor, puis les a échangés sur Uniswap contre 704 ETH (~1,09 M$). Les tokens restants ont perdu la majeure partie de leur valeur alors que le marché intégrait la dilution.

Conséquences

  • Audius a détecté l'exploit environ 30 minutes après la première tentative ratée et déployé un correctif en une heure.
  • L'équipe a publié un post-mortem et indemnisé les détenteurs de tokens affectés via une combinaison de restructuration de trésorerie et d'ajustements de l'offre de tokens.
  • Les contrats avaient été audités par OpenZeppelin deux fois ; aucun audit n'avait capturé le bug d'initializer réinvocable.

Pourquoi c'est important

Audius est le cas canonique de pourquoi les fonctions d'initializer sont des primitives dangereuses. Le schéma se répète à travers l'écosystème des proxy upgradables :

  • Parity Multisig (2017) — un initWallet réinvocable a permis à la fois le vol original de 30 M$ et le gel ultérieur de 150 M$.
  • Audius (2022) — même cause racine, architecture de contrat différente, perte de 6 M$.
  • Le schéma continue d'apparaître parce que l'implémentation sûre (modificateur initializer, vérifications explicites de propriété, déploiement + initialisation atomiques) est à une seule annotation près de l'implémentation non sûre.

La leçon Audius plus profonde est plus inconfortable : deux audits par une firme de premier rang n'ont pas capturé ce bug. Les audits offrent une protection significative mais non absolue ; la vérification formelle des schémas d'initialisation et le fuzzing d'invariants économiques des contrats de gouvernance sont les couches défensives supplémentaires devenues plus communes depuis.

Sources & preuves on-chain

  1. [01]decrypt.cohttps://decrypt.co/105913/how-audius-was-hacked-6m-ethereum-tokens
  2. [02]cryptoslate.comhttps://cryptoslate.com/attackers-stole-6-million-from-audius-by-exploiting-a-bug-in-the-contract/
  3. [03]bleepingcomputer.comhttps://www.bleepingcomputer.com/news/security/hackers-steal-6-million-from-blockchain-music-platform-audius/

Dépôts liés