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 № 149Bug de compilateur

Réentrance Vyper sur Curve Finance

Un verrou de réentrance défectueux dans trois versions du compilateur Vyper a exposé plusieurs stablepools Curve à une attaque de réentrance classique.

Date
Chaîne(s)
Statut
Partiellement récupéré

Le 30 juillet 2023, plusieurs pools de stablecoins de Curve Finance ont été drainés par des attaques de réentrance pour un total d'environ 73 M$. Le bug ne se trouvait pas dans la logique équivalente Solidity de Curve — il était dans le compilateur Vyper lui-même.

Ce qui s'est passé

Trois versions de Vyper (0.2.15, 0.2.16, 0.3.0) implémentaient le décorateur @nonreentrant avec un verrou défectueux qui n'empêchait pas réellement la réentrée sur certains chemins de code. Plusieurs pools Curve — notamment alETH/ETH, msETH/ETH, pETH/ETH et le pool CRV/ETH — avaient été déployés avec ces versions du compilateur et étaient donc vulnérables à l'attaque de réentrance canonique de 2016.

L'attaquant appelait remove_liquidity au milieu d'un swap, ce qui déclenchait un transfert d'ETH vers un contrat contrôlé qui ré-entrait dans le pool avant que le stockage ne soit mis à jour, permettant des retraits répétés au-delà de la part réelle de l'attaquant.

Conséquences

  • Vyper a publié des versions corrigées et un avis clair listant les versions affectées.
  • Une coalition de chercheurs MEV white-hat (« c0ffeebabe.eth ») a front-run environ 5,4 M$ de l'exploit et les a restitués à Curve.
  • Plusieurs portions de la perte ont été récupérées par négociation ; le reste demeure non recouvré.
  • Les cabinets d'audit incluent désormais systématiquement des vérifications de version du compilateur dans leurs checklists pour les déploiements Vyper.

Pourquoi c'est important

Curve est l'un des protocoles les plus audités de la DeFi. L'attaque a souligné que les audits du contrat lui-même ne peuvent garantir la sécurité si le compilateur qui produit le bytecode contient des bugs. Les builds reproductibles et la transparence des versions de compilateur sont depuis devenus une pratique standard.