Selon ChainCatcher, selon les renseignements de l'équipe de sécurité SlowMist, le projet DFX Finance sur la chaîne ETH a été attaqué et l'attaquant a réalisé un bénéfice d'environ 231 138 $ US. L'équipe de sécurité de SlowMist a partagé ce qui suit sous la forme d'un message texte :

1. L'attaquant appelle d'abord la fonction viewDeposit dans le contrat nommé Curve pour afficher l'état du dépôt dans le contrat, puis construit le montant approprié à prêter pour le prêt flash en fonction de l'état du dépôt restitué.

2. Continuez ensuite la fonction flash du contrat Curve pour effectuer des prêts flash. Parce que cette fonction n'a pas de protection contre le verrouillage de réentrée, l'attaquant utilise la fonction flashCallback dans le prêt flash pour rappeler la fonction de dépôt du contrat pour les dépôts.

3. La fonction de dépôt appelle en externe la fonction proportionalDeposit du contrat ProportionalLiquidity. Dans cette fonction, les fonds empruntés lors de la deuxième étape seront retransférés au contrat Curve, le dépôt sera enregistré pour le contrat d'attaque et le certificat de dépôt sera enregistré. être frappé pour le contrat d'attaque.

4. En raison de la réintégration de la fonction de dépôt pour transférer les fonds vers le contrat Curve, la vérification du solde du remboursement du prêt flash a été réussie.

5. Enfin, la fonction de retrait est appelée pour retirer de l'argent. Lors du retrait, le certificat de dépôt sera brûlé selon la comptabilité du contrat d'attaque lors de la troisième étape du dépôt, et ainsi, environ 2 283 092 402 jetons XIDR et 99 866 USDC. les jetons seront retirés avec succès pour réaliser un profit.

La principale raison de cette attaque est que la fonction de prêt flash du contrat Curve n'a pas de protection contre la réentrée, ce qui amène l'attaque à réintégrer la fonction de dépôt pour transférer des jetons afin de juger du solde du remboursement du prêt flash puisqu'il y a une comptabilité. lors du dépôt, l'attaquant peut profiter des retraits réussis. (Lien source)