Czym jest exploit flash loan i jak działa ten atak na protokoły DeFi?

Czym jest exploit flash loan i jak działa ten atak na protokoły DeFi?

Czym jest exploit flash loan?

Exploit flash loan to atak, w którym ktoś tymczasowo pożycza dużą ilość kryptowaluty, aby wykorzystać błąd w protokole DeFi. Flash loan to pożyczka, którą trzeba spłacić w ramach jednej transakcji blockchain.

Taki flash loan jest niezabezpieczony. Nie trzeba więc najpierw wpłacać własnego zabezpieczenia, ale obowiązuje ważny warunek: pożyczka, wraz z opłatą, musi zostać zwrócona przed końcem tej samej transakcji. Jeśli się to nie uda, blockchain cofa całą transakcję, jakby nigdy nie miała miejsca.

Nazywa się to wykonaniem atomowym. Można to traktować jak jeden pakiet: wszystkie elementy kończą się sukcesem albo nic się nie dzieje. Flash loan są też normalnie wykorzystywane, na przykład do arbitrażu, likwidacji i zmiany zabezpieczenia.

W przypadku exploita atakujący wykorzystuje tę tymczasową płynność, aby uderzyć w słaby punkt gdzie indziej. Często chodzi o protokół, który przy ważnej decyzji opiera się na cenie spot z jednej DEX. Taka cena może zostać chwilowo mocno przesunięta przez bardzo dużą swapę.

Załóżmy, że protokół lendingowy uzna tę chwilowo zawyżoną cenę za rzeczywistą cenę rynkową. Wtedy atakujący może sprawić, że zabezpieczenie zostanie wycenione zbyt wysoko, i pożyczyć pod nie więcej kryptowaluty, niż byłoby to bezpieczne. Inne ataki nie dotyczą cen, lecz na przykład tymczasowej siły głosu w on-chain governance albo błędu w logice biznesowej smart contracts.


Najważniejsze informacje

  • Flash loan to niezabezpieczona pożyczka, którą trzeba spłacić w ramach tej samej transakcji.
  • Exploit flash loan zwykle wykorzystuje błąd w innym protokole DeFi, a nie sam flash loan.
  • Częstym atakiem jest tymczasowa manipulacja ceną spot w puli DEX.
  • Dzięki wykonaniu atomowemu cały atak kończy się sukcesem albo wszystko zostaje cofnięte.
  • Flash liquidity może być też używana do nadużyć w governance lub do wykorzystania błędów w regułach protokołu.

Jak działa exploit flash loan?

Exploit flash loan zwykle polega na tym, że atakujący tymczasowo używa dużego kapitału, aby zmienić cenę lub status protokołu, po czym docelowy protokół podejmuje błędną decyzję. Wszystko dzieje się w ramach jednej atomowej transakcji.

Jak to wygląda w praktyce? Najpierw atakujący zleca własnemu smart contractowi zaciągnięcie flash loan. Ten kontrakt może następnie od razu wykonać kilka działań, takich jak swap tokenów, wpłata zabezpieczenia i pożyczenie kryptowaluty

W przypadku manipulacji oracle atakujący kupuje lub sprzedaje dużą ilość tokena w puli DEX za pomocą dużej swapy. W efekcie zmieniają się rezerwy w tej puli, a lokalna cena spot chwilowo rośnie albo spada. Oracle cenowy to po prostu element, który informuje protokół, ile coś jest warte.

Niebezpieczeństwo pojawia się wtedy, gdy inny protokół odczyta tę jedną zaburzoną cenę tak, jakby była normalną ceną na szerszym rynku. Atakujący może wtedy na przykład pożyczyć zbyt dużo aktywów pod zawyżone zabezpieczenie albo wywołać błędne rozliczenie.

Na końcu atakujący kontrakt zamienia wystarczającą część uzyskanych środków, aby spłacić flash loan i opłatę. To, co zostaje, stanowi zysk. Jeśli nie ma wystarczająco dużo środków na spłatę, cała transakcja zostaje cofnięta.

To ogranicza ryzyko po stronie atakującego: wszystkie kroki muszą zadziałać za jednym razem. Dla zaatakowanego protokołu szkoda może jednak być trwała. Protokół mógł już na przykład pożyczyć zbyt dużo kryptowaluty na podstawie ceny, która była błędna tylko przez bardzo krótki czas.

Nie każdy atak przebiega dokładnie według tego schematu. W atakach na governance tymczasowa płynność może służyć głównie do zdobycia dużej siły głosu. W innych exploitach błąd leży raczej w obliczeniach albo regule dostępu protokołu.

Jakie kroki obejmuje atak flash loan?

Atak flash loan często przebiega w pięciu logicznych krokach, choć w praktyce atakujący mogą łączyć kilka pożyczek, protokołów i swapów.

  1. Znalezienie słabego punktu Atakujący najpierw szuka błędu, który ma wartość finansową. Może to być cena spot w DEX, którą łatwo zmanipulować, błędna wycena tokenów LP lub udziałów vault, albo governance, w którym pożyczone tokeny od razu dają prawo głosu.

  2. Tymczasowe pożyczenie kapitału Następnie atakujący smart contract zaciąga flash loan. Nie trzeba wcześniej wpłacać zabezpieczenia, ale pożyczka musi zostać spłacona w tej samej transakcji.

  3. Wpływ na cenę lub status Za pomocą pożyczonego kapitału kontrakt wykonuje duże swapy, depozyty, pożyczki, mintowanie, głosowania lub inne wywołania kontraktów. Celem jest tymczasowa zmiana ceny, wartości rezerw lub innego ważnego parametru wejściowego.

  4. Wyprowadzenie wartości z protokołu Dopóki obowiązuje błędna cena lub status, kontrakt może na przykład pożyczyć zbyt dużo aktywów, mintować tokeny w nadmiarze albo przeprowadzić szkodliwą akcję governance.

  5. Rozliczenie pożyczki Na końcu kontrakt spłaca kapitał główny i opłatę. Pozostałe aktywa stanowią zysk. Jeśli spłata nie powiedzie się w całości, wszystko zostaje cofnięte.

Przykład: W ataku na bZx z 18 lutego 2020 roku atakujący pożyczył 7 500 ETH za pomocą flash loan. Następnie cena sUSD została podbita przez swapy. Atakujący wykorzystał około 1,1 miliona sUSD jako zawyżone zabezpieczenie, aby pożyczyć 6 796 ETH, a potem spłacił flash loan. Ostatecznie atakujący zatrzymał około 2 378 ETH zysku.

Które protokoły DeFi są podatne na exploity flash loan?

Nie istnieje jeden konkretny typ protokołu DeFi, który byłby automatycznie podatny. Ryzyko pojawia się wtedy, gdy protokół podejmuje ważne decyzje na podstawie informacji, które można tanio zmanipulować w ramach jednej transakcji.

Protokoły lending i borrowing mogą być zagrożone, jeśli używają ceny spot z jednej DEX jako jedynego źródła ceny dla zabezpieczenia, limitów pożyczek lub likwidacji. Duża swap może chwilowo zmienić tę lokalną cenę, podczas gdy cena na reszcie rynku kryptowalut wygląda zupełnie inaczej.

Podatne mogą być też yield aggregatory i vaulty. Zwłaszcza wtedy, gdy cena przy mintowaniu lub redeeming udziałów vault zależy od rezerw puli, które atakujący może tymczasowo zmienić. Obecni deponenci mogą przez to ponieść stratę.

Protokoły stablecoin, instrumentów pochodnych i syntetycznych aktywów są narażone na podobne ryzyko, gdy ważne procesy, takie jak ustalanie zabezpieczenia, zysku i straty (PnL), funding lub likwidacje, zależą od niewiarygodnej ceny. PnL oznacza zysk lub stratę na pozycji.

Kolejnym obszarem ryzyka jest on-chain governance. Jeśli siła głosu wynika bezpośrednio z tokenów, które ktoś posiada lub pożycza tylko przez bardzo krótki czas, atakujący może tymczasowo zebrać wystarczający wpływ, aby przeforsować propozycję. Staje się to jeszcze groźniejsze, jeśli przyjęta propozycja może od razu uruchomić wykonywalny kod lub działania z treasury DAO.

Warto wiedzieć: flash loan nie zawsze jest konieczny. Osoba dysponująca wystarczającym własnym kapitałem albo innym źródłem tymczasowej płynności może czasem wykorzystać ten sam błąd projektowy.

Przykłady exploitów flash loan

Exploity flash loan mogą wyglądać bardzo różnie. Znane przykłady dobrze pokazują, że atakowane mogą być nie tylko price oracle, lecz także reguły wyceny i governance.

  • bZx, 15 lutego 2020: atakujący użył flash loan na 10 000 ETH w połączonym ataku na kilka protokołów DeFi. Podbijając cenę WBTC dużymi swapami i wykorzystując błąd w logice margin bZx, spowodował straty na poziomie około 1 271 ETH, co wówczas odpowiadało około 350 000 dolarów.

  • bZx, 18 lutego 2020: kilka dni później doszło do drugiego ataku z flash loan na 7 500 ETH. Cena sUSD została zmanipulowana, dzięki czemu sUSD można było wykorzystać jako zawyżone zabezpieczenie do pożyczenia 6 796 ETH. Zgłoszony zysk wyniósł 2 378 ETH, czyli wówczas około 633 000 dolarów.

  • Harvest Finance, 26 października 2020: w tym ataku ekonomicznym wielokrotnie wpływano na wartości USDC i USDT w puli Y Curve. Dzięki temu atakujący mógł mintować udziały vault po korzystnej cenie, a później wymienić je z powrotem po normalnej cenie udziału. Z zaangażowanych vaultów wyprowadzono około 24 miliony dolarów.

  • PancakeBunny, 19 maja 2021: tutaj atakujący za pomocą flash loan zmanipulował cenę BUNNY. Błąd w wycenie tokenów LP PancakeSwap doprowadził następnie do mintowania nadmiernej ilości tokenów BUNNY.

  • Beanstalk, 17 kwietnia 2022: atakujący użył flash loan, aby zmanipulować on-chain governance, i wyprowadził około 77 milionów dolarów w aktywach niebędących Bean. Następnie protokół został wstrzymany, a on-chain governance tymczasowo wyłączono.

Kwoty przy tego typu incydentach mogą się różnić w zależności od tego, jak mierzy się szkodę. Chodzi na przykład o aktywa wyprowadzone brutto, zysk netto, zwrócone środki i cenę w danym momencie.

Jakie są skutki exploita flash loan?

Exploit flash loan może sprawić, że użytkownicy, dostawcy płynności i DAO od razu tracą kryptowaluty. Szkoda zwykle nie dotyczy dostawcy flash loan, lecz protokołu, którego logika cenowa, wycena, governance lub smart contracts zostały wykorzystane.

W protokole lendingowym zmanipulowana cena zabezpieczenia może doprowadzić do powstania długu, który nie jest właściwie zabezpieczony. Gdy cena wraca do normy, okazuje się, że zabezpieczenie jest warte mniej niż kryptowaluta, która została pożyczona. Protokół zostaje wtedy z niedoborem.

W przypadku ataku na udziały vault obecni deponenci często zostają rozwodnieni. Mówiąc prościej, atakujący tymczasowo otrzymuje więcej udziałów, niż powinien. Gdy później wymienia te udziały, wyciąga z vault więcej, niż faktycznie wpłacił.

Często pojawiają się też skutki praktyczne. Protokół może wstrzymać kontrakty, wyłączyć governance lub je zmienić, przenieść użytkowników do nowego kontraktu i rozpocząć długi proces naprawy lub rekompensaty.

Tak stało się również po ataku na Beanstalk. Oprócz bezpośredniej straty protokół został wstrzymany, a on-chain governance wyłączono. Po incydencie Harvest odzyskał pozostałe środki z zaangażowanych pul i ograniczył konwersje na czas dochodzenia.

Jak protokoły DeFi mogą zapobiegać exploity flash loan?

Protokoły DeFi nie mogą zapobiec exploity flash loan za pomocą jednego środka. Dobre zabezpieczenie składa się z kilku warstw, które razem utrudniają manipulację ceną, błędy obliczeniowe i nadużycia w governance.

  • Nie opieraj się na jednej cenie spot z DEX. Nie używaj ceny z jednej puli, którą można łatwo zmanipulować, jako jedynego oracle dla pożyczek, likwidacji, mintowania lub wyceny udziałów.

  • Korzystaj z szerszych feedów cenowych. Oracle z wieloma niezależnymi źródłami danych i szerszym pokryciem rynku zmniejsza ryzyko, że wynik zostanie ustalony przez jedną chwilowo zmanipulowaną pulę.

  • Stosuj TWAP tam, gdzie to ma sens. Time-weighted average price, czyli TWAP, to średnia cena z określonego okresu. Dłuższe okno utrudnia manipulację, ale sprawia też, że cena wolniej reaguje na rzeczywiste zmiany rynkowe.

  • Wbuduj jasne kontrole. Chodzi na przykład o maksymalne odchylenia ceny, sprawdzanie, czy dane cenowe są nadal świeże, minimalną płynność, konserwatywne limity loan-to-value oraz limity dla poszczególnych aktywów. Przy nietypowych danych oracle protokół może blokować lub wstrzymywać wrażliwe działania.

  • Testuj osobno tokeny LP i udziały vault. Wartość takich pozycji często zależy od rezerw i aktywów bazowych. Testuj więc także skrajny slippage oraz depozyty i wypłaty w ramach tej samej transakcji.

  • Ogranicz tymczasową siłę głosu. Governance może korzystać z wcześniej ustalonych snapshotów, wprowadzać opóźnienie między głosowaniem a wykonaniem oraz ograniczać działania, które może uruchomić propozycja. Po ataku z kwietnia 2022 roku Beanstalk usunął on-chain governance i tymczasowo przeszedł na głosowanie Snapshot z wykonaniem przez multisig społeczności 5 z 9.

  • Testuj ataki z wyprzedzeniem. Niezależne audyty, symulacje ataków ekonomicznych i testy na forkach powinny uwzględniać flash loan, manipulację oracle, reentrancy i złożone transakcje. Reentrancy oznacza, że zewnętrzny kontrakt może nieoczekiwanie ponownie wywołać funkcję, zanim pierwsze wykonanie zostanie bezpiecznie zakończone.

  • Przygotuj reakcję na incydenty. Monitorowanie skrajnych zmian cen i rezerw, dobrze zaprojektowany mechanizm pauzy oraz jasne procedury awaryjne mogą ograniczyć szkody. Taka pauza nie cofnie ataku, który już zakończył się atomowo, ale może pomóc zapobiec dalszym stratom.

Podsumowanie

Exploit flash loan nie polega na niebezpiecznym flash loan, lecz na błędzie w protokole DeFi, który zostaje później zaatakowany. Flash loan daje atakującemu tymczasowo duży kapitał, dzięki któremu można wpłynąć na cenę, wycenę lub proces governance.

Szczególnie zagrożone są protokoły, które ślepo ufają jednej cenie z DEX, mają podatne reguły wyceny albo pozwalają na natychmiastowe wykorzystanie tymczasowej siły głosu. Dobre oracle, rozsądne limity, solidnie przetestowane smart contracts i dobry plan awaryjny znacznie utrudniają takie ataki. Dla użytkowników najważniejsza lekcja jest prosta: DeFi może dawać wiele możliwości, ale techniczne ryzyka protokołu są co najmniej tak samo ważne jak potencjalny zysk.

O Finst

Finst to wiodąca platforma kryptowalutowa w Holandii, oferująca bardzo niskie opłaty transakcyjne, bezpieczeństwo klasy instytucjonalnej oraz szeroki zakres usług crypto, takich jak trading, przechowywanie aktywów, staking oraz wpłaty i wypłaty fiat. Finst, założona przez byłych kluczowych członków zespołu DEGIRO, jest autoryzowana jako dostawca usług w zakresie kryptoaktywów na mocy MiCAR przez Holenderski Urząd ds. Rynków Finansowych (AFM) i obsługuje klientów detalicznych oraz instytucjonalnych w 30 krajach europejskich.

Platforma krypto dla wszystkich inwestorów

Niezależnie od tego, czy aktywnie handlujesz, czy inwestujesz długoterminowo, Finst pomaga Ci rozwijać portfel krypto z pewnością i spokojem.

Zarejestruj się