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ą fundamentalne znaczenie dla osiągnięcia interoperacyjności w przestrzeni blockchain. Bezpieczeństwo mostów blockchain jest sprawą najwyższej wagi. Niektóre typowe luki w zabezpieczeniach mostu obejmują problemy z walidacją w łańcuchu i poza łańcuchem, złe zarządzanie tokenami natywnymi i błędne konfiguracje. Zaleca się przetestowanie mostu pod kątem wszystkich możliwych wektorów ataku, aby zapewnić solidną logikę weryfikacji.
Wstęp
Most blockchain (lub „most blockchain”) to protokół łączący dwa łańcuchy bloków, aby umożliwić interakcję między nimi. Jeśli posiadasz bitcoiny, ale chcesz uczestniczyć w działalności DeFi w sieci Ethereum, most blockchain pozwala to zrobić bez konieczności sprzedaży bitcoinów.
Mosty Blockchain mają fundamentalne znaczenie dla osiągnięcia interoperacyjności w przestrzeni blockchain. Działają, korzystając z różnych walidacji w łańcuchu i poza łańcuchem, dlatego prezentują różne luki w zabezpieczeniach.
Dlaczego bezpieczeństwo mostów jest istotne?
Ogólnie rzecz biorąc, most przechowuje token, który użytkownik chce przenieść z jednego łańcucha bloków do drugiego. Mosty są często wdrażane jako inteligentne kontrakty i przechowują znaczną liczbę tokenów w miarę kumulacji transferów między łańcuchami, co czyni je potencjalnie lukratywnymi celami dla hakerów.
Co więcej, mosty blockchain mają wiele punktów podatnych na ataki, ponieważ obejmują wiele komponentów. Mając to na uwadze, szkodliwi użytkownicy są motywowani do atakowania aplikacji międzyłańcuchowych w celu kradzieży dużych ilości danych.
Według szacunków CertiK w 2022 r. ataki na mosty spowodowały straty na kwotę ponad 1,3 miliarda dolarów, co stanowi 36% całkowitych strat tego roku.
Typowe luki w zabezpieczeniach mostu
Aby zwiększyć bezpieczeństwo mostów, ważne jest zrozumienie ich typowych luk w zabezpieczeniach i przetestowanie ich przed wypuszczeniem na rynek. 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 wydawanie, nagrywanie i przesyłanie tokenów, podczas gdy wszystkie weryfikacje są przeprowadzane poza łańcuchem.
Z drugiej strony inne typy mostów wykorzystują inteligentne kontrakty do sprawdzania wiadomości i przeprowadzania weryfikacji w łańcuchu. W tym scenariuszu, gdy użytkownik zdeponuje środki na blockchainie, inteligentny kontrakt generuje podpisaną wiadomość i zwraca podpis w odpowiedniej transakcji. Podpis ten służy jako dowód wpłaty i służy do weryfikacji żądania wypłaty użytkownika na innym łańcuchu bloków. Proces ten musi umożliwiać zapobieganie różnym atakom na bezpieczeństwo, w tym atakom polegającym na powtarzaniu transakcji i sfałszowanym zapisie depozytów.
Jeśli jednak podczas procesu sprawdzania poprawności w łańcuchu wystąpi luka w zabezpieczeniach, haker może spowodować poważne szkody. Na przykład, jeśli most wykorzystuje drzewo Merkle do sprawdzenia rekordu transakcji, osoba atakująca może sfałszować sfałszowane dowody. Oznacza to, że jeśli proces weryfikacji jest podatny na ataki, mogą ominąć weryfikację dowodu i utworzyć nowe tokeny na swoich kontach.
Niektóre mosty realizują koncepcję „opakowanych tokenów”. Na przykład, gdy użytkownik przeniesie DAI z Ethereum do BNB Chain, jego DAI zostanie wycofany z kontraktu Ethereum i równoważna ilość zapakowanego DAI zostanie wyemitowana w BNB Chain.
Jeśli jednak ta transakcja nie zostanie odpowiednio zweryfikowana, haker może wdrożyć złośliwy kontrakt i manipulować funkcją, aby skierować opakowane tokeny mostu na nieprawidłowy adres.
Hakerzy potrzebują od ofiar zatwierdzenia umowy pomostowej w celu przesłania tokenów za pomocą funkcji „transferFrom” i kradzieży aktywów kontraktowych.
Niestety problem ten pogłębia się, ponieważ wiele mostów żąda nieograniczonego dostępu (nieskończonego zatwierdzania tokenów) do tokenów użytkowników DApp. Jest to powszechna praktyka, która zmniejsza opłaty za gaz, ale stwarza dodatkowe ryzyko, umożliwiając inteligentnej umowie dostęp do nieograniczonej liczby tokenów z portfela użytkownika. Niektórzy hakerzy potrafią wykorzystać brak weryfikacji i nieograniczony dostęp do kradzieży tokenów innym użytkownikom.
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 skupimy 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 inteligentnej umowie na źródłowym łańcuchu bloków.
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 uznany za uzasadniony, 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 początkowego blockchainu.
Serwer zaplecza musi zapewnić, że przetworzona transakcja depozytowa rzeczywiście miała miejsce i nie została sfałszowana. To właśnie ten serwer określa, czy użytkownik może wypłacić tokeny na docelowym blockchainie. Dlatego jest cennym celem dla hakerów.
Serwer zaplecza musi sprawdzić strukturę zdarzenia emitowanego przez transakcję, a także adres kontraktu, który wyemitował to zdarzenie. Jeśli to drugie zostanie zaniedbane, haker może wdrożyć złośliwą umowę w celu sfałszowania zdarzenia depozytowego o tej samej strukturze, co uzasadnione zdarzenie.
Jeśli serwer zaplecza nie sprawdzi, który adres wywołał zdarzenie, uzna tę transakcję za ważną i podpisze wiadomość. Haker może wysłać hash transakcji do backendu, omijając weryfikację i umożliwiając mu wycofanie tokenów z blockchainu.
Złe zarządzanie tokenami natywnymi
Mosty stosują różne podejścia do radzenia sobie z tokenami natywnymi i tokenami użytkowymi. 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 chce przenieść ETH na inny blockchain, musi najpierw zdeponować tokeny w umowie pomostowej. Aby to zrobić, użytkownik po prostu dołącza ETH do transakcji, a kwotę można pobrać za pomocą funkcji „msg.value” w polu 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 i zdeponowaniu tokenów w umowie pomostowej, umowa spali tokeny użytkownika za pomocą funkcji „burnFrom()” lub przekaże tokeny 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 przy użyciu funkcji depozytu ERC-20 może skutkować utratą środków.
W przypadku wniosków o wpłatę ERC-20 użytkownicy zazwyczaj podają adres tokena jako dane wejściowe do funkcji wpłaty. Operacja ta wiąże się z ryzykiem, ponieważ w trakcie transakcji mogą wystąpić zawodne 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 akceptowane są wyłącznie adresy umieszczone na białej liście. Pozwala to uniknąć wywołań zewnętrznych, ponieważ zespół projektowy przefiltrował już adres tokena.
Jednak problemy mogą pojawić się również wtedy, gdy mosty obsługują transfer międzyłańcuchowy tokenów natywnych, ponieważ token natywny nie ma adresu. Adres zerowy (0x000...0) jest reprezentatywny dla tokenu natywnego. Może to być problematyczne, ponieważ podanie adresu zerowego do funkcji może spowodować ominięcie sprawdzania białej listy, nawet jeśli zostanie nieprawidłowo zaimplementowane.
Kiedy kontrakt pomostowy wywołuje funkcję „transferFro” w celu przesłania zasobów użytkownika do kontraktu, zewnętrzne wywołanie adresu zerowego zwraca wartość false, ponieważ pod adresem zerowym nie zaimplementowano funkcji „transferFrom”. Jednak transakcja może nadal nastąpić, jeśli kontrakt nie obsługuje odpowiednio wartości zwracanej. Stwarza to szansę dla hakerów na wykonanie transakcji bez przenoszenia jakichkolwiek tokenów do umowy.
Nieprawidłowa konfiguracja
W większości mostów blockchain uprzywilejowana rola jest odpowiedzialna za umieszczanie na białej liście tokenów i adresów, przypisywanie lub zmianę osób podpisujących oraz inne krytyczne ustawienia. Zapewnienie dokładności wszystkich ustawień jest niezwykle istotne, ponieważ nawet pozornie błahe niedopatrzenia mogą prowadzić do znacznych strat.
W rzeczywistości miał miejsce incydent, w którym hakerowi udało się ominąć sprawdzanie dziennika transferu z powodu nieprawidłowej konfiguracji. Kilka dni przed atakiem zespół projektowy wdrożył aktualizację protokołu, która polegała na zmianie zmiennej. Zmienna została użyta do reprezentowania wartości domyślnej zaufanej wiadomości. Z powodu tej zmiany wszystkie wiadomości były automatycznie uznawane za zweryfikowane, co umożliwiło osobie atakującej wysłanie dowolnej wiadomości i pomyślne przejście procesu weryfikacji.
Jak poprawić bezpieczeństwo mostu
Cztery najczęstsze luki w zabezpieczeniach mostów wyjaśnione powyżej podkreślają wyzwania związane z zapewnieniem bezpieczeństwa w połączonym ekosystemie blockchain. Należy wziąć pod uwagę istotne kwestie dotyczące postępowania z każdą z tych luk i nie ma przewodnika, który miałby zastosowanie do wszystkich z nich.
Na przykład zapewnienie ogólnych wytycznych zapewniających bezbłędny proces weryfikacji jest wyzwaniem, ponieważ każdy most ma własne wymagania dotyczące weryfikacji. Najskuteczniejszym podejściem do 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 solidna i spójna.
Krótko mówiąc, konieczne jest przeprowadzenie rygorystycznych testów pod kątem możliwych ataków i zwrócenie szczególnej uwagi na najczęstsze luki w zabezpieczeniach mostów.
Uwagi końcowe
Ze względu na swoją wysoką wartość mosty międzyłańcuchowe od dawna są celem hakerów. Deweloperzy mogą poprawić bezpieczeństwo swoich mostów poprzez testy przed wdrożeniem i audyty stron trzecich, zmniejszając ryzyko niszczycielskich ataków hakerskich, takich jak te z ostatnich lat. Mosty są niezbędne w świecie z wieloma łańcuchami bloków, ale bezpieczeństwo musi być priorytetem przy projektowaniu i rozwijaniu skutecznej infrastruktury Web3.
Dalsza lektura
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?
Informacja o ryzyku i zastrzeżenie: Niniejsza treść jest prezentowana użytkownikowi w stanie „takim, jakim jest” wyłącznie w celach informacyjnych i edukacyjnych, bez jakiejkolwiek gwarancji. Treści nie należy interpretować jako porady finansowej, prawnej lub zawodowej i nie mają na celu rekomendowania zakupu żadnego konkretnego produktu lub usługi. Powinieneś sam zasięgnąć porady u profesjonalnych doradców. W przypadku wkładów i artykułów przesłanych przez zewnętrznych autorów, należy pamiętać, że wyrażone opinie są opiniami odpowiedniego autora i niekoniecznie odzwierciedlają opinie Binance Academy. Aby uzyskać więcej informacji, przeczytaj nasze zastrzeżenie tutaj. Ceny aktywów cyfrowych mogą być zmienne. Wartość Twojej inwestycji może wzrosnąć lub zmniejszyć i możesz nie odzyskać zainwestowanej kwoty. Ponosisz wyłączną odpowiedzialność za swoje decyzje inwestycyjne, a Binance Academy nie ponosi odpowiedzialności za żadne Twoje możliwe straty. Materiał ten nie powinien być interpretowany jako porada finansowa, prawna lub profesjonalna. Aby uzyskać więcej informacji, zapoznaj się z naszymi Warunkami użytkowania i Informacją o ryzyku.

