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