5 podatności smart kontraktów, o których musisz wiedzieć: Chroń swoje fundusze i aktywa dzięki tym wskazówkom

5 podatności smart kontraktów, o których musisz wiedzieć: Chroń swoje fundusze i aktywa dzięki tym wskazówkom

23 grudnia

/

Blockchain, smart contracts

Smart kontrakty są samowykonalnymi umowami, w których warunki umowy między kupującym a sprzedającym są bezpośrednio zapisane w liniach kodu. Kod i zawarte w nim umowy są przechowywane i replikowane w sieci blockchain.

Jako specjaliści w tworzeniu smart kontraktów, przygotowaliśmy listę powszechnych podatności smart kontraktów, które mogą dotknąć użytkowników oraz kroki, które można podjąć w celu ich zabezpieczenia.

Ataki Reentrancy

Ataki te pozwalają atakującemu na wielokrotne wywoływanie funkcji w inteligentnym kontrakcie i drenaż środków kontraktu.

W ataku reentrancji, atakujący tworzy złośliwy kontrakt, który wywołuje podatny kontrakt, a następnie czeka, aż podatny kontrakt wykona funkcję, która wysyła fundusze do kontraktu atakującego. Kontrakt atakującego natychmiast ponownie wywołuje podatny kontrakt, zanim ten zdąży zaktualizować swój stan wewnętrzny. Proces ten może być powtarzany wielokrotnie, co pozwala atakującemu na wydrenowanie funduszy podatnego kontraktu.

Ataki reentrancyjne mogą być szczególnie niebezpieczne, ponieważ często są trudne do wykrycia i mogą być przeprowadzane ukradkiem przez dłuższy czas. Mogą być również trudne do zapobieżenia, ponieważ często opierają się na lukach w projekcie podatnego kontraktu.

Aby zabezpieczyć się przed atakami reentrancji, twórcy inteligentnych kontraktów powinni wdrożyć środki takie jak użycie muteksów (mechanizmów blokujących), aby zapobiec wielokrotnemu wywoływaniu funkcji kontraktu, a także starannie przejrzeć kod kontraktu pod kątem wszelkich potencjalnych luk.

Niezamknięta wysyłka

Ta luka umożliwia atakującemu wysłanie dużej ilości tokenów do inteligentnego kontraktu, potencjalnie powodując, że zabraknie mu gazu i zawiedzie.

W przypadku ataku typu "unchecked send", atakujący tworzy złośliwy kontrakt, który wysyła dużą liczbę tokenów do podatnego kontraktu w pojedynczej transakcji. Wrażliwy kontrakt może nie mieć odpowiednich zabezpieczeń, aby obsłużyć duży napływ tokenów, co potencjalnie może spowodować, że zabraknie mu paliwa i zawiedzie. Może to spowodować, że kontrakt stanie się bezużyteczny, potencjalnie prowadząc do utraty funduszy lub aktywów przez użytkowników, którzy są zależni od kontraktu.

Niekontrolowane ataki wysyłania mogą być szczególnie niebezpieczne, ponieważ mogą być trudne do wykrycia i mogą mieć poważne konsekwencje dla użytkowników. Aby chronić przed atakami typu unchecked send, twórcy inteligentnych kontraktów powinni wdrożyć zabezpieczenia zapobiegające dużemu napływowi tokenów, takie jak ustalenie limitów ilości tokenów, które można wysłać w pojedynczej transakcji.

Przepełnienie/niedopełnienie liczby całkowitej

Ta luka występuje, gdy inteligentny kontrakt nie obsługuje poprawnie operacji arytmetycznych z udziałem liczb całkowitych, potencjalnie umożliwiając atakującemu manipulowanie stanem kontraktu.

Przepełnienie liczby całkowitej występuje, gdy wartość całkowita przekracza maksymalną wartość, która może być przechowywana w przydzielonej liczbie bitów. Może to spowodować, że wartość "zawinie się" i stanie się bardzo małą liczbą ujemną. Niedopełnienie liczby całkowitej występuje, gdy wartość całkowita spada poniżej minimalnej wartości, która może być przechowywana w przydzielonej liczbie bitów. Może to spowodować, że wartość "zawinie się" i stanie się bardzo dużą liczbą dodatnią.

Te luki mogą być wykorzystane przez atakującego do manipulowania stanem kontraktu i potencjalnie uzyskania nieautoryzowanego dostępu do funduszy lub aktywów. Na przykład, atakujący może być w stanie użyć przepełnienia liczby całkowitej, aby spowodować, że kontrakt przeleje więcej środków niż zamierzano, lub użyć niedopełnienia liczby całkowitej, aby spowodować, że kontrakt przeleje mniej środków niż zamierzano.

Aby zapobiec podatności na przepełnienie i niedopełnienie liczb całkowitych w inteligentnych kontraktach, deweloperzy powinni dokładnie przejrzeć kod i wprowadzić zabezpieczenia. Jednym ze sposobów na to jest użycie bibliotek lub narzędzi, które mogą obsługiwać operacje arytmetyczne z udziałem dużych liczb całkowitych. Inną opcją jest użycie typów danych, które są w stanie przechowywać duże wartości całkowite bez doświadczania przepełnienia lub niedopełnienia. Ważne jest, aby programiści wdrożyli te środki w celu ochrony przed podatnościami, które mogłyby zostać wykorzystane przez atakujących.

