Ten artykuł jest wkładem społeczności. Autorem jest Minzhi He, audytor CertiK.
Poglądy wyrażone w tym artykule są poglądami współautora/autora i niekoniecznie odzwierciedlają poglądy Binance Academy.
Streszczenie
Mosty Blockchain mają fundamentalne znaczenie dla osiągnięcia interoperacyjności w przestrzeni blockchain. Dlatego bezpieczeństwo technologii mostowania międzyłańcuchowego ma kluczowe znaczenie. Niektóre typowe luki w zabezpieczeniach mostu blockchain obejmują niewystarczającą weryfikację w łańcuchu i poza łańcuchem, niewłaściwą obsługę tokenów natywnych i błędną konfigurację. Aby upewnić się, że logika weryfikacji jest prawidłowa, zaleca się przetestowanie mostu krzyżowego pod kątem wszystkich możliwych wektorów ataku.
Wstęp
Most blockchain to protokół, który łączy dwa łańcuchy bloków i umożliwia im interakcję. Dzięki mostowi blockchain, jeśli użytkownicy chcą uczestniczyć w działaniach DeFi w sieci Ethereum, muszą jedynie posiadać Bitcoin i nie muszą go sprzedawać, aby osiągnąć swoje cele.
Most Blockchain jest podstawą interoperacyjności w dziedzinie blockchain. Do działania używają różnych weryfikacji w łańcuchu i poza łańcuchem, więc mogą występować również różne luki w zabezpieczeniach.
Dlaczego bezpieczeństwo mostów blockchain jest tak ważne?
Mosty Blockchain zazwyczaj przechowują tokeny, które użytkownicy chcą przenieść z jednego łańcucha do drugiego. Mosty Blockchain są zwykle wdrażane w formie inteligentnych kontraktów. W miarę gromadzenia się transferów między łańcuchami, na moście będzie przechowywana duża liczba tokenów. To ogromne bogactwo sprawi, że będą one pożądanym celem hakerów.
Ponadto powierzchnia ataku mostów blockchain jest zwykle duża ze względu na wiele zaangażowanych komponentów. Dlatego przestępcy mają silną motywację do obierania za cel aplikacji międzyłańcuchowych w celu uzyskania dużych ilości środków.
Według szacunków CertiK ataki na mosty blockchain spowodowały straty o wartości ponad 1,3 miliarda dolarów w 2022 roku, co stanowi 36% całkowitych strat w tym roku.
Typowe luki w zabezpieczeniach mostowania międzyłańcuchowego
Aby zwiększyć bezpieczeństwo mostu blockchain, ważne jest zrozumienie typowych luk w zabezpieczeniach mostu międzyłańcuchowego i przetestowanie mostu blockchain przed jego uruchomieniem. Luki te wynikają głównie z następujących czterech aspektów:
Niewystarczająca weryfikacja w łańcuchu
W przypadku prostych mostów typu blockchain, szczególnie tych zaprojektowanych dla konkretnej aplikacji dApp, zazwyczaj występuje jedynie minimalny poziom weryfikacji w łańcuchu. Mosty te opierają się na scentralizowanym backendie do wykonywania podstawowych operacji, takich jak bicie, spalanie i przesyłanie tokenów, przy czym cała weryfikacja odbywa się poza łańcuchem.
Podczas gdy inne typy mostów wykorzystują inteligentne kontrakty do sprawdzania wiadomości i weryfikowania ich w łańcuchu. W tym przypadku, gdy użytkownik wpłaci środki do łańcucha, inteligentny kontrakt generuje podpisany komunikat i zwraca podpis w transakcji. Podpis ten zostanie wykorzystany jako dowód wpłaty i wykorzystany do zweryfikowania żądania wypłaty użytkownika w innym łańcuchu. Proces ten powinien zapobiegać różnym atakom bezpieczeństwa, w tym atakom polegającym na powtarzaniu i sfałszowanym zapisie doładowań.
Jeśli jednak w procesie weryfikacji w łańcuchu występuje luka, atak może spowodować poważne szkody. Na przykład, jeśli łańcuch bloków wykorzystuje drzewa Merkle do weryfikacji zapisów transakcji, osoba atakująca może wygenerować sfałszowane dowody. Oznacza to, że jeśli proces weryfikacji jest podatny na ataki, osoba atakująca może ominąć weryfikację dowódową i wybić nowe tokeny na swoim koncie.
Niektóre mosty blockchain realizują koncepcję „opakowanych tokenów”. Na przykład, gdy użytkownik przesyła DAI z Ethereum do BNB Chain, jego DAI jest usuwany z kontraktu Ethereum i równa ilość zapakowanego DAI jest wydawana w BNB Chain.
Jeśli jednak ta transakcja nie zostanie odpowiednio zweryfikowana, osoba atakująca może wdrożyć złośliwy kontrakt, który manipuluje tą funkcją w celu skierowania opakowanych tokenów z mostu pod niewłaściwy adres.
Osoba atakująca potrzebuje również, aby ofiara zatwierdziła umowę dotyczącą mostu międzyłańcuchowego przed użyciem funkcji „TransferFrom” do przesłania tokenów, co spowoduje odebranie aktywów z umowy dotyczącej mostu międzyłańcuchowego.
Jednak najtrudniejsze jest to, że wiele mostów międzyłańcuchowych wymaga od użytkowników dApp zatwierdzenia nieograniczonej liczby tokenów. Ta praktyka jest bardzo powszechna i może obniżyć opłaty za gaz, ale umożliwia inteligentnym kontraktom dostęp do nieograniczonej liczby tokenów z portfela użytkownika. co przyniesie dodatkowe ryzyko. Atakujący wykorzystaliby tę niedostateczną weryfikację i nadmierne zatwierdzenie do przeniesienia tokenów od innych użytkowników do siebie.
Niewystarczająca weryfikacja poza łańcuchem
W niektórych systemach mostów międzyłańcuchowych serwery zaplecza poza łańcuchem odgrywają kluczową rolę w weryfikacji legalności wiadomości wysyłanych z łańcucha bloków. W tym przypadku musimy skupić się na weryfikacji transakcji doładowania.
Most blockchain z weryfikacją poza łańcuchem działa w następujący sposób:
Użytkownicy wchodzą w interakcję z dApp i wpłacają tokeny do inteligentnych kontraktów w łańcuchu źródłowym.
Następnie dApp wysyła skrót transakcji depozytu do serwera zaplecza za pośrednictwem interfejsu API.
Hash transakcji musi zostać wielokrotnie zweryfikowany przez serwer. Jeśli zostanie to uznane za uzasadnione, osoba podpisująca podpisuje wiadomość i wysyła podpis z powrotem do interfejsu użytkownika za pośrednictwem interfejsu API.
Po otrzymaniu podpisu dApp weryfikuje go i umożliwia użytkownikowi wycofanie tokenów z łańcucha docelowego.
Serwer zaplecza musi zapewnić, że obsługiwane przez niego transakcje doładowań są prawdziwe i nie są sfałszowane. Ten serwer zaplecza określa, czy użytkownik może wycofać tokeny z łańcucha docelowego, co czyni go pierwszym celem ataków.
Serwer zaplecza musi zweryfikować strukturę zdarzenia inicjującego transakcję i adres kontraktu, który zainicjował zdarzenie. Jeśli to drugie zostanie zignorowane, osoby atakujące mogą wdrożyć złośliwe kontrakty w celu sfałszowania zdarzeń doładowania o tej samej strukturze, co uzasadnione zdarzenia doładowania.
Jeżeli serwer zaplecza nie sprawdzi, który adres zainicjował zdarzenie, uzna, że jest to prawidłowa transakcja i podpisze wiadomość. Osoba atakująca może następnie wysłać skrót transakcji do serwera zaplecza, omijając weryfikację i umożliwiając mu wycofanie tokenów z łańcucha docelowego.
Niewłaściwa obsługa tokenu natywnego
Mosty międzyłańcuchowe przyjmują inne podejście do tokenów natywnych i tokenów użytkowych. Przykładowo w sieci Ethereum tokenem natywnym jest ETH, a większość tokenów użytkowych jest zgodna ze standardem ERC-20.
Jeśli użytkownik zamierza przenieść swój ETH do innej sieci, musi najpierw zdeponować go w umowie mostu międzyłańcuchowego. Aby to zrobić, użytkownik po prostu dołącza ETH do transakcji i może pobrać kwotę ETH, czytając pole transakcji „msg.value”.
Wpłacanie tokenów ERC-20 bardzo różni się od deponowania ETH. Aby zdeponować tokeny ERC-20, użytkownicy muszą najpierw zezwolić umowie na most międzyłańcuchowy na korzystanie z ich tokenów. Po zatwierdzeniu i zdeponowaniu tokenów w umowie mostu międzyłańcuchowego, kontrakt użyje funkcji „burnFrom()” w celu zniszczenia tokenów użytkownika lub funkcji „transferFrom()” w celu przeniesienia tokenów użytkownika do kontraktu.
Aby rozróżnić, która to operacja, możesz użyć instrukcji if-else w tej samej funkcji. Lub utwórz dwie oddzielne funkcje do obsługi każdego scenariusza. Ze względu na różne metody przetwarzania, jeśli użytkownik spróbuje wpłacić ETH za pomocą funkcji wpłaty ERC-20, ETH może zostać utracone.
Podczas przetwarzania wniosków o wpłatę ERC-20 użytkownicy zazwyczaj podają adres tokena jako parametr wejściowy funkcji wpłaty. Stwarza to duże ryzyko, gdyż w trakcie transakcji mogą wystąpić niezaufane połączenia zewnętrzne. Używanie białej listy w celu uwzględnienia tylko tokenów obsługiwanych przez most międzyłańcuchowy jest powszechną praktyką mającą na celu minimalizację ryzyka. Jako parametry przekazywane są tylko adresy z białej listy. Zapobiega to wywołaniom zewnętrznym, ponieważ zespół projektowy odfiltrował adresy tokenów.
Jednak pojawia się również problem, gdy most międzyłańcuchowy obsługuje transfer międzyłańcuchowy tokenów natywnych, ponieważ tokeny natywne nie mają adresów. Tokeny natywne mogą być reprezentowane przez specjalny adres, „adres zerowy” (0x000... 0). Jest jednak z tym problem, jeżeli logika weryfikacji białej listy nie zostanie poprawnie zaimplementowana, przekazanie do funkcji adresu zerowego może ominąć weryfikację białej listy.
Kiedy umowa mostu międzyłańcuchowego wywołuje „TransferFrom”, aby przenieść zasoby użytkownika do kontraktu, zewnętrzne wywołanie adresu zerowego zwróci wartość false, ponieważ funkcja „transferFrom” nie jest zaimplementowana w adresie zerowym. Jeśli jednak kontrakt nie obsługuje prawidłowo zwracanej wartości, transakcja może nadal mieć miejsce. Stwarza to szansę atakującemu na wykonanie transakcji bez przekazywania jakichkolwiek tokenów do kontraktu.
Błąd konfiguracji
W większości mostów blockchain istnieje uprzywilejowana rola odpowiedzialna za umieszczanie na białej lub czarnej liście tokenów i adresów, przypisywanie lub zmianę osób podpisujących oraz inne kluczowe konfiguracje. Bardzo ważne jest, aby upewnić się, że wszystkie konfiguracje są dokładne, ponieważ pozornie trywialne niedopatrzenia mogą prowadzić do znacznych szkód.
W rzeczywistości zdarzały się incydenty, w których atakującym udało się ominąć weryfikację rekordu transferu z powodu błędnej konfiguracji. Zespół projektowy wdrożył aktualizację protokołu na kilka dni przed włamaniem, podczas którego zmieniono pewną zmienną. Ta zmienna jest wartością domyślną używaną do reprezentowania zaufanych wiadomości. Ta zmiana powoduje, że wszystkie wiadomości są automatycznie uznawane za uwierzytelnione, co pozwala atakującemu przesłać losową wiadomość i przejść weryfikację.
Jak poprawić bezpieczeństwo mostów krzyżowo-łańcuchowych
Opisane powyżej cztery typowe luki w zabezpieczeniach mostów międzyłańcuchowych pokazują, że nie można lekceważyć wyzwań stojących przed bezpieczeństwem w połączonym ekosystemie blockchain. Aby sobie poradzić z tymi lukami, musimy rozważyć „w zależności od warunków lokalnych”. Żadna metoda nie jest panaceum na wszystkie luki.
Na przykład, ponieważ każdy most krzyżowy ma inne wymagania weryfikacyjne, trudno byłoby zapewnić, że proces weryfikacji będzie wolny od błędów, po prostu podając ogólne wytyczne. Najskuteczniejszym sposobem zapobiegania obejściu weryfikacji jest dokładne przetestowanie mostu międzyłańcuchowego pod kątem wszystkich możliwych wektorów ataku i upewnienie się, że logika weryfikacji jest rozsądna.
Podsumowując, należy przeprowadzić rygorystyczne testy pod kątem potencjalnych ataków, ze szczególnym uwzględnieniem najczęstszych luk w zabezpieczeniach mostów międzyłańcuchowych.
Wniosek
Ze względu na samą wielkość funduszy mosty międzyłańcuchowe od dawna są celem atakujących. Konstruktorzy mogą zwiększyć bezpieczeństwo mostów międzyłańcuchowych, przeprowadzając kompleksowe testy przed wdrożeniem i włączając audyty stron trzecich, zmniejszając w ten sposób ryzyko katastrofalnych włamań, które wisiały nad mostami międzyłańcuchowymi w ciągu ostatnich kilku lat. Mosty międzyłańcuchowe mają kluczowe znaczenie w świecie wielołańcuchowym, ale bezpieczeństwo musi być główną kwestią przy projektowaniu i budowaniu efektywnej infrastruktury Web3.
Dalsza lektura
Co to jest most blockchain?
Co to jest interoperacyjność między łańcuchami?
Trzy popularne mosty kryptowalutowe i jak działają
Co to jest token opakowany?
Zastrzeżenie i ostrzeżenie o ryzyku: Treść tego artykułu stanowią fakty i służą wyłącznie celom informacyjnym i edukacyjnym i nie stanowią żadnego oświadczenia ani gwarancji. Tego artykułu nie należy interpretować jako porady finansowej, prawnej ani innej profesjonalnej porady i nie stanowi rekomendacji zakupu żadnego konkretnego produktu lub usługi. Powinieneś zasięgnąć porady u odpowiednich profesjonalnych doradców. Jeśli ten artykuł został dostarczony przez zewnętrznego współpracownika, pamiętaj, że poglądy wyrażone w tym artykule należą do zewnętrznego współpracownika i niekoniecznie odzwierciedlają poglądy Binance Academy. Aby uzyskać więcej informacji, kliknij tutaj i zapoznaj się z pełnym oświadczeniem. Ceny aktywów cyfrowych mogą się zmieniać. Wartość Twojej inwestycji może zarówno spaść, jak i wzrosnąć, a Ty możesz nie odzyskać zainwestowanego kapitału. Ponosisz wyłączną odpowiedzialność za swoje własne decyzje inwestycyjne, a Binance Academy nie ponosi odpowiedzialności za jakiekolwiek straty, które możesz ponieść. Artykuł ten nie stanowi porady finansowej, prawnej ani innej profesjonalnej porady. Aby uzyskać więcej informacji, zapoznaj się z naszymi Warunkami użytkowania i Ostrzeżeniem o ryzyku.

