Réentrance ibETH de Rari Capital
2 600 ETH (10 M$, 60% du pool) drainés de Rari : son intégration ibETH d'Alpha Finance permettait des appels externes arbitraires activant la réentrance.
- Date
- Victime
- Rari Capital
- Chaîne(s)
- Statut
- Partiellement récupéré
Le 8 mai 2021, le protocole d'agrégation de rendement Rari Capital a perdu 2 600 ETH — environ 10 millions de dollars, représentant 60% de tous les fonds utilisateurs dans son pool Ethereum — via un exploit de réentrance permis par son intégration avec le jeton de coffre ibETH d'Alpha Finance. Cet incident était distinct du plus grand exploit Fei/Rari Fuse un an plus tard.
Ce qui s'est passé
Le pool Ethereum de Rari Capital déployait l'ETH des utilisateurs à travers des stratégies de rendement, dont l'une utilisait ibETH d'Alpha Finance (ETH porteur d'intérêts). L'intégration de Rari reposait sur deux hypothèses concernant ibETH qui se sont avérées fausses :
- Le calcul de valeur d'ibETH pouvait être manipulé en une seule transaction.
- La fonction
ibETH.work()d'Alpha Finance permettait à l'appelant d'invoquer des contrats externes arbitraires depuis l'intérieur de son exécution — ce qui signifiait qu'un appelant pouvait réintroduire les fonctions de dépôt et de retrait de Rari Capital au milieu d'une opération ibETH.
L'attaque :
- Emprunt flash d'ETH depuis dYdX.
- Appel à
ibETH.work()d'Alpha Finance d'une manière qui déclenchait un callback vers du code contrôlé par l'attaquant. - Depuis l'intérieur du callback — avant que la comptabilité de Rari ne soit réglée — réintroduction des fonctions de dépôt et de retrait du pool Ethereum de Rari, manipulant le calcul du prix des parts.
- Dépôts et retraits répétés à travers la fenêtre de réentrance, drainant le pool de 2 600 ETH.
- Remboursement du prêt flash et départ.
Conséquences
- Rari Capital a publié un post-mortem détaillé attribuant la cause racine au comportement non documenté de
ibETH.work()d'Alpha Finance. - Le fondateur de Rari Jai Bhavani a annoncé que les développeurs restitueraient 2 M de RGT (jetons de gouvernance Rari) destinés aux incitations des développeurs pour compenser les victimes — un package de remboursement évalué à plus de 26 M$ aux prix de l'époque.
- L'incident a contribué à une vague d'exploits liés la même semaine affectant Rari et Saddle Finance pour des sommes combinées à neuf chiffres.
Pourquoi c'est important
L'incident de mai 2021 de Rari Capital est un cas canonique pour le danger d'intégrer des primitives DeFi composables dont le comportement complet n'est pas documenté. Le propre code de Rari n'était pas évidemment buggé — la vulnérabilité a émergé de l'interaction entre la comptabilité de Rari et la fonction permissive work() d'Alpha Finance, qui permettait des appels externes arbitraires que les développeurs de Rari ne connaissaient pas.
Les leçons structurelles :
-
Le risque d'intégration est un risque hérité. Chaque protocole externe qu'un contrat appelle devient partie de sa surface d'attaque. L'équipe intégratrice doit comprendre le comportement complet — y compris les capacités non documentées ou « inhabituelles » — de chaque primitive avec laquelle elle compose.
-
Les gardes de réentrance doivent protéger chaque chemin modifiant l'état, pas seulement les évidents. Les dépôts/retraits de Rari étaient réentrants spécifiquement parce que la réentrance pouvait venir d'une intégration externe que l'équipe n'avait pas anticipée comme vecteur de réentrée.
-
Le même protocole peut être exploité deux fois par différents mécanismes. Rari Capital a été exploité ici en mai 2021 et à nouveau — bien plus grand — dans l'incident Fei/Rari Fuse en avril 2022. Le schéma récurrent : un protocole survit au premier incident, mais les causes systémiques (hypothèses de composabilité, discipline de réentrance) ne sont pas pleinement abordées, et un deuxième incident suit.
La décision des développeurs de Rari de restituer leurs propres jetons d'incitation aux victimes était une forme inhabituellement directe de responsabilité pour l'ère 2021, et a été citée positivement même alors que la trajectoire à plus long terme du protocole se détériorait.
Sources & preuves on-chain
- [01]halborn.comhttps://www.halborn.com/blog/post/explained-the-rari-capital-hack-may-2021
- [02]beincrypto.comhttps://beincrypto.com/rari-capital-10m-defi-hack-post-mortem/
- [03]coinjournal.nethttps://coinjournal.net/news/rari-capital-hit-with-10m-exploit-from-its-ethereum-pool/