To jest rodzaj błędu, który nie pozwala zespołom protokołów spać w nocy.
Eksploatacja na kwotę 5 milionów dolarów w ZKSwap, spowodowana przez jedno zdanie pozostawione w złym miejscu.
Oto szczegółowe omówienie, jak to się stało i jak monitorowanie on-chain mogłoby temu zapobiec.
🧵

1/ 9 lipca GMX został zhakowany na kwotę 42 milionów dolarów.
Ale tego dnia wydarzyło się coś jeszcze, co ledwie ktoś zauważył: most ZKSwap został cicho opróżniony na kwotę 5 milionów dolarów.
Ciekawa część? Nie było żadnego wymyślnego exploit'u. Po prostu krytyczna funkcja, która… nic nie robiła.

2/ ZKSwap to zk-rollup zbudowany na Ethereum.
Jak wiele rollupów, używa mostu do przenoszenia aktywów między L1 a L2.
Jako zabezpieczenie, most zawiera „Tryb Exodus”, sposób dla użytkowników na odzyskanie funduszy bez potrzeby angażowania operatora.
Teoretycznie to świetny pomysł. W praktyce…
3/ Tryb Exodus pozwala użytkownikom ręcznie udowodnić, że posiadali tokeny w ostatnim zweryfikowanym stanie L2.
To mechanizm awaryjny: bez zaufania, samodzielne przechowywanie, nieinteraktywne.
Jednak implementacja ZKSwap miała jeden fatalny błąd: Funkcja odpowiedzialna za weryfikację dowodów nie weryfikowała niczego.
Dosłownie.
4/ Oto kod, który powinien był zatrzymać atak 👇
Na pierwszy rzut oka wygląda jak prawdziwy weryfikator zk-proof.
Ale przyjrzyj się uważnie pierwszej linii: return true;
To wszystko. Nic więcej się nie wykonuje.

5/ Jaki jest wynik? Każdy „dowód” wypłaty (bez względu na to, jak fałszywy) przeszedł walidację.
Kontrakt akceptował dowolne roszczenia dotyczące sald tokenów... i przypisywał je, jakby były prawdziwe.
Przekształcił bezpieczny mechanizm awaryjny w niechroniony kran.
6/ Napastnik nie potrzebował wyszukanych exploitów - wystarczyły powtarzające się wywołania exit() z wymyślonymi danymi.
Ominięto kontrole salda, wypłacono przez wiele tokenów i wykorzystano słabą logikę nullifiera, aby uniknąć wykrycia.
Wszystko to podczas gdy kontrakt mówił: ✅

7/ To nie był jakiś niejasny przypadek brzegowy.
To była podstawowa logika odzyskiwania aktywów, pozostawiona całkowicie otwarta.
A ponieważ tryb Exodus rzadko jest uruchamiany, uszkodzona ścieżka pozostała niezauważona... przez miesiące.
8/ Oto co powinno było wywołać alarmy:
• Aktywacja trybu Exodus po długim okresie bezczynności
• Dziesiątki jednoczesnych wezwań do wypłaty
• Nagły wzrost zmian w saldach do wypłaty
Wszystko to było widoczne i mogło zostać zatrzymane dzięki monitorowaniu on-chain w czasie rzeczywistym.

9/ Jaka jest lekcja?
• Kod awaryjny to wciąż kod produkcyjny
• Ścieżki zapasowe nie pomagają, jeśli nie działają
• Monitorowanie w czasie rzeczywistym nie jest opcjonalne, to kwestia przetrwania
34,16 tys.
379
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.