Jeśli jest jedna rzecz, którą wiemy, to to, że żaden protokół ani platforma DeFi nie są w 100% bezpieczne. 9 lipca, giełda @GMX_IO Exchange V1 została zhakowana na kwotę 42 milionów dolarów. Oto nasze podsumowanie poniżej od @Blackthornxyz’s Lead Security Partner @panprog (w tym kluczowa lekcja dla rozwoju smart kontraktów) 👇🔎
Źródłem exploita była podatność na re-entrancy w kontraktach inteligentnych GMX, a konkretnie w PositionManager.executeDecreaseOrder.
Atak ⚔️: Z OrderBook.executeDecreaseOrder, zysk (w ETH) został bezpośrednio wysłany do użytkownika. To wywołało funkcję receive() kontraktu odbiorcy przed wywołaniem timelock.disableLeverage().
Funkcja ta ma na celu zapobieganie bezpośrednim wywołaniom Vault poprzez wyłączenie dźwigni, ale z powodu opóźnionego wywołania, napastnik był w stanie ją obejść.
W kontekście tej re-entrancy, atakujący bezpośrednio wywołał Vault, aby manipulować pozycjami krótkimi. Krytyczna linia w PositionManager - odpowiedzialna za aktualizację ShortsTracker.globalShortAveragePrices - została pominięta.
W rezultacie atakujący mógł sztucznie zwiększyć Vault.globalShortSizes bez aktualizacji średniej ceny krótkiej, co doprowadziło do błędnych obliczeń AUM i zawyżenia ceny GLP.
Kradzież funduszy w wysokości 42 mln $💰: Napastnik najpierw kupił GLP po niższej cenie, następnie podniósł ją za pomocą pętli re-entrancy, a potem sprzedał GLP z powrotem do Vault po zawyżonej cenie. To wyczerpało prawie wszystkie tokeny przechowywane w Vault. Łączny zysk: 42 mln $ w ETH, BTC, USDC i innych.
Skutki? 1) GMX wstrzymał wszystkie transakcje, mintowanie i wykupywanie GLP na Arbitrum i Avalanche. 2) GMX V2 i inne komponenty protokołu nie zostały dotknięte. 3) Napastnikowi zaproponowano 10% nagrody w stylu white-hat (około 4,2 miliona dolarów), jeśli środki zostaną zwrócone w ciągu 48 godzin.
Na chwilę obecną, gdy piszę ten post, haker zaczął zwracać fundusze zespołowi GMX po negocjacjach dotyczących wypłaty 🙌. Jako partnerzy ds. bezpieczeństwa z GMX, począwszy od ich V2, pomagaliśmy w tej sytuacji i cieszymy się, że to słyszymy. Z niecierpliwością czekamy na kontynuację współpracy z GMX w przyszłości.
Lekcje 🎓: ✅ Upewnij się, że nie ma możliwości reentrancy, nawet jeśli wydaje się to nieszkodliwe - Początkowo GMX v1 pozwalał użytkownikom na bezpośrednią interakcję z Vault… W związku z tym możliwość bezpośredniej interakcji z Vault nie wydawała się niebezpieczna dla wielu.
✅ Upewnij się, że istnieją kontrole sanity dla szybkiej zmiany wartości, takie jak ceny tokenów lub akcji: cofnij wykonanie, jeśli w krótkim czasie cena jakiegoś aktywa (jak GLP w tym przypadku) zmienia się o więcej niż określony procent.
✅ Upewnij się, że istnieje ścisłe monitorowanie off-chain dla wszelkich podejrzanych wzorców, które mogą automatycznie wstrzymać handel w ekstremalnych sytuacjach. Na przykład, jeśli cena GLP znajduje się poza wcześniej zdefiniowanym zakresem w dowolnym momencie, natychmiast wstrzymaj operacje, aby przeprowadzić dochodzenie.
Sprawdź naszego bloga, aby zobaczyć pełny raport 👇
Pokaż oryginał
4,98 tys.
39
Treści na tej stronie są dostarczane przez strony trzecie. O ile nie zaznaczono inaczej, OKX nie jest autorem cytowanych artykułów i nie rości sobie żadnych praw autorskich do tych materiałów. Treść jest dostarczana wyłącznie w celach informacyjnych i nie reprezentuje poglądów OKX. Nie mają one na celu jakiejkolwiek rekomendacji i nie powinny być traktowane jako porada inwestycyjna lub zachęta do zakupu lub sprzedaży aktywów cyfrowych. Treści, w zakresie w jakim jest wykorzystywana generatywna sztuczna inteligencja do dostarczania podsumowań lub innych informacji, mogą być niedokładne lub niespójne. Przeczytaj podlinkowany artykuł, aby uzyskać więcej szczegółów i informacji. OKX nie ponosi odpowiedzialności za treści hostowane na stronach osób trzecich. Posiadanie aktywów cyfrowych, w tym stablecoinów i NFT, wiąże się z wysokim stopniem ryzyka i może podlegać znacznym wahaniom. Musisz dokładnie rozważyć, czy handel lub posiadanie aktywów cyfrowych jest dla Ciebie odpowiednie w świetle Twojej sytuacji finansowej.