Retrait d'urgence de Platypus Finance
8,5 M$ drainés de Platypus sur Avalanche via un exploit de prêt flash d'emergencyWithdraw(), permettant aux attaquants de retirer la garantie pré-remboursement.
- Date
- Victime
- Platypus Finance
- Chaîne(s)
- Statut
- Partiellement récupéré
Le 16 février 2023, l'AMM stablecoin Avalanche Platypus Finance a été exploité pour environ 8,5 millions de dollars via une attaque par prêt flash sur une fonction emergencyWithdraw() mal implémentée. L'exploit a également brisé le peg du stablecoin USP de Platypus, qui est tombé de plus de 66% sous 1 $.
Ce qui s'est passé
Le contrat PlatypusTreasure de Platypus permettait aux utilisateurs de déposer des jetons LP comme garantie et d'emprunter USP, le stablecoin natif du protocole, contre eux. Le contrat détenant la garantie incluait une fonction emergencyWithdraw() destinée à permettre aux utilisateurs de récupérer leur mise pendant une urgence du protocole.
La faille fatale : emergencyWithdraw() ne vérifiait pas si l'utilisateur avait des emprunts en cours contre sa garantie avant de la libérer. L'hypothèse de solvabilité du protocole — que personne ne pouvait retirer de garantie tout en devant USP — était silencieusement brisée par cette seule fonction.
L'attaque :
- L'attaquant a pris un prêt flash de 44 M$ USDC depuis Aave.
- Dépôt de l'USDC dans le pool Platypus, recevant des jetons LP.
- Stake des jetons LP dans
MasterPlatypusV4, s'enregistrant comme déposant. - Emprunt du maximum — 95% de la valeur stakée — en USP depuis
PlatypusTreasure. - Appel à
emergencyWithdraw()pour retirer les jetons LP stakés sans rembourser l'emprunt. - Retrait de l'USDC sous-jacent de la position LP, remboursement du prêt flash, et départ avec l'USP emprunté plus profit.
L'USP emprunté a été vendu contre de vrais actifs, dépeggant l'USP au passage.
Conséquences
- Platypus a mis en pause toutes les opérations de pool immédiatement et offert à l'attaquant une prime white-hat.
- Le portefeuille de l'attaquant a été identifié en quelques heures ; les enquêteurs l'ont tracé via Tornado Cash jusqu'à un dépôt Curve et finalement jusqu'à un citoyen français qui a été arrêté en France en quelques jours. Les forces de l'ordre françaises ont confisqué environ 7,3 M$ des fonds volés.
- Platypus a publié un post-mortem détaillé et a repris ses opérations des mois plus tard sous un modèle de solvabilité redessiné.
Pourquoi c'est important
Platypus est un cas frappant pour la rapidité avec laquelle la criminalistique on-chain + l'application de la loi traditionnelle peuvent agir lorsqu'un attaquant fait des erreurs opérationnelles. C'est aussi une illustration nette que les fonctions « d'urgence » ne sont pas exemptées des invariants de solvabilité du protocole — chaque fonction qui modifie les soldes des utilisateurs, y compris celles destinées aux modes de défaillance gracieuse, doit exécuter les mêmes vérifications de santé que les fonctions du chemin normal. Euler Finance a perdu 197 M$ à cause d'une erreur structurellement identique le mois suivant.
Sources & preuves on-chain
- [01]medium.comhttps://medium.com/immunefi/hack-analysis-platypus-finance-february-2023-d11fce37d861
- [02]numencyber.comhttps://www.numencyber.com/platypus-finance-project-hit-by-8-5m-flash-loan-attack/
- [03]blockapex.iohttps://blockapex.io/platypus-finance-hack-analysis/