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

Réentrance FNFT de Revest Finance

2 M$ drainés de Revest Finance via une réentrance dans mintAddressLock/depositAdditionalToFNFT permettant de créer des NFT surévalués puis de les racheter.

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

Le 27 mars 2022, Revest Finance — un protocole pour les « NFT financiers » (FNFT) qui tokenisent des positions de jetons verrouillées dans le temps ou structurées — a perdu environ 2 millions de dollars lors d'une attaque par réentrance dans son chemin de mint FNFT. L'attaquant a créé des FNFT représentant plus de valeur qu'il n'avait déposée, puis les a rachetés contre les réserves du protocole.

Ce qui s'est passé

Les FNFT de Revest représentent des créances sur des jetons déposés (positions de vesting, jetons verrouillés, produits structurés). Le flux de mint/dépôt suivait le solde sous-jacent de chaque FNFT.

La faille fatale était une réentrance dans le chemin depositAdditionalToFNFT / mint : la fonction transférait les jetons et mettait à jour la comptabilité FNFT dans un ordre qui permettait au callback du transfert de jetons de réintroduire la logique de mint avant le règlement de la comptabilité.

L'attaque :

  1. Utilisation d'un jeton (ou chemin) qui déclenchait un callback pendant le transfert de dépôt.
  2. Réintroduction de la fonction mint/dépôt FNFT au milieu de l'opération, avant que la comptabilité du premier dépôt ne soit finalisée.
  3. Les appels réentrants créditaient le FNFT de l'attaquant avec plus de valeur sous-jacente que ce qui était effectivement déposé — la réentrance classique « solde mis à jour après appel externe ».
  4. Rachat des FNFT surévalués contre les vraies réserves de jetons du protocole.
  5. Départ avec ~2 M$, blanchis via Tornado Cash.

Conséquences

  • Revest Finance a mis le protocole en pause et publié un post-mortem.
  • Un plan de compensation a été proposé ; la récupération auprès de l'attaquant était minimale.
  • Le standing du protocole a été significativement endommagé ; les FNFT en tant que catégorie n'ont pas gagné de traction grand public par la suite.

Pourquoi c'est important

Revest Finance est une autre entrée dans la lignée réentrance de chemin de dépôt qui traverse tout le catalogue — The DAO (2016), Cream AMP (2021), Grim Finance (2021), Voltage Finance (2022), Penpie (2024). La forme récurrente : une fonction transfère des jetons et met à jour la comptabilité interne, le transfert peut déclencher un callback, et le callback réintroduit avant que la comptabilité ne se règle — violant l'invariant dont dépend la solvabilité du protocole.

La leçon structurelle est la plus ancienne de la sécurité des contrats intelligents et la plus répétée : checks-effects-interactions, plus une garde de réentrance sur chaque chemin modifiant l'état qui effectue des appels externes, sans exceptions. La perte de Revest était comparativement petite (2 M$), mais c'est une instance nette d'un protocole introduisant une primitive novatrice (NFT financiers) et recréant les conditions du bug Solidity le plus fondamental ce faisant. Chaque nouvelle couche d'abstraction est une opportunité fraîche de réintroduire la réentrance — la surface d'attaque ne rétrécit pas à mesure que l'écosystème mûrit, elle se déplace simplement vers là où se trouve le code le plus récent.

Sources & preuves on-chain

  1. [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-revest-finance-hack-march-2022
  2. [02]therecord.mediahttps://therecord.media/2-million-stolen-from-defi-protocol-revest-finance-platform-unable-to-reimburse-victims
  3. [03]rekt.newshttps://rekt.news/revest-finance-rekt

Dépôts liés