Ten artykuł jest zgłoszeniem społeczności. Autorem jest Minzhi He, audytor w CertiK.
Poglądy zawarte w tym artykule są poglądami współautora/autora i niekoniecznie odzwierciedlają poglądy Binance Academy.
TL;DR
Mosty Blockchain mają kluczowe znaczenie dla osiągnięcia interoperacyjności w przestrzeni blockchain. Dlatego bezpieczeństwo mostów jest sprawą najwyższej wagi. Niektóre typowe luki w zabezpieczeniach mostu obejmują słabą weryfikację w łańcuchu i poza łańcuchem, niewłaściwą obsługę tokenów natywnych i błędne konfiguracje. Zaleca się przetestowanie mostu pod kątem wszystkich możliwych wektorów ataku, aby zapewnić logikę weryfikacji.
Wstęp
Most blockchain to protokół łączący dwa łańcuchy bloków w celu umożliwienia interakcji między nimi. Jeśli posiadasz bitcoin, ale chcesz uczestniczyć w działalności DeFi w sieci Ethereum, most blockchain umożliwia to bez sprzedaży bitcoinów.
Mosty Blockchain mają fundamentalne znaczenie dla osiągnięcia interoperacyjności w przestrzeni blockchain. Funkcjonują przy użyciu różnych walidacji w łańcuchu i poza łańcuchem, dlatego mają różne luki w zabezpieczeniach.
Dlaczego bezpieczeństwo mostu jest tak ważne?
Most zazwyczaj przechowuje token, który użytkownik chce przenieść z jednego łańcucha do drugiego. Mosty, często wdrażane jako inteligentne kontrakty, przechowują znaczną liczbę tokenów w miarę kumulacji transferów między łańcuchami, co czyni je lukratywnymi celami dla hakerów.
Ponadto mosty blockchain mają dużą powierzchnię ataku, ponieważ obejmują wiele komponentów. Mając to na uwadze, szkodliwi przestępcy są bardzo zmotywowani do atakowania aplikacji międzyłańcuchowych w celu wyssania dużych sum środków.
Według szacunków CertiK ataki na mosty spowodowały w 2022 r. straty o wartości ponad 1,3 miliarda dolarów, co stanowi 36% całkowitych strat w tym roku.
Typowe luki w zabezpieczeniach mostu
Aby zwiększyć bezpieczeństwo mostów, warto poznać typowe luki w zabezpieczeniach mostów i przetestować mosty pod kątem nich przed uruchomieniem. Luki te można podzielić na cztery następujące obszary.
Słaba weryfikacja w łańcuchu
W przypadku prostych mostów, szczególnie tych zaprojektowanych dla określonych aplikacji DApp, weryfikacja w łańcuchu jest ograniczona do minimum. Mosty te opierają się na scentralizowanym backendie do wykonywania podstawowych operacji, takich jak wydobywanie, spalanie i przesyłanie tokenów, podczas gdy wszystkie weryfikacje są przeprowadzane poza łańcuchem.
Natomiast inne typy mostów wykorzystują inteligentne kontrakty do sprawdzania wiadomości i przeprowadzania weryfikacji w łańcuchu. W tym scenariuszu, gdy użytkownik wpłaca środki do łańcucha, inteligentny kontrakt generuje podpisaną wiadomość i zwraca podpis w transakcji. Podpis ten służy jako dowód wpłaty i służy do weryfikacji żądania wypłaty użytkownika w drugim łańcuchu. Proces ten powinien zapobiegać różnym atakom na bezpieczeństwo, w tym atakom polegającym na powtarzaniu i sfałszowanym zapisie depozytów.
Jeśli jednak podczas procesu sprawdzania poprawności w łańcuchu wystąpi luka w zabezpieczeniach, osoba atakująca może wyrządzić poważne szkody. Na przykład, jeśli most wykorzystuje drzewo Merkle do sprawdzenia rekordu transakcji, osoba atakująca może wygenerować sfałszowane dowody. Oznacza to, że mogą ominąć weryfikację dowodu i wygenerować nowe tokeny na swoim koncie, jeśli proces weryfikacji jest podatny na ataki.
Niektóre mosty realizują koncepcję „opakowanych tokenów”. Na przykład, gdy użytkownik przesyła DAI z Ethereum do łańcucha BNB, jego DAI jest pobierany z kontraktu Ethereum, a równoważna ilość zapakowanego DAI jest wydawana w łańcuchu BNB.
Jeśli jednak ta transakcja nie zostanie odpowiednio zweryfikowana, osoba atakująca może wdrożyć złośliwy kontrakt w celu skierowania opakowanych tokenów z mostu na nieprawidłowy adres poprzez manipulację funkcją.
Atakujący potrzebują również, aby ofiary zatwierdziły umowę pomostową w celu przesłania tokenów za pomocą funkcji „transferFrom” w celu usunięcia zasobów z umowy pomostowej.
Niestety sytuacja jest jeszcze gorsza, ponieważ wiele mostów żąda od użytkowników DApp nieskończonej zgody na token. Jest to powszechna praktyka, która obniża opłaty za gaz, ale stwarza dodatkowe ryzyko, umożliwiając inteligentnej umowie dostęp do nieograniczonej liczby tokenów z portfela użytkownika. Atakujący mogą wykorzystać brak walidacji i nadmierną zgodę do przesyłania tokenów od innych użytkowników do siebie.
Słaba walidacja poza łańcuchem
W niektórych systemach mostowych serwer backendowy znajdujący się poza łańcuchem odgrywa kluczową rolę w weryfikacji legalności wiadomości wysyłanych z łańcucha bloków. W tym przypadku skupiamy się na weryfikacji transakcji depozytowych.
Most blockchain z walidacją poza łańcuchem działa w następujący sposób:
Użytkownicy wchodzą w interakcję z DApp, aby zdeponować tokeny w inteligentnym kontrakcie w łańcuchu źródłowym.
Następnie DApp wysyła skrót transakcji depozytowej do serwera zaplecza za pośrednictwem interfejsu API.
Hash transakcji podlega kilkukrotnej weryfikacji 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 pozwala użytkownikowi na wycofanie tokenów z łańcucha źródłowego.
Serwer zaplecza musi upewnić się, że przetwarzana przez niego transakcja depozytowa rzeczywiście miała miejsce i nie została sfałszowana. Ten serwer zaplecza określa, czy użytkownik może wypłacić tokeny w łańcuchu docelowym i dlatego jest celem o dużej wartości dla atakujących.
Serwer zaplecza musi sprawdzić strukturę wyemitowanego zdarzenia transakcji, a także adres kontraktu, który wyemitował zdarzenie. Jeśli to drugie zostanie zaniedbane, osoba atakująca może wdrożyć złośliwą umowę w celu sfałszowania zdarzenia wpłaty o tej samej strukturze, co uzasadnione zdarzenie wpłaty.
Jeśli serwer zaplecza nie sprawdzi, który adres wyemitował zdarzenie, uzna to za prawidłową transakcję i podpisze wiadomość. Osoba atakująca może następnie wysłać skrót transakcji do backendu, omijając weryfikację i umożliwiając wycofanie tokenów z łańcucha docelowego.
Niewłaściwa obsługa tokenów natywnych
Mosty przyjmują różne podejścia do obsługi tokenów natywnych i tokenów użytkowych. Na przykład w sieci Ethereum tokenem natywnym jest ETH, a większość tokenów użytkowych jest zgodna ze standardem ERC-20.
Kiedy użytkownik zamierza przenieść swoje ETH do innej sieci, musi najpierw zdeponować je w umowie pomostowej. Aby to osiągnąć, użytkownik po prostu dołącza ETH do transakcji, a kwotę ETH można sprawdzić, czytając pole „msg.value” transakcji.
Wpłata tokenów ERC-20 różni się znacznie od wpłaty ETH. Aby zdeponować token ERC-20, użytkownik musi najpierw pozwolić umowie pomostowej na wydanie swoich tokenów. Po zatwierdzeniu tego i zdeponowaniu tokenów w umowie pomostowej, umowa albo spali tokeny użytkownika za pomocą funkcji „burnFrom()”, albo przeniesie token użytkownika do umowy za pomocą funkcji „transferFrom()”.
Jednym ze sposobów rozróżnienia tego jest użycie instrukcji if-else w ramach tej samej funkcji. Innym podejściem jest utworzenie dwóch oddzielnych funkcji do obsługi każdego scenariusza. Próba wpłaty ETH za pomocą funkcji depozytu ERC-20 może skutkować utratą tych środków.
Podczas obsługi wniosków o wpłatę ERC-20 użytkownicy zazwyczaj podają adres tokena jako dane wejściowe do funkcji wpłaty. Stwarza to znaczne ryzyko, ponieważ podczas transakcji mogą wystąpić niezaufane połączenia zewnętrzne. Wdrażanie białej listy zawierającej tylko tokeny obsługiwane przez most jest powszechną praktyką mającą na celu minimalizację ryzyka. Jako argumenty można przekazywać wyłącznie adresy umieszczone na białej liście. Zapobiega to wywołaniom zewnętrznym, ponieważ zespół projektowy przefiltrował już adres tokena.
Jednak problemy mogą również pojawić się, gdy mosty obsługują transfer tokenu natywnego między łańcuchami, ponieważ token natywny nie ma adresu. Adres zerowy (0x000...0) jest reprezentatywny dla tokenu natywnego. Może to być problematyczne, ponieważ przekazanie adresu zerowego do funkcji może ominąć weryfikację białej listy, nawet jeśli zostanie nieprawidłowo zaimplementowane.
Kiedy kontrakt pomostowy wywołuje „transferFrom”, aby przenieść zasoby użytkownika do kontraktu, zewnętrzne wywołanie adresu zerowego zwraca wartość false, ponieważ w adresie zerowym nie ma zaimplementowanej funkcji „transferFrom”. Jednakże transakcja może nadal nastąpić, jeśli kontrakt nie obsługuje odpowiednio wartości zwracanej. Stwarza to możliwość atakującym przeprowadzenia transakcji bez przekazywania jakichkolwiek tokenów do kontraktu.
Błędna konfiguracja
W większości mostów blockchain uprzywilejowana rola jest odpowiedzialna za umieszczanie na białej lub czarnej liście tokenów i adresów, przypisywanie lub zmianę sygnatariuszy oraz inne krytyczne konfiguracje. Zapewnienie dokładności wszystkich konfiguracji jest kluczowe, ponieważ nawet pozornie błahe niedopatrzenia mogą prowadzić do znacznych strat.
W rzeczywistości miał miejsce incydent, w którym atakujący pomyślnie ominął weryfikację rekordu transferu z powodu błędnej konfiguracji. Zespół projektowy na kilka dni przed włamaniem wdrożył aktualizację protokołu, która obejmowała zmianę zmiennej. Zmienna została użyta do reprezentowania wartości domyślnej zaufanej wiadomości. Ta zmiana spowodowała, że wszystkie wiadomości były automatycznie uznawane za sprawdzone, co umożliwiło osobie atakującej przesłanie dowolnej wiadomości i przejście procesu weryfikacji.
Jak poprawić bezpieczeństwo mostu
Cztery typowe luki w zabezpieczeniach mostów wyjaśnione powyżej pokazują wyzwania związane z zapewnieniem bezpieczeństwa w połączonym ekosystemie blockchain. Należy wziąć pod uwagę istotne kwestie dotyczące obsługi każdej z tych luk i żaden pojedynczy podręcznik nie ma zastosowania do wszystkich z nich.
Na przykład zapewnienie ogólnych wytycznych zapewniających bezbłędny proces weryfikacji jest wyzwaniem, ponieważ każdy most ma inne wymagania weryfikacyjne. Najbardziej skuteczną metodą zapobiegania obejściu weryfikacji jest dokładne przetestowanie mostu pod kątem wszystkich możliwych wektorów ataku i upewnienie się, że logika weryfikacji jest prawidłowa.
Podsumowując, konieczne jest przeprowadzenie rygorystycznych testów pod kątem potencjalnych ataków i zwrócenie szczególnej uwagi na najczęstsze luki w zabezpieczeniach mostów.
Zamykające myśli
Ze względu na swoją wysoką wartość mosty krzyżowo-łańcuchowe od dawna są celem atakujących. Konstruktorzy mogą wzmocnić bezpieczeństwo swoich mostów, przeprowadzając dokładne testy przed wdrożeniem i angażując się w audyty stron trzecich, zmniejszając ryzyko niszczycielskich włamań, które nękały mosty w ciągu ostatnich kilku lat. Mosty mają kluczowe znaczenie w świecie wielołańcuchowym, ale bezpieczeństwo musi być główną kwestią podczas projektowania i budowania efektywnej infrastruktury Web3.
Dalsze czytanie
Co to jest most Blockchain?
Co to jest interoperacyjność między łańcuchami?
Trzy popularne mosty kryptograficzne i sposób ich działania
Czym są tokeny opakowane?
Zastrzeżenie i ostrzeżenie o ryzyku: Niniejsza treść jest prezentowana użytkownikowi w stanie „takim, jakim jest” wyłącznie w celach informacyjnych i edukacyjnych, bez jakichkolwiek oświadczeń ani gwarancji. Nie należy jej interpretować jako porady finansowej, prawnej lub innej profesjonalnej, ani też nie ma na celu rekomendowania zakupu jakiegokolwiek konkretnego produktu lub usługi. Powinieneś zasięgnąć porady u odpowiednich profesjonalnych doradców. Jeśli artykuł został napisany przez osobę trzecią, pamiętaj, że wyrażone poglądy należą do osoby trzeciej i niekoniecznie odzwierciedlają poglądy Binance Academy. Aby uzyskać więcej informacji, prosimy o zapoznanie się z naszym pełnym zastrzeżeniem tutaj. Ceny aktywów cyfrowych mogą być zmienne. Wartość Twojej inwestycji może spaść lub wzrosnąć, a zainwestowana kwota może nie zostać zwrócona. Ponosisz wyłączną odpowiedzialność za swoje decyzje inwestycyjne, a Binance Academy nie ponosi odpowiedzialności za jakiekolwiek straty, które możesz ponieść. Materiał ten nie powinien być interpretowany jako porada finansowa, prawna lub inna profesjonalna porada. Aby uzyskać więcej informacji, zapoznaj się z naszymi Warunkami użytkowania i Ostrzeżeniem o ryzyku.