Brak kontroli dostępu

Jeśli inteligentny kontrakt nie ma odpowiednich środków kontroli dostępu, może być podatny na nieautoryzowane modyfikacje lub ataki.

Jeśli inteligentny kontrakt nie posiada odpowiednich środków kontroli dostępu, może być podatny na ataki lub nieautoryzowane modyfikacje. Na przykład, osoba atakująca może być w stanie manipulować stanem kontraktu lub uzyskać dostęp do wrażliwych danych, jeśli kontrakt nie posiada odpowiednich zabezpieczeń przed nieautoryzowanym dostępem.

W celu ochrony przed lukami związanymi z brakiem kontroli dostępu, twórcy inteligentnych kontraktów powinni wdrożyć środki takie jak użycie modyfikatorów dostępu (np. "public", "private", "internal") w celu kontroli dostępu do funkcji i danych kontraktu oraz użycie kontroli dostępu opartej na rolach w celu przyznania dostępu do określonych funkcji lub danych określonym grupom lub osobom.

Brak walidacji danych wejściowych

Jeśli inteligentny kontrakt nie weryfikuje prawidłowo danych wejściowych, może być podatny na złośliwe dane wstrzykiwane do kontraktu, potencjalnie umożliwiając atakującemu manipulowanie stanem kontraktu.

Jeśli inteligentny kontrakt nie weryfikuje prawidłowo danych wejściowych, może być podatny na wstrzyknięcie do kontraktu złośliwych danych, co potencjalnie pozwala atakującemu na manipulowanie stanem kontraktu. Na przykład, atakujący może być w stanie wykorzystać brak walidacji danych wejściowych, aby spowodować, że kontrakt przeleje środki na nieautoryzowany adres lub uzyskać dostęp do wrażliwych danych.

Aby zabezpieczyć się przed lukami związanymi z brakiem walidacji danych wejściowych, twórcy inteligentnych kontraktów powinni wdrożyć środki służące do walidacji danych, które są wprowadzane do kontraktu. Może to obejmować użycie bibliotek lub narzędzi do sprawdzania poprawności typów, zakresów i formatów danych, a także wdrożenie kontroli w celu zapewnienia, że dane spełniają określone kryteria, zanim zostaną zaakceptowane przez kontrakt.

Podsumowanie

Luki w smart kontraktach mogą mieć poważne konsekwencje dla użytkowników, w tym utratę funduszy, niemożność dostępu do aktywów oraz narażenie wrażliwych informacji osobistych lub finansowych. Ważne jest, aby deweloperzy i użytkownicy byli świadomi potencjalnych podatności i podejmowali kroki w celu ochrony przed nimi. W tym artykule omówiliśmy sposoby zabezpieczania smart kontraktów, w tym wdrażanie muteksów w celu zapobiegania wielokrotnym wywołaniom funkcji kontraktu, ustalanie limitów ilości tokenów, które można przesłać w pojedynczej transakcji, korzystanie z bibliotek lub narzędzi obsługujących operacje arytmetyczne obejmujące duże liczby całkowite, wdrażanie środków kontroli dostępu oraz walidację danych wprowadzanych do kontraktu.

Never miss a story

Stay updated about Nextrope news as it happens.

You are subscribed

More of our Blog

See the latest collection of articles produced by our seasoned professionals

Zakres projektu

API/Backend
Development

Strony Internetowe
Development

Aplikacje Mobilne
Development

Projektowanie
Design

Blockchain
Solutions

Usługi Internetowe
Services

Next Enterprises zapewniło bankowi usługę technologiczną potrzebną do wprowadzenia projektu opartego na blockchainie. W ramach współpracy firma zaprojektowała usługę w modelu SaaS. Rozwiązanie przechowuje na swoich serwerach, udostępniając je bankowi i jednocześnie gwarantując jakość zgodną ze standardami zawartymi w umowie.

Tomasz Sienicki

Tomasz Sienicki

Blockchain Strategy Manager, Alior Bank

Współpraca z zespołem Nextrope wyznacza zupełnie nowy poziom jakości, innowacyjnych rozwiązań i profesjonalnych usług. Jeśli potrzebujesz wsparcia przy technologii blockchain, trafiłeś na profesjonalistów. Zdecydowanie polecam!

Kajetan Komar-Komarowski

Kajetan Komar-Komarowski

Współzałożyciel i prawnik Lex Secure

W listopadzie 2017 r. opublikowaliśmy grę wykorzystującą inteligentne kontrakty jako mechanizm dystrybucji i transakcji. Zespół Nextrope wspierał nas w najważniejszej części projektu - tworzeniu i testowaniu bezpieczeństwa inteligentnych kontraktów blockchain w sieci Ethereum. Mogę gorąco polecić Mateusza i jego zespół - to prawdziwi eksperci w dziedzinie blockchaina.

Maciej Skrzypczak

Maciej Skrzypczak

CEO Gameset