"Nomad to optymistyczny protokół interoperacyjności, który umożliwia bezpieczną komunikację między łańcuchami" - przynajmniej tak twierdzili twórcy.
$190 mln zostało skradzione z mostu Nomad i choć część środków znalazła się w rękach osób uczciwych, które planują je zwrócić, możemy uznać, że większości nie da się odzyskać.
Co się stało?
Użytkownicy foobar i Samczsun na Twitterze już znaleźli wytłumaczenie. Po bardziej dogłębną i techniczną analizę tego co się stało zapraszam do nich:
1/ Nomad just got drained for over $150M in one of the most chaotic hacks that Web3 has ever seen. How exactly did this happen, and what was the root cause? Allow me to take you behind the scenes ???? pic.twitter.com/Y7Q3fZ7ezm
— samczsun (@samczsun) August 1, 2022
W skrócie użytkownicy mogli wypłacić z mostu środki, których nie mieli...
Funkcja process(), działająca w aktualnym smart kontrakcie sprawdza, czy wiadomości zawierają akceptowalny korzeń Merkle, czyli czy są poprawne. Ma to na celu uniemożliwienie użytkownikom przekazywania nieprawdziwych danych. Zespół w aktualizacji sprzed 41 dni oznaczył zerowy korzeń (0x00) jako zaufany, co jest dość częstą praktyką.
Niestety, w tym wypadku oznaczało to, że każda wiadomość jest domyślnie akceptowana, co jest przeciwieństwem tego, co zwykle oznacza "wyzerowanie" korzenia merkle. W rezultacie system akceptował każdą wiadomość i przetwarzał tak, jakby była prawdziwa.
Do czego to doprowadziło?
Każdy użytkownik, który chciał "skorzystać" na tym błędzie musiał tylko... skopiować oryginalne dane dotyczące transakcji, która zadziałała, zastąpić adres swoim i transakcja była poprawna!
To doprowadziło do masowego opróżniania środków przez wielu użytkowników techniką... CTRL + C, CTRL + V.
Jak podsumował Samczsun, rutynowa aktualizacja oznaczyła zerowy hash jako prawidłowy korzeń, co umożliwiło fałszowanie wiadomości. Atakujący wykorzystali to, aby kopiować transakcje i opróżnili most w bardzo szybkim tempie.
Kolejny atak na most pokazuje, że jest to największy aktualnie problem związany z bezpieczeństwem. W tym wypadku uda się jednak uratować część środków, ponieważ wiele (również znanych w społeczności) osób gdy tylko zobaczyło, co się dzieje zareagowało i wykorzystało moment, aby "chwilowo ukraść" jak najwięcej środków, które zwrócą gdy zespół podejmie decyzję co dalej.