Je viens de prendre un peu de temps pour examiner l'attaque de $9M sur @yearnfi yeth. Alors que la plupart des gens soulignent que le hacker a minté une énorme quantité de yeth avec quelques wei de tokens (P1), je pense que ce n'est pas la seule cause profonde. La raison ? Le hacker n'a en fait PAS retiré le yeth minté, il a seulement vendu une partie sur le pool yETH-ETH pour 1000 ETH (~3M), bien moins que le profit réel du hacker (P2). Il y a 2 causes profondes (ou vecteurs d'attaque) à mon avis : (Avis : C'est juste une analyse basée sur mon analyse préliminaire. Je peux et fais parfois des erreurs !) (1) une erreur d'arrondi a conduit à la mint de yETH presque infini. C'est en fait similaire au hack de balancer. Le facteur d'échelle (appelé taux dans yETH) est un nombre autour de 1e18+x%, et une multiplication-division fait que le solde virtuel brise les invariants. Le code utilise en fait le solde virtuel arrondi pour calculer la nouvelle offre totale de yETH et minté (new_supply - old_supply) au hacker (P3). (2) la fonction update_rate a conduit à une énorme perte du vault yETH. En fait, l'attaquant a appelé "update_rates" 2 fois sur OETH enveloppé et yETH a littéralement perdu ~1000 ETH à chaque fois (où yETH a été brûlé du vault st-yeth, P4). -> perte de 6M. De plus, le profit total des yETH vendus s'élève à ~9M. Cela pourrait avoir été causé par un mauvais calcul de l'invariant plutôt que par une simple erreur d'arrondi. ---- Je mettrai à jour dans le commentaire de ce tweet pour toute nouvelle compréhension de ma part concernant cette attaque.
@yearnfi Mise à jour (1), j'ai été banni pour avoir essayé d'offrir mon aide dans le discord de @yearnfi 🤣
@yearnfi Mise à jour, le lien ci-dessus n'est pas un pm officiel. Mais je pense qu'il révèle déjà la cause profonde et souligne le code vulnérable.
28,61K