Fei Rari - REKT



Fei Rari - rekt.

Le 30 avril, entre 9h00 et 9h35 UTC environ, sept des pools Fuse de Rari ont été drainées pour un total d'environ 80 millions de dollars.

En dépit de l’affirmation selon laquelle "aucune des pools d'Arbitrum n'est vulnérable", l'attaque a continué sur Arbitrum aujourd'hui, bien que les pertes (~100 ETH) aient été minimes en comparaison.

Ce n'est pas la première fois que Rari se fait rekt - espérons que les hackers ne réaliseront pas le coup du chapeau.

Source : Hacxyk, Certik

Rari utilise le code de Compound forké, lequel ne suit pas le modèle check-effect-interaction, et qui a conduit à un certain nombre d'incidents liés à des réentrances : CREAM, Hundred, Voltage/Ola.

Ici, toutefois, le modèle de réentrance se fait via CEther qui utilise call.value pour envoyer des ETH. Dans le cas où le receveur est un contrat, call.value est capable de faire un autre call qui peut être abusé.

Cette vulnérabilité a été signalée début mars et traitée par la mis à jour des contrats CToken et Comptroller. Cependant, les nouvelles protections contre la réentrance ne couvraient pas la fonction exitMarket du contrat Comptroller.

exitMarket réaffecte un actif déposé qui n'est plus considéré comme un collatéral et qui peut donc être retiré, à condition qu'il n'y ait pas de prêt sur les fonds. Étant donné que les checks sont effectués après le transfert (en raison du code Compound qui ne suit pas le schéma check-effect-interaction), la transaction n'enregistre pas le montant emprunté comme une dette avant le retrait du collatéral.

En se servant de flash loans pour emprunter des ETH, l'assaillant a pu réentrer via call.value, callant exitMarket afin de retirer le collatéral flash loané tout en gardant les ETH empruntés.

Étape par étape en utilisant comme exemple la tx 0xab4860

1. L'assaillant effectue un flashloan de 150 000 000 USDC et 50 000 WETH.

2. Il dépose 150 000 000 USDC comme collatéral dans le contrat fUSDC-127, qui est un fork vulnérable du protocole compound.

3. Avec le collatéral déposé, l'assaillant emprunte 1 977 ETH via la fonction "borrow()".

4. Cependant, la fonction "borrow()" ne suit pas le modèle check-effect-interaction. En effet, elle transfère des ETH au contrat de l'assaillant avant de mettre à jour les enregistrements d'emprunt réels de l'assaillant.

5. Par conséquent, l'enregistrement d'emprunt de l'assaillant n'étant pas mis à jour, l'assaillant effectue un call réentrant à "exitmarket()" dans la fonction de fallback, ce qui lui permet de retirer tous ses collatéraux (150M USDC).

6. L'assaillant répète les étapes 1~5 sur plusieurs autres tokens.

7. Enfin, l'assaillant rembourse son flash loan et transfère le reste à son adresse en tant que profit, puis achemine une partie des fonds vers Tornado Cash.

Pools Fuse touchées : 8, 18, 27, 127, 144, 146, 156

Adresse de l'assaillant (incluant tous les tx d'exploit) : 0x616275…

Contrats de l'assaillant : 0xE39f3C…, 0x32075b…

Tx d'attaque sur Arbitrum : 0x3212d0…

Total des fonds perdus :

6,037.8139071514 eth

20,251,603.11559831 fei

14,278,990.684390573 dai

1,948,952.1788665l usd

10,055,556.328173 usdc

132,959.9008 usdt

31,615.8714 rai

13,101,364.94 frax

2,765,891 ust

Valeur totale estimée : 79 749 026 $

Après l'attaque, l'assaillant a commencé à déposer les fonds sur Tornado Cash, mais a cessé après avoir transféré seulement 5400 ETH (~$15M).

Le hacker envisage-t-il de proposer une prime pour récupérer les 62,7 millions de dollars restants dans son portefeuille ?

Tribe DAO paraît être optimiste, ces derniers ayant envoyé le message suivant via etherscan :

Nous avons cru comprendre que vous pourriez envisager une offre de 10 millions de dollars sans poser de questions. Si vous souhaitez y donner suite, veuillez déposer les fonds restants sur le Timelock de Tribe DAO : 0xd51dbA7a94e1adEa403553A8235C302cEbF41a3c

Tous les forks de Compound devraient profiter de cette occasion pour vérifier que leur code ne présente pas de vulnérabilités similaires.

Comme 0x_b1 l'a souligné :

cet exploit a été corrigé dans le code de Compound il y a un certain temps, mais a été modifié dans sa forme précédente dans ce commit par les développeurs.

Espérons que l'utilisateur qui a demandé à Rari si les pools d'Arbitrum étaient sans danger n'a pas été trop sérieusement affect : il avait été rassuré par Rari quant à sa sécurité, avant d'être victime du même exploit aujourd'hui.

Un rapide contrôle aurait pu éviter le double dégât.

Rari se retrouve maintenant à la 10e place du classement.


partager cet article

REKT sert de plateforme publique pour des auteurs anonymes, nous déclinons toute responsabilité quant aux opinions ou contenus hébergés sur REKT.

faites un don (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

avertissement:

REKT n'est responsable en aucune manière du contenu publié sur notre site Web ou en lien avec nos Services, qu'il soit publié ou occasionné par l'Auteur Anon de notre site Web, ou par REKT. Bien que nous fournissions des règles pour la conduite et les publications de l'Auteur Anon, nous ne contrôlons pas et ne sommes pas responsables de ce que l'Auteur Anon publie, transmet ou partage sur notre site Web ou nos Services, et ne sommes pas responsables de tout contenu offensant, inapproprié, obscène, illégal ou autrement répréhensible que vous pourriez rencontrer sur notre site Web ou nos Services. REKT ne saurait être tenu responsable de la conduite, en ligne ou hors ligne, de tout utilisateur de notre site Web ou de nos services.