C.R.E.A.M. Finance Post Mortem: L'exploit du 27 Oct
Cher C.R.E.A.M. communauté, partenaires et amis, nous voudrions tout d'abord remercier tout le monde pour leur soutien et tous ceux qui nous ont aidés à gérer cet ce tragique événement, en particulier nos amis de Yearn. Comme communiqué précédemment, nous avons corrigé la vulnérabilité et seuls nos markets Ethereum v1 ont été touchés. Tous les autres markets C.R.E.A.M. Finance v1 et l'Iron Bank sont en sécurité.
Notre communauté et nos utilisateurs resteront toujours notre priorité n’1. Nous travaillons avec les autorités pour retrouver le hacker et avons créé un plan pour retourner les fonds perdus. Nous divulguerons les détails de ce plan de remboursement dès que tout sera finalisé.
Qu'est-il arrivé ?
Cette attaque était un mélange d'exploits économiques et d'oracles. L'attaquant a emprunté du DAI sur MakerDAO avec un flash loan pour créer une grande quantité de jetons yUSD, tout en exploitant simultanément le calcul du prix de l’ oracle pour le prix du yUSD via la manipulation de la pool de liquidité multi-actifs (contenant du yDAI, yUSDC,yUSDT et yTUSD) sur lequel le prix de l’oracle s'est fié. Tout cela s'est déroulé en une seule transaction.
Après avoir augmenté le prix du yUSD par action, la position en yUSD de l'attaquant a été artificiellement augmentée, créant une limite d'emprunt suffisante pour retirer la grande majorité des liquidités de C.R.E.A.M. market Ethereum v1.
Comment est-ce arrivé?
Commençons par le yUSD et yCrv.
yUSD : jeton de coffre-fort Yearn. L’actif sous-jacent est le yCrv. L'utilisateur dépose du yCrv pour obtenir du yUSD
yCrv : jeton LP de la pool Y de Curve. Il est également appelé Curve.fi yDAI/yUSDC/yUSDT/yTUSD, ce qui signifie qu'il s'agit d'une pool de liquidités pour tous ces jetons y.
Il y avait deux adresses, A et B, impliquées dans l'attaque, et voici les étapes réalisées :
l’adresse A a realise un flash loan pour emprunter 500 millions de dollars en DAI et les déposer dans Curve et Yearn Vault pour recevoir du yUSD, Elle a ensuite fourni ce yUSD pour obtenir du crYUSD
L'adresse B a emprunté 2 milliards d'ETH et les a ajouté en garantie
L'adresse B a emprunté du yUSD et fourni du yUSD de manière récursive, puis a transféré tous les crYUSD à l'adresse A. La position ETH collatéralisée a permis ce transfert. L'adresse A, à ce stade, avait 1,5 milliard de dollars en crYUSD déposés en garantie et 500 millions de dollars sous forme de yUSD dans son wallet.
Adresse A convertie le yUSD en yCrv via la fonction de retrait, laissant 8M $ d’ yUSD en yCrv
yCrv.balanceOf(yUSD) ~= 8m
yUSD.totalSupply() ~= 8m
→ pricePerShare ~= 1
5. L'adresse A a transféré 8 M$ de yCrv vers le contrat yUSD, entraînant une augmentation du pricePerShare:
yCrv.balanceOf(yUSD) ~= 16m
yUSD.totalSupply() ~= 8m
→ yUSD.pricePerShare() ~= 2
6. Par conséquence, la valeur de la garantie de l'adresse A a doublé et s’est élevée a 3 milliards de dollars
7. L'adresse A a emprunté 2 milliards de dollars sous forme d’ ETH sur C.R.E.A.M. Ethereum v1 pour rembourser la dette de l'adresse B (étape 2), et également unwrap le yUSD pour rembourser le flash loan de DAI de l'étape 1
8. L'adresse A a emprunté toutes les liquidités de C.R.E.A.M. market d'Ethereum v1 avec le reste de ses garanties ~ soit environ 1 milliard de dollars sous forme de cYUSD
Les mesures prises
Nous avons suspendu toutes les interactions avec nos markets Ethereum v1 et les crTokens de C.R.E.A.M. Les markets Ethereum v1 sont verrouillés et ne peuvent pas être transférés.
Nos amis de Yearn Finance ont réussi à récupérer 9,42 millions de dollars que le hacker avait “donné” au coffre yUSD pour manipuler le pricePerShare lors de son attaque. Ces fonds vont très prochainement être retournés sur le C.R.E.A.M. Multisig.
La principale vulnérabilité réside dans le calcul du prix “wrappable token”. Nous avons arrêté toute fourniture/emprunt de “wrappable tokens”, y compris tous les jetons LP PancakeSwap .
Impact et remboursement
L'attaquant a retiré environ 130 millions de dollars de jetons des markets C.R.E.A.M. Ethereum v1. Nous travaillons d’arrache pied pour rembourser les utilisateurs impactés en commençant par un paiement partiel. Les détails de ce plan de remboursement seront annoncés dans les prochains jours.
Bug Bounty
Nous invitons l'attaquant à faire un pas en avant et à engager le dialogue pour retournerles fonds de nos utilisateurs. Cela a un impact pour les utilisateurs de tout l’écosystème DeFi . Nous honorerons un Bug Bounty de 10 % au retour des fonds.