Zobaczyłem, że szef onekey broni swoich praw w Resupply, stracił kilka milionów aktywów, i zauważyłem, że Defi jest naprawdę zbyt kruchy. Po przejrzeniu sytuacji, wydaje się, że nikt nie wyjaśnił dokładnie, jak haker zaatakował, więc sam zrobiłem trochę badań i dzielę się tym z wami:
Głównym bohaterem historii jest ResupplyPair, użytkownicy mogą pożyczać aktywa poprzez stakowanie, a modyfikator isSolvent w kontrakcie odpowiada za sprawdzenie, czy użytkownik ma prawo do pożyczki żądanych aktywów, a konkretna logika kodu jest następująca:
Można zobaczyć, że w 282 linii obliczana jest ltv, jeśli mamy sposób, aby ustawić _exchangeRate na 0, to sprawdzenie będzie zawsze prawdziwe? Kontynuując przeglądanie kodu:
Można zauważyć, że ta wartość pochodzi z wywołania oracle getPrices, i jest w mianowniku, innymi słowy, musimy sprawić, aby cena zabezpieczenia była ekstremalnie wysoka.
Przeglądając kod oracle, można zauważyć, że getPrices to tylko jedna warstwa przekazywania, w rzeczywistości wywołuje interfejs convertToAssets tego stakowanego aktywa (czyli skarbca). Kontynuując przeglądanie kodu:
Można zobaczyć, że ten wynik składa się z bardzo skomplikowanych obliczeń matematycznych, tutaj haker poprzez powiększenie licznika, a dalej total_assets, przeprowadził atak, sprawdzając implementację funkcji _total_assets:
Ta wartość jest związana z borrowed_token, który posiada kontrakt kontrolera tego skarbca, czyli crvUSD.
Analizując to, staje się jasne, że przy tworzeniu ResupplyPair użyto pustego skarbca, haker przesłał pewną ilość borrowed_token do kontraktu kontrolera skarbca, co ostatecznie spowodowało, że _exchangeRate spadł do zera, co z kolei sprawiło, że wartość jego stakowanych aktywów wzrosła nieskończoność, pożyczając aż 10 milionów reUSD przy minimalnych kosztach.
Transakcja ataku:
Adres kontraktu ResupplyPair:
Adres kontraktu kontrolera skarbca:
Adres kontraktu skarbca:
Adres kontraktu oracle:
Pokaż oryginał



68,35 tys.
307
Treści na tej stronie są dostarczane przez strony trzecie. O ile nie zaznaczono inaczej, OKX nie jest autorem cytowanych artykułów i nie rości sobie żadnych praw autorskich do tych materiałów. Treść jest dostarczana wyłącznie w celach informacyjnych i nie reprezentuje poglądów OKX. Nie mają one na celu jakiejkolwiek rekomendacji i nie powinny być traktowane jako porada inwestycyjna lub zachęta do zakupu lub sprzedaży aktywów cyfrowych. Treści, w zakresie w jakim jest wykorzystywana generatywna sztuczna inteligencja do dostarczania podsumowań lub innych informacji, mogą być niedokładne lub niespójne. Przeczytaj podlinkowany artykuł, aby uzyskać więcej szczegółów i informacji. OKX nie ponosi odpowiedzialności za treści hostowane na stronach osób trzecich. Posiadanie aktywów cyfrowych, w tym stablecoinów i NFT, wiąże się z wysokim stopniem ryzyka i może podlegać znacznym wahaniom. Musisz dokładnie rozważyć, czy handel lub posiadanie aktywów cyfrowych jest dla Ciebie odpowiednie w świetle Twojej sytuacji finansowej.