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 № 123Réentrance

Réentrance en lecture seule Curve sur dForce

Une réentrance en lecture seule Curve sur remove_liquidity a drainé 3,65 M$ du pool wstETH/ETH de dForce. Un white hat a restitué tous les fonds.

Date
Statut
Récupéré

Le 10 février 2023, le protocole de prêt dForce Network a perdu environ 3,65 millions de dollars via une attaque de réentrance en lecture seule Curve sur son intégration de pool wstETH/ETH sur Arbitrum et Optimism. L'attaquant — qui s'est ensuite identifié comme white-hat — a restitué la totalité des 3,65 M$ en échange d'un bounty.

Ce qui s'est passé

dForce utilisait les pools Curve Finance wstETH/ETH comme source d'information de prix pour ses marchés de prêt sur Arbitrum et Optimism. L'intégration lisait le virtual price rapporté par Curve pour les tokens LP du pool afin de valoriser le collatéral utilisateur et déclencher les liquidations.

La vulnérabilité résidait dans le pattern bien documenté de réentrance en lecture seule Curve. La fonction remove_liquidity de Curve effectue une séquence de mutations d'état et d'appels externes — et entre les mutations, le virtual price rapporté par le pool est temporairement incorrect. Un contrat qui lit le virtual price pendant cet intervalle obtient une lecture manipulée sans qu'aucune des protections de réentrance explicites ne se déclenche.

L'attaque :

  1. Emprunt flash de stETH (et d'actifs liés) pour financer l'opération.
  2. Dépôt puis retrait partiel de liquidité dans le pool Curve wstETH/ETH concerné.
  3. Pendant l'exécution de remove_liquidity — précisément, dans l'intervalle entre deux mutations d'état — réentrée dans les contrats de prêt dForce.
  4. Le code de lecture de prix de dForce a consommé le virtual price mid-mutation de Curve, temporairement déprimé.
  5. dForce croyant que le prix LP wstETH/ETH s'était effondré, les positions d'autres utilisateurs apparaissaient sous-collatéralisées et l'attaquant a déclenché des liquidations à des taux favorables.
  6. Remboursement du prêt flash et départ avec environ 3,65 M$ de profit sur les deux chaînes.

Conséquences

  • dForce a suspendu les marchés affectés en quelques heures.
  • L'attaquant s'est publiquement identifié comme white-hat via des messages on-chain et est entré en négociation avec l'équipe dForce.
  • Après accord sur un paiement de bounty et l'abandon de toute enquête en cours, les 3,65 M$ ont tous été restitués au multi-sig de dForce.
  • dForce a repensé l'intégration Curve avec des lectures de prix correctement conscientes de la réentrance en lecture seule.

Pourquoi c'est important

L'incident dForce fait partie de la lignée de la réentrance en lecture seule Curve — un pattern de vulnérabilité qui a produit des pertes DeFi récurrentes depuis que les sémantiques de remove_liquidity de Curve ont été largement comprises :

  • Lendf.Me (avr. 2020) — variante originale de réentrance Curve.
  • dForce (févr. 2023) — réentrance en lecture seule sur pool wstETH/ETH.
  • Conic Finance (juil. 2023) — vérification _isETH() manquante ; même classe de bug sous-jacente.
  • Plusieurs incidents plus petits dans des protocoles intégrant des oracles Curve.

La leçon structurelle est la même répétée pendant des années : tout protocole lisant l'état interne d'un pool Curve doit gérer explicitement la fenêtre de réentrance en lecture seule. Curve a publié des conseils sur la façon de s'intégrer en toute sécurité ; les protocoles qui ne les suivent pas — généralement parce que le code concerné a été écrit avant l'existence des conseils et n'a jamais été mis à jour — restent des candidats à l'exploit.

Le retour white-hat est également instructif. L'incident dForce fait partie d'un nombre croissant de cas où des attaquants s'identifient et négocient ouvertement — probablement parce que :

  1. La forensique on-chain s'est suffisamment améliorée pour qu'essayer de blanchir un exploit clairement identifié soit risqué.
  2. Les programmes de bounty des grands protocoles offrent des paiements significatifs sans la charge légale et opérationnelle du blanchiment.
  3. L'étiquette white-hat offre une protection juridique que l'alternative n'offre pas.

Pour les équipes de protocoles, négocier de bonne foi avec un exploiteur est apparu comme le chemin de récupération le plus élevé pour les incidents de taille modérée. Le pattern dForce 3,65 M$ / récupération à 100 % / bounty négocié est devenu un petit genre à part entière dans le paysage des incidents DeFi post-2023.

Sources & preuves on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-dforce-hack-february-2023
  2. [02]theblock.cohttps://www.theblock.co/post/210518/dforce-protocol-drained-of-3-6-million-in-reentrancy-attack
  3. [03]certik.comhttps://www.certik.com/resources/blog/curve-conundrum-the-dforce-attack-via-a-read-only-reentrancy-vector-exploit

Dépôts liés