3 stycznia projekt Radiant Capital padł ofiarą poważnego ataku w postaci pożyczki błyskawicznej, w wyniku którego strata wyniosła 1900 ETH (około 4,5 miliona dolarów). Radiant Capital to zdecentralizowany protokół pożyczkowy międzyłańcuchowy, który umożliwia użytkownikom deponowanie i pożyczanie różnych aktywów na różnych blockchainach, eliminując silosy płynności.
Według danych w łańcuchu haker wykorzystał okno czasowe na aktywację nowego rynku i problem z zaokrąglaniem w bazie kodu Compound/Aave, aby przeprowadzić atak w postaci pożyczki błyskawicznej. Ta metoda ataku polega na pożyczeniu dużej ilości środków, wykonaniu serii operacji w ramach bloku, a następnie zwróceniu środków przed zakończeniem bloku w celu osiągnięcia zysku.
Krótki atak na lukę w zabezpieczeniach
Według raportów PeckShield i PeckShield napastnicy wykorzystali lukę w zabezpieczeniach obliczeniowych Radiant Capital, umożliwiając im wypłacanie dużych ilości USDC po niskich cenach poprzez kontrolowanie precyzji i zaokrąglania. USDC to stabilna waluta, której wartość jest powiązana z dolarem amerykańskim i jest jednym z aktywów powszechnie stosowanych w zdecentralizowanych protokołach finansowych.
Proces ataku atakującego wygląda następująco:
1. Osoba atakująca najpierw pożyczyła 3 miliony USDC za pośrednictwem pożyczki flash AAVE, aby wykorzystać je jako fundusze na rozpoczęcie ataku. Pożyczki błyskawiczne polegają na pożyczeniu dużej ilości środków, wykonaniu szeregu operacji w ramach bloku, a następnie zwróceniu środków przed zakończeniem bloku w celu osiągnięcia zysku.
2. Osoba atakująca zadeklarowała kontraktowi Radiant kwotę 2 mln USDC i uzyskała 2 mln tokenów certyfikatu rUSDCn.
3. Osoba atakująca udziela pożyczki flash w ramach kontraktu Radiant, pożycza 2 miliony USDC, zwraca 2 miliony USDC w funkcji callback i pobiera zadeklarowaną w drugim kroku kwotę USDC. Na koniec funkcja pożyczki flash wywoła funkcję przelewu Przenieś USDC atakującego do kontraktu. W tym momencie zostanie pobrana opłata manipulacyjna w wysokości 9/10000, a pobrana opłata manipulacyjna stanie się płynnością puli.
4. Wielokrotnie powtarzając krok 3, atakujący kontroluje płynnośćIndex jako bardzo dużą, liquidityIndex=271800000000999999999999998631966035920. LiquidityIndex to zmienna używana w kontrakcie Radiant do rejestrowania wzrostu płynności. Będzie ona rosła wraz z kumulacją czasu i odsetek.
5. Następnie atakujący tworzy nowy kontrakt i inwestuje w niego 543 600 USDC, ponieważ 5436 (wartość USDC) to dokładnie dwukrotność 2718 (wartość liquidityIndex) w kroku 4, co można łatwo kontrolować poprzez zaokrąglanie.
6. Osoba atakująca zastawiła całe 543 600 USDC na kontrakt Radiant i uzyskała tę samą kwotę rUSDCn.
7. Osoba atakująca wydobyła 407 700 USDC, co powinno zniszczyć 407 700 rUSDCn, ale jak wspomniano powyżej, funkcja spalania przeprowadziła precyzyjne obliczenia rozszerzania i zaokrąglania. 4077000000000000000000000000000000000/27180000000999999999999998631966035920=1,49999999, a wynik zaokrąglenia wynosi 1, co powoduje, że wynik jest o 1/3 mniejszy. Jak widać na poniższym obrazku, należało zniszczyć 407 700 USDC, a pozostało 271 800, co oznacza, że zniszczono jedynie 271 800, a atakujący wycofał 407 700 USDC.
8. Osoba atakująca wykorzystuje lukę w kroku 7, aby powtórzyć operację wycofania zastawu, a wypłata jest zawsze o 1/3 większa niż zadeklarowana kwota i ostatecznie wymienia wszystkie USDC w puli.
Fundusze nie są obecnie zagrożone
Radiant Capital w swoim oficjalnym poście przyznał się do problemu i oświadczył, że zawiesił swój rynek pożyczkowy na Arbitrum oraz bada przyczynę i skutki incydentu. Arbitrum to rozwiązanie skalujące drugiej warstwy, które zwiększa szybkość transakcji i zmniejsza koszty w Ethereum. Radiant Capital stwierdził również, że żadne środki użytkowników nie są obecnie zagrożone i planuje wydać raport o wykryciu i wznowić działalność po rozwiązaniu problemu.
Wniosek:
Ten incydent po raz kolejny przypomina nam, że bezpieczeństwo zdecentralizowanych protokołów finansowych ma kluczowe znaczenie i wymaga ciągłego audytu i testowania, aby zapobiec potencjalnym lukom w zabezpieczeniach i atakom. Użytkownicy powinni również zdawać sobie sprawę z ryzyka i uczestniczyć w udzielaniu pożyczek i inwestowaniu wyłącznie na zaufanych platformach. Chociaż Radiant Capital poniósł ciężkie straty, wykazał się także pozytywnym nastawieniem i poczuciem odpowiedzialności, mając nadzieję, że uda mu się jak najszybciej odzyskać i poprawić bezpieczeństwo i stabilność swojego protokołu. Jednocześnie mam nadzieję, że inne zdecentralizowane protokoły finansowe mogą wyciągnąć wnioski z tego incydentu, wzmocnić swoje własne środki ostrożności i zapewnić użytkownikom lepsze usługi i doświadczenia. #RadiantCapital #黑客攻击