Récemment, le protocole de prêt DeFi Akropolis a été victime d'une attaque informatique. Ana Andrianova, fondatrice et PDG d'Akropolis, a indiqué que l'attaquant avait exploité un prêt flash sur la plateforme dérivée dYdX pour réaliser une attaque de réentrance, causant une perte de 2 millions de dollars.
Après avoir reçu une alerte émise par sa plateforme autonome de surveillance de la sécurité blockchain (Beosin-Eagle Eye), l'équipe de ChainSecurity Chengdu a immédiatement enquêté sur cet incident. Les résultats ont révélé les éléments suivants :
1. Akropolis a effectivement été attaqué
2. L'adresse du contrat malveillant est
0xe2307837524db8961c4541f943598654240bd62f
3. La méthode utilisée est une attaque par réentrance
4. Le pirate a gagné environ 2 millions de dollars
Analyse de la méthode d’attaque
L’analyse des transactions sur la chaîne montre que l’attaquant a procédé à deux opérations de minting, comme illustré ci-dessous :


Toutefois, selon l'historique des appels de transaction sur oko.palkeo.com, l'attaquant n'a invoqué la fonction deposit qu'une seule fois, comme montré ci-dessous :

En suivant les appels de fonctions, l’équipe de ChainSecurity Chengdu a découvert que lors de l’appel à la fonction deposit du contrat, l’attaquant avait défini le paramètre token comme étant l’adresse de son propre contrat malveillant. Ainsi, lors de l’exécution de transferFrom, c’est l’adresse du contrat spécifiée par l’utilisateur qui est appelée, comme illustré ci-dessous :

L’analyse du code montre que lors de l’appel à la fonction deposit, l’utilisateur peut spécifier le paramètre token, comme illustré ci-dessous :

Or, dans l'appel à la fonction depositToProtocol, il existe une méthode qui invoque la fonction safeTransferFrom de l'adresse tkn, ce qui permet à l'attaquant de construire une fonction « safeTransferFrom » afin de mener une attaque par réentrance.

Résumé de l'incident
Akropolis, fournisseur de services de prêt et de stockage DeFi, utilise le protocole Curve pour sa partie stockage, qui avait déjà été exploitée lors d’une attaque précédente plus tôt dans la journée. L’attaquant a retiré 50 000 dollars en DAI des pools yCurve et sUSD du projet, et avant l’épuisement complet de ces pools, a volé au total 2 millions de dollars en DAI.
Dans cet incident, le pirate a combiné une attaque par réentrance avec un prêt flash depuis dYdX pour siphonner le pool de liquidités. Le pool d’actifs constitue un point critique de défense dans un tel protocole. Pour les équipes projet, la prévention et la protection de la sécurité des pools de liquidités doivent être placées en priorité absolue. En particulier, face aux méthodes d’attaque toujours changeantes des pirates, des vérifications complètes régulières et des mises à jour du code sont indispensables.
Enfin, ChainSecurity Chengdu lance un appel urgent : pour les équipes projet, ne jamais négliger les audits de sécurité et les contrôles réguliers ; pour les investisseurs, rester constamment vigilant quant à la sécurité et bien évaluer les risques liés à leurs investissements.















