Właśnie poświęciłem trochę czasu na sprawdzenie ataku yeth na $9M @yearnfi. Podczas gdy większość ludzi wskazuje, że haker wyemitował ogromną ilość yeth za kilka wei tokenów (P1), uważam, że to nie jest jedyny powód. Dlaczego? Haker w rzeczywistości NIE wycofał wyemitowanego yeth, tylko sprzedał część z niego na puli yETH-ETH za 1000 ETH (~3M), znacznie mniej niż rzeczywisty zysk hakera (P2). Moim zdaniem są 2 przyczyny (lub wektory ataku): (Zastrzeżenie: To tylko analiza oparta na mojej wstępnej analizie. Mogę i czasami popełniam błędy!) (1) błąd zaokrąglenia doprowadził do wyemitowania niemal nieskończonej ilości yETH. To jest właściwie podobne do hacku balancera. Współczynnik skalowania (w yETH nazywany stawką) to liczba około 1e18+x%, a mnożenie i dzielenie powoduje, że wirtualny bilans łamie inwarianty. Kod faktycznie używa zaokrąglonego wirtualnego bilansu do obliczenia nowej całkowitej podaży yETH i wyemitowanej (nowa_podaż - stara_podaż) dla napastnika (P3). (2) funkcja update_rate doprowadziła do ogromnej straty w skarbcu yETH. W rzeczywistości napastnik wywołał "update_rates" 2 razy na wrapped OETH, a yETH dosłownie stracił ~1000 ETH za każdym razem (gdzie yETH został spalony z skarbca st-yeth, P4). -> 6M straty. Plus sprzedany yETH razem zyskuje ~9M. To mogło być spowodowane błędnym obliczeniem inwariantu, a nie tylko błędem zaokrąglenia. ---- Zaktualizuję w komentarzu do tego tweeta wszelkie nowe zrozumienie dotyczące tego ataku.
@yearnfi Aktualizacja (1), zostałem zbanowany za próbę zaoferowania mojej pomocy na discordzie @yearnfi 🤣
@yearnfi Aktualizacja, powyższy link nie jest oficjalnym pm. Ale myślę, że już ujawnia przyczynę i wskazuje na podatny kod.
28,61K