10 czerwca 2024 roku zaatakowano UwU Lend, a projekt stracił około 19,3 mln dolarów.
SharkTeam natychmiast przeprowadził analizę techniczną tego incydentu i podsumował środki ostrożności w zakresie bezpieczeństwa. Mamy nadzieję, że kolejne projekty potraktują to jako ostrzeżenie i wspólnie zbudują linię obrony bezpieczeństwa dla branży blockchain.
1. Analiza transakcji ataku
Atakujący: 0x841dDf093f5188989fA1524e7B893de64B421f47
Osoba atakująca przeprowadziła łącznie 3 transakcje ataków:
Transakcja ataku 1:
0x242a0fb4fde9de0dc2fd42e8db743cbc197ffa2bf6a036ba0bba303df296408b
Transakcja ataku 2:
0xb3f067618ce54bc26a960b660cfc28f9ea0315e2e9a1a855ede1508eb4017376
Transakcja ataku 3:
0xca1bbf3b320662c89232006f1ec6624b56242850f07e0f1dadbe4f69ba0d6ac3
Weźmy transakcję ataku 1 jako przykład do analizy:
Umowa ataku: 0x21c58d8f816578b1193aef4683e8c64405a4312e
Kontrakt docelowy: Kontrakt skarbowy UwU Lend, w tym:
USAUSDE:0xf1293141fc6ab23b2a0143acc196e3429e0b67a6
uDAI: 0xb95bd0793bcc5524af358ffaae3e38c3903c7626
uUSDT: 0x24959f75d7bda1884f1ec9861f644821ce233c7d
Proces ataku wygląda następująco:
1. Pożycz flash wiele tokenów z różnych platform, w tym WETH, WBTC, sUSDe, USDe, DAI, FRAX, USDC, GHO
Adres odbioru tokena to 0x4fea76b66db8b548842349dc01c85278da3925da
Tokeny i ilości pożyczek flash przedstawiają się następująco:
Pożyczka Flash 159 053,16 WETH i 14 800 WBTC od Aave V3
Pożyczka błyskawiczna 40 000 WETH od Aave V2
Pożyczka błyskawiczna 91 075,70 WETH i 4 979,79 WBTC od Spark
Pożyczka błyskawiczna od Morpho 301, 738, 880,01 sUSDe, 236, 934, 023,17 USDe i 100, 786, 052,15 DAI
Pożyczka błyskawiczna 60 000 000 FRAX i 15 000 000 USDC od Uniswap V3: FRAX-USDC
Pożyczka błyskawiczna 4 627 557,47 GHO i 38 413,34 WETH od Balancer
Pożyczka błyskawiczna 500 000 000 DAI od Maker
W sumie około 328 542,2 WETH, 19779,79 WBTC, 600786052,15 DAI, 301 738 880,01 sUSDe, 236 934 023,17 USDe, 4 627 557,47 GHO, 60 000 000 FRAX, 15, 000 , 000 USDC
2. Przenieś Token pożyczki flash do umowy 0xf19d66e82ffe8e203b30df9e81359f8a201517ad (w skrócie 0x f 19 d) aby przygotować się do ataku.
3. Kontroluj cenę sUSDe (obniż cenę) poprzez wymianę tokenów
(1)USDecrvUSD.exchange
Zamień 8 676 504,84 USDe na 8 730 453,49 crvUSD. Ilość USDe w USDecrvUSD rośnie, a cena maleje. Ilość crvUSD maleje, a cena rośnie.
(2)USDeDAI.exchange
Zamień 46,452,158,05 USDe na 14,389,460,59 DAI. Ilość USDe w USDeDAI rośnie, cena maleje, ilość DAI maleje, a cena rośnie.
(3)FRAXUSDe.exchange
Zamień 14 477 791,69 USDe na 46 309 490,86 FRAX, ilość USDe w USDeDAI rośnie, cena maleje, ilość FRAX maleje, a cena rośnie
(4)GHOUSDe.exchange
Przelicz 4 925 427,20 USDe na 4 825 479,07 GHO, ilość USDe w USDeDAI rośnie, cena maleje, ilość GHO maleje, a cena rośnie
(5)USDeUSDC. Exchange
Zamień 14 886 912,83 USDe na 14 711 447,94 USDC, ilość USDe w USDeDAI rośnie, cena maleje, ilość USDC maleje, a cena rośnie
Po powyższej wymianie cena USDe w 5 pulach funduszy spadła. Ostatecznie cena sUSDe gwałtownie spadła.
4. Na bieżąco twórz pozycje pożyczkowe, czyli deponuj inne aktywa (WETH, WBTC i DAI) w umowie LendingPool, a następnie pożyczaj sUSDe. Ponieważ cena sUSDe gwałtownie spadła, ilość pożyczonych kredytów była znacznie większa niż przed spadkiem ceny.
5. Podobnie jak w kroku 3, operacja odwrotna spowoduje wzrost ceny sUSDe.
W miarę zaciągania sUSDe wartość pożyczonej pozycji w kroku 4 przekracza wartość zabezpieczenia i osiąga standard dla likwidacji.
6. Likwiduj pozycje pożyczkowe partiami i zdobywaj nagrody likwidacyjne uWETH
7. Spłacić pożyczkę i wycofać aktywa bazowe WETH, WBTC, DAI i sUSDe.
8. Ponownie wpłać sUSDe do LendingPool. W tym momencie cena sUSDe wzrasta, dzięki czemu można wypożyczyć więcej innych aktywów, w tym DAI i USDT.
9. Wymieniaj tokeny i spłacaj pożyczkę flash. Końcowy zysk 1 946,89 ETH
2. Analiza podatności
Z powyższej analizy wynika, że w całym procesie ataku występuje duża liczba pożyczek błyskawicznych i wielokrotne manipulacje ceną sUSDe. Jeżeli sUSDe zostanie obciążone hipoteką, będzie to miało wpływ na kwotę pożyczonych aktywów; będzie to miało wpływ na stopę oprocentowania kredytu, a tym samym na współczynnik likwidacji (czynniki zdrowotne).
Atakujący wykorzystują to, aby obniżyć cenę sUSDe poprzez pożyczki błyskawiczne, zastawić hipotekę na innych aktywach, pożyczyć dużą ilość sUSDe, następnie podnieść cenę sUSDe, zlikwidować aktywa hipoteczne w celu osiągnięcia zysku i zastawić pozostałe sUSDe w celu pożyczenia wypłacić inne aktywa, w końcu spłacić pożyczkę flash i atak zostanie zakończony.
Z kroku 3 powyżej ustaliliśmy, że osoba atakująca manipulowała ceną sUSDe, kontrolując cenę USDe w pięciu pulach handlowych Curve Finance: USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe i USDe/SDC. Funkcja odczytu ceny wygląda następująco:
Wśród nich cena sUSDe jest obliczana z 11 cen, z czego pierwszych 10 jest odczytywanych z CurveFinance, a ostatnią dostarcza Uniswap V3.
Cena odczytana z CurveFinance jest dostarczana przez 5 pul handlowych USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe i USD/SDC, które są również 5 pulami handlowymi manipulowanymi przez atakującego w transakcji ataku.
Zwrócona cena jest obliczana na podstawie ceny odczytanej przez uwuOracle, cenę_oracle(0) i get_p(0) w umowie puli handlowej CurveFinance.
(1) cena jest ceną podaną przez Chainlink i nie można nią manipulować;
(2) Parametry puli handlowej
Osoba atakująca manipuluje wartością zwracaną przez get_p(0), manipulując liczbą tokenów w puli handlowej, manipulując w ten sposób ceną.
3. Sugestie dotyczące bezpieczeństwa
W odpowiedzi na ten atak podczas procesu programowania należy przestrzegać następujących środków ostrożności:
(1) Aby zaradzić podatności na manipulację cenami, można zastosować wyrocznię cenową poza łańcuchem, aby uniknąć manipulacji cenami.
(2) Zanim projekt zostanie udostępniony online, zewnętrzna profesjonalna firma audytorska musi przeprowadzić audyt inteligentnej umowy.
O nas
Wizją SharkTeam jest zabezpieczenie świata Web3. Zespół składa się z doświadczonych specjalistów ds. bezpieczeństwa i starszych badaczy z całego świata, którzy są biegli w podstawowej teorii blockchain i inteligentnych kontraktów. Świadczy usługi obejmujące identyfikację i blokowanie ryzyka, inteligentny audyt kontraktów, KYT/AML, analizę w łańcuchu itp. oraz stworzył inteligentną platformę identyfikacji i blokowania ryzyka w łańcuchu ChainAegis, która może skutecznie zwalczać zaawansowane trwałe zagrożenia (Advanced Persistent Threat (Advanced Persistent Threat) Trwałe zagrożenie) w świecie Web3, APT). Nawiązała długoterminowe relacje kooperacyjne z kluczowymi graczami w różnych obszarach ekosystemu Web3, takimi jak Polkadot, Moonbeam, wielokąt, Sui, OKX, imToken, Collab.Land, TinTinLand itp.
Oficjalna strona internetowa: https://www.sharkteam.org
Twitter: https://twitter.com/sharkteamorg
Telegram: https://t.me/sharkteamorg
Discord: https://discord.gg/jGH9xXCjDZ