Ik heb net wat tijd besteed aan het bekijken van de $9M @yearnfi yeth-aanval. Terwijl de meeste mensen erop wijzen dat de hacker een enorme hoeveelheid yeth heeft gemint met een paar wei aan tokens (P1), denk ik dat dit niet de enige oorzaak is. De reden? De hacker heeft de geminte yeth eigenlijk NIET opgenomen, maar slechts een deel ervan verkocht op de yETH-ETH pool voor 1000 ETH (~3M), veel minder dan de werkelijke winst van de hacker (P2). Er zijn naar mijn mening 2 oorzaken (of aanvalsvectoren): (Disclaimer: Het is slechts een analyse op basis van mijn voorlopige analyse. Ik kan en maak soms fouten!) (1) een afrondingsfout leidde tot het minten van bijna oneindige yETH. Dit is eigenlijk vergelijkbaar met de hack van de balancer. De schaalfactor (in yETH de rate genoemd) is een getal rond 1e18+x%, en een vermenigvuldiging-delingsoperatie maakt dat de virtuele balans de invarianties doorbreekt. De code gebruikt eigenlijk de afgeronde virtuele balans om de nieuwe totale voorraad van yETH te berekenen en mint (nieuwe_voorraad - oude_voorraad) naar de aanvaller (P3). (2) de update_rate functie leidde tot enorme verliezen van de yETH vault. Eigenlijk heeft de aanvaller "update_rates" 2 keer aangeroepen op gewrapte OETH en yETH, wat letterlijk ongeveer 1000 ETH per keer heeft verloren (waarbij yETH werd verbrand vanuit de st-yeth vault, P4). -> 6M verlies. Plus de verkochte yETH samen levert een winst van ongeveer ~9M op. Dit kan zijn veroorzaakt door een verkeerde berekening van de invariant in plaats van een simpele afrondingsfout. ---- Ik zal in de reacties op deze tweet updates geven over mijn nieuwe inzichten over deze aanval.
@yearnfi Update (1), ik ben verbannen omdat ik probeerde mijn hulp aan te bieden in de discord van @yearnfi 🤣
@yearnfi Update, de bovenstaande link is geen officiële pm. Maar het onthult al de onderliggende oorzaak denk ik en wijst op de kwetsbare code.
28,62K