Atak flash loan przejmuje kontrolę nad zarządzaniem X100 i opróżnia 4,85 mln USD
Najważniejsze informacje
- •Napastnicy pożyczyli około 1,94 mln USDT za pośrednictwem pożyczki flash Aave, kupili 38 200 tokenów X i zdeponowali je za pośrednictwem dwóch nowo wdrożonych kontraktów, aby w ramach jednej transakcji przejąć dwa z trzech miejsc w zarządzającym X100 Senacie.
- •Ponieważ kontrakty zarządzające X100 pozwalały nowo zarejestrowanym senatorom głosować nad propozycjami i wykonywać je w ramach tej samej transakcji, napastnik wyprowadził aktywa skarbca i płynności bez timelocka ani okresu oczekiwania.
- •Początkowe środki w wysokości około 4,75 mln USD zamieniono na około 2 022 ETH za pośrednictwem UniswapX, a następnie 1 600 ETH rozdzielono między cztery nowo utworzone portfele, z których każdy otrzymał 400 ETH.
- •Według danych CoinGecko token X stracił ponad 96%, choć bardzo niewielka pozostała płynność sprawia, że wyświetlana cena jest niewiarygodną miarą możliwej do uzyskania wartości rynkowej.
- •W chwili oceny Blockaid z 24 października w kontrakcie Freezer pozostawało około 12,2 mln X, a nie ujawniono odzyskania środków, naprawy kontraktów ani porozumienia dotyczącego rekompensat.

X100, projekt DeFi działający na Ethereum, stracił około 4,85 mln USD w USDT 24 października po tym, jak napastnicy wykorzystali pożyczki flash do przejęcia kontroli nad systemem zarządzania i wykonania złośliwych propozycji dotyczących skarbca oraz rezerw płynności projektu.
Przejmując dwa z trzech miejsc w zarządzającym X100 Senacie, napastnicy mogli zatwierdzać i wykonywać transakcje bez oczekiwania na jakiekolwiek opóźnienie w zarządzaniu. Pierwszy atak przyniósł około 4,75 mln USD, a kolejne wypłaty zwiększyły całkowitą stratę do 4,85 mln USD.
Firma bezpieczeństwa blockchain Blockaid wykryła trwający exploit o 14:49 UTC w poście na X, identyfikując wiele złośliwych transakcji wymierzonych w kontrakt Freezer protokołu. W późniejszej aktualizacji firma poinformowała o przejęciu około 550 000 dodatkowych tokenów X z pozycji płynności Uniswap, podczas gdy w kontrakcie Freezer pozostało około 12,2 mln X.
Pożyczka flash zapewniła napastnikom większość w Senacie
Pierwszy atak rozpoczął się o 14:11 UTC, gdy portfel pożyczył około 1,94 mln USDT za pośrednictwem pożyczki flash Aave i wykorzystał środki do zakupu 38 200 tokenów X. Napastnik podzielił tokeny między dwa nowo wdrożone kontrakty, z których każdy zdeponował w systemie Freezer X100 nieco ponad 19 000 X. Depozyty te wyparły dotychczasowych członków Senatu i zapewniły napastnikowi kontrolę nad dwoma z trzech miejsc w organie zarządzającym.
Po uzyskaniu wymaganej większości napastnik przedstawił i natychmiast wykonał propozycję nakazującą skarbcowi sprzedaż 400 000 X do nowo utworzonej puli płynności PancakeSwap V3. Ponieważ zmanipulowana pula zawierała tylko niewielką ilość USDT, napastnik nabył tokeny skarbca za około 35,68 USDT, a następnie wycofał płynność.
Następnie napastnik sprzedał około 131 703 X za pośrednictwem istniejącej puli Uniswap V3, otrzymując około 6,69 mln USDT. Po spłacie pożyczki flash transakcja przyniosła około 4,75 mln USD.
Exploit był możliwy, ponieważ kontrakty zarządzające X100 pozwalały nowo zarejestrowanym senatorom głosować nad propozycjami i wykonywać je w ramach tej samej transakcji blockchain. Pożyczki flash, zapewniające niezabezpieczone finansowanie, które musi zostać spłacone w ramach jednej transakcji, dały napastnikowi tymczasowy kapitał potrzebny do zdobycia siły głosu. Protokół nie miał skutecznego okresu oczekiwania między uzyskaniem uprawnień zarządczych a przejęciem kontroli nad aktywami skarbca. Timelocki, które odraczają wykonanie propozycji do późniejszego bloku, są powszechnie stosowanym zabezpieczeniem w zarządzaniu DeFi właśnie dlatego, że dają posiadaczom tokenów czas na reakcję — i wycofanie środków — zanim transakcje dotyczące skarbca zaczną obowiązywać. Incydent X100 pokazuje, że w systemach zarządzania opartych na wadze tokenów sam mechanizm głosowania może stać się wektorem ataku, nawet gdy token projektu i kontrakty skarbca nie są bezpośrednio atakowane.
Środki zamieniono na ether
Początkowe środki zostały szybko wymienione na około 2 022 ETH za pośrednictwem UniswapX, a uzyskana kryptowaluta została przetransferowana do innego portfela Ethereum. Następnie adres ten rozdzielił 1 600 ETH między cztery nowo utworzone portfele, z których każdy otrzymał 400 ETH, podczas gdy około 423 ETH pozostało na adresie konsolidacyjnym w trakcie wstępnej analizy transakcji.
Po pierwszej wypłacie doszło do kolejnych ataków na system zarządzania. O 14:35 UTC druga transakcja wykorzystała podobną strategię z pożyczką flash do przejęcia miejsc w Senacie i usunięcia pozycji płynności Uniswap V3 kontrolowanych przez kontrakt Freezer, generując około 96 382 USDT dodatkowych środków. Trzecia transakcja o 14:40 UTC wykorzystała przejętą ścieżkę zarządzania do wypłaty kolejnej pozycji płynności zawierającej około 550 000 tokenów X. Tokeny te zostały wyprowadzone niezależnie od kwoty 4,85 mln USD w USDT.
Transakcje pochodziły z różnych portfeli wysyłających, a śledczy nie ustalili, czy były one kontrolowane przez odrębnych napastników, czy koordynowane przez jedną stronę.
Token traci na wartości, a podatność pozostaje otwarta
Token X100 gwałtownie stracił na wartości po ataku. Dane handlowe, odzwierciedlone w serwisie CoinGecko, wskazywały na spadek przekraczający 96% w związku ze zniknięciem płynności z głównej puli handlowej. Do podanego odsetka należy podchodzić ostrożnie, ponieważ pozostała płynność była bardzo niewielka, przez co wyświetlana cena tokena nie stanowi wiarygodnej miary możliwej do uzyskania wartości rynkowej.
Atak jest najnowszym z serii niedawnych exploitów zarządzania napędzanych pożyczkami flash. W sierpniu napastnik uzyskał wystarczające uprawnienia zarządcze w Term Finance, aby wykonywać złośliwe propozycje i wyprowadzić około 8,5 mln USD z opartych na Ethereum skarbców pożyczkowych. Odrębny atak z wykorzystaniem pożyczki flash na Shibarium we wrześniu 5 również obejmował tymczasowe przejęcie tokenów związanych z zarządzaniem, choć tamten incydent dotyczył uprawnień walidatorów i aktywów mostu, a nie bezpośredniego wykonywania propozycji dotyczących skarbca. We wszystkich tych przypadkach kontrola nad aktywami protokołu była powiązana z tokenami, które można było nabyć w ramach jednej transakcji, pozostawiając kworum i progi zatwierdzenia jako ostatnią linię obrony.
W przypadku X100 wymóg uzyskania dwóch trzecich głosów w Senacie zapewnił niewielką ochronę, ponieważ uprawnienia do głosowania można było zdobyć i wykorzystać natychmiast przy użyciu pożyczonego kapitału.
W początkowych godzinach po exploicie projekt nie opublikował publicznego raportu dotyczącego incydentu ani nie potwierdził planu odzyskania środków, a Blockaid nadal ostrzegał przed aktywnym zagrożeniem po wykryciu trzeciej transakcji. W chwili oceny firmy z 24 października w kontrakcie Freezer pozostawało około 12,2 mln X. Nie ujawniono potwierdzonego odzyskania wyprowadzonych środków, naprawy kontraktów ani porozumienia dotyczącego rekompensat. Po ocenie Blockaid z 24 października głównymi otwartymi pytaniami pozostawało to, czy tokeny nadal znajdujące się w kontrakcie Freezer zostaną następnie przeniesione oraz czy projekt opublikuje analizę po incydencie lub wprowadzi zmiany w systemie zarządzania.