Cream Finance - REKT



L'inspecteur rekt reprend du service.

18,8 millions de dollars ont été perdus, et cette fois par un protocole DeFi de la vieille école, à cause d'un tueur au visage fantôme.

Cream Finance a été audité par Trail of Bits (l'un des rares auditeurs jusqu'ici absent de notre classement) le 28 janvier 2021.

Mais même l'audit le plus solide perd de sa pertinence lorsque le protocole se voit être modifié.

Le 10 février 2021, la proposition de Cream d'ajouter le token AMP est entrée en vigueur, et c'est alors que la faille est apparue.

Source : @peckshield

418 311 571 tokens AMP et 1 308,09 ETH ont été subtilisés sur le contrat de tokens AMP de Cream Finance.

Le contrat de token AMP met en œuvre l'ERC1820 basé sur l'ERC77, qui possède le _callPreTransferHooks pour la réentrance.

La vulnérabilité de réentrance dans le contrat de token AMP a permis à l'exploiteur d'imbriquer une deuxième fonction borrow() dans le token transfer() avant que le borrow() initial n'ait été mis à jour :

Exemple de transaction d'exploit (une sur 17)

Contrats assaillants : A, B et le wallet de l'exploiteur.

Dans l'exemple ici présenté, le hacker :

1 : Utilise le contrat A pour contracter un flash loan de 500 WETH afin de l'utiliser comme collatéral sur Cream, mintant alors 24,17k crETH.

2 : Emprunte 19.48M AMP contre crETH.

3 : Exploite le bug de réentrance en insérant une autre fonction borrow() dans le transfert de tokens, obtenant 355 ETH supplémentaires avant que le borrow() initial n'ait été mis à jour.

4 : Crée le contrat B, qui est financé avec la moitié (9,74M) des AMP empruntés via A.

5 : Le contrat B liquide ensuite une partie du prêt de A, en rachetant 187 WETH et en les transférant au contrat A.

6 : Le contrat A utilise ensuite les ETH empruntés via la réentrance pour rembourser le reste du flash loan, en dégageant un excédent de 41 ETH et 9,74 AMP en guise de profit pour cette transaction.

Un processus similaire a été utilisé sur 17 transactions, permettant d'accumuler un total de près de 6 000 ETH.

Au moment de la rédaction de cet article, l'ETH volé (qui vaut actuellement un peu plus de 18 millions de dollars) se trouve toujours sur l'adresse de l'exploiteur : 0xce1f4b4f17224ec6df16eeb1e3e5321c54ff6ede

Cream n'a jamais eu très bonne réputation. C'est sans doute pour cela que beaucoup pensaient que c'était la deuxième ou troisième fois qu'ils se faisaient rekt.

Bien qu'ils aient été impliqués dans l'incident d'Alpha Finance, il s'agit en réalité de la première attaque visant directement Cream Finance.

N'importe quel protocole, même détenteur d’une solide réputation et qui a fait ses preuves, peut être affecté du fait de l'intégration d'un token vulnérable.

Cependant, comme l'a souligné @muditgupta ;

...il semble que [Cream] aurait été en sécurité s'ils avaient simplement ajouté une protection contre la réentrance à leur fonction d'emprunt/prêt.

Pourquoi faire les choses simplement ?


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.