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

Réentrance sur Fei / Rari Fuse

Une réentrance sur exitMarket() a drainé 80 M$ des pools Fuse de Rari Capital, fonction que l'équipe avait oublié de protéger lors d'un patch.

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

Le 30 avril 2022, l'écosystème fusionné Fei Protocol + Rari Capital a perdu environ 80 millions de dollars lorsqu'un attaquant a exploité un bug de réentrance dans les pools de prêt isolés Fuse de Rari. Le bug était une classe de vulnérabilité connue que Rari avait explicitement patchée un mois plus tôt — sauf qu'ils avaient manqué une fonction.

Ce qui s'est passé

Le Fuse de Rari était un fork de Compound v2 qui permettait aux utilisateurs de créer des pools de prêt isolés. Le 1er avril 2022, Rari a livré ce qu'il a appelé une « mise à jour de sécurité » traitant des vulnérabilités de réentrance héritées de Compound. Le patch ajoutait un verrou de réentrance global à la plupart des fonctions modifiant l'état sur les contrats de pool.

Le verrou protégeait les fonctions évidentes : borrow, mint, redeem, liquidateBorrow, etc. La seule fonction qu'il ne protégeait pas était exitMarket() — l'appel qui retire un actif de collatéral de l'éligibilité d'emprunt d'un utilisateur.

L'attaque :

  1. L'attaquant est entré dans un marché Fuse avec un dépôt.
  2. A emprunté de l'ETH au même marché.
  3. Quand l'emprunt a versé de l'ETH au contrat de l'attaquant, la fonction fallback du contrat s'est déclenchée.
  4. Le fallback a appelé exitMarket() sur le contrat de prêt — qui n'était pas protégé par le verrou de réentrance.
  5. Le exitMarket() non protégé a recalculé la collatéralisation de l'attaquant avant que l'ETH emprunté n'ait été enregistré comme dette en cours, permettant à l'attaquant de sortir du collatéral qui aurait dû être verrouillé contre l'emprunt.
  6. L'attaquant est reparti à la fois avec l'ETH emprunté et le collatéral libéré.

Répéter le pattern sur plusieurs pools Fuse a totalisé environ 80 millions de dollars.

Conséquences

  • Fei Protocol a suspendu tous les emprunts sur les pools Fuse.
  • La DAO Fei a publiquement offert à l'attaquant un bounty de 10 millions de dollars pour le retour des fonds — sans réponse.
  • La trésorerie combinée était insuffisante pour rembourser intégralement tous les pools affectés. Les retombées ont précipité une bataille de gouvernance divisive, et la fusion Fei + Rari s'est effectivement défaite au cours des mois suivants.
  • Les fonds de l'attaquant ont été blanchis via Tornado Cash.

Pourquoi c'est important

Fei/Rari est le cas d'école pour démontrer pourquoi une protection partielle contre la réentrance est pire que l'absence de protection : elle donne un faux sentiment de sécurité qui masque les chemins non protégés. Les forks de Compound v2 restent une catégorie de vulnérabilité fertile — chaque fork qui livre n'importe quelle fonction modifiant l'état non protégée finira par être exploité par ce chemin. La leçon récurrente, renforcée chez Hundred Finance et Sonne Finance, est que la couche de base Compound v2 a des footguns connus qui doivent être patchés de manière exhaustive, pas sélective.

Sources & preuves on-chain

  1. [01]coindesk.comhttps://www.coindesk.com/business/2022/04/30/defi-lender-rari-capitalfei-loses-80m-in-hack
  2. [02]certik.comhttps://www.certik.com/resources/blog/6LiXVtPQ8q5AQfqOUPnTOS-revisiting-fei-protocol-incident
  3. [03]decrypt.cohttps://decrypt.co/99103/fei-protocol-offers-10m-bounty-after-80m-rari-capital-exploit

Dépôts liés