Bezpieczeństwo - Rodzaje oszustw

2.9 Smartcontracty – Luki w umowach
W technologii blockchain funkcjonują zaimplementowane programy zwane inteligentnymi umowami, czyli zaprogramowane zestawy reguł, które są automatycznie egzekwowane po spełnieniu wcześniej zdefiniowanych warunków. I to egzekwowanie tych inteligentnych kontraktów potwierdza znaczenie łańcucha bloków.
W przeciwieństwie do większości struktur danych, po wdrożeniu smartcontractu w łańcuchu blokowym, najczęściej nie ma już możliwości wprowadzenia jakichkolwiek zmian. Dlatego trzeba mieć świadomość, że nie wykryty błąd na etapie programowania może nieść ze sobą ogromne niebezpieczeństwo. Naprawa odbywa się najczęściej poprzez tworzenie i wdrożenie nowej wersji smartcontractu, co jest bardzo kosztowne czasowo.
Podstawowe cechy smartcontractów:
-
-
- Automatyzacja i dokładność – Kontrakt samoczynnie wykonuje określone działanie, kiedy warunki zawarte w kodzie zostaną spełnione. Cecha ta pozwala w sposób bezwzględny i uczciwy wykonywać założenia umowy, bez sugerowania się innymi czynnikami niż te zawarte w kodzie.
- Bezpieczeństwo i niezmienność – Dane zapisywane są na blockchainie, który używając kryptografii gwarantuje bezpieczeństwo i niezmienność danych.
- Bezpośredniość i decentralizacja – Wykonanie działania przez smartcontract nie wymaga “zaufanej” trzeciej strony, takiej jak bank czy notariusz.
- Transparentność – Zdecydowana większość smartcontractów działa na zasadzie opensource (“otwarte źródło”), czyli kod źródłowy kontraktu jest dostępny publicznie do wglądu i ewentualnej weryfikacji.
-
Możliwość tworzenia smartcontractów jest rozwiązaniem rewolucyjnym w technologii blockchain, gdyż znajduje zastosowanie w wielu dziedzinach naszego życia, takich jak np:
-
-
- Transakcje finansowe
- Tworzenie zdecentralizowanych, autonomicznych organizacji typu DAO
- Zarządzanie systemami głosowania
- Nadawanie i weryfikacja praw autorskich i własności intelektualnych
-
Zagrożenia związane z “inteligentnymi umowami”
Potencjał smartcontractów do automatyzacji procesów na blockchainie jest bardzo duży, jednak jak każda nowa technologia, nie są one odporne w 100% na luki bezpieczeństwa. Z punkty widzenia zwykłego, niedoświadczonego użytkownika, zagrożenie to jest bardzo trudne do wykrycia. Mimo, że kody źródłowe kontraktów są zazwyczaj ogólnodostępne, to dla osoby nieznającej danego języka programowania, zrozumienie ich działania jest trudne.
Chociaż technologia blockchain sama w sobie jest bardzo bezpieczna, błędy w kodzie smart kontraktów mogą prowadzić do utraty funduszy lub innych niechcianych zachowań. Warto zauważyć, że luki które pojawiają się w kontraktach, mogą pojawić się nieumyślnie, ale mogą też być zaimplementowane celowo, aby oszukać inwestorów.
Poniżej kilka rodzajów błędów jakie mogą się pojawić:
-
-
- Reentrancy Attack (Atak rekursywnego wywołania) – To jeden z bardziej znanych ataków na smartcontracty, zwłaszcza na platformie Ethereum. Atak ten polega na wielokrotnym wywołaniu funkcji kontraktu zanim poprzednia transakcja zostanie zakończona, co pozwala atakującemu na niewłaściwe manipulowanie stanem kontraktu.
- Back door – Jest to bardzo groźna grupa błędów w kodzie, które pozwalają twórcom na nieuczciwe praktyki. np na wycofanie środków w dowolnym momencie, popularnie zwany rugpullem. Tego typu błędy implementowane są w kodzie celowo, z zamiarem wykorzystania w dogodnym momencie. Back doory często są bardzo dobrze zakamuflowane w kodzie, są trudne do wykrycia nawet dla doświadczonych programistów. Oszustwa tego typu są szczególnie popularne na platformach DeFi.
- Błędy logiki – Są to zazwyczaj błędy w zasadniczej logice kontraktu, które prowadzą do nieoczekiwanego, nieprzewidzianego zachowania. Błędy te zazwyczaj pojawiają się nieświadomie i wynikają z błędów programistów.
- Problemy z Oracles (wyroczniami) – Są to błędy wynikające z nieprawidłowego lub zmanipulowanego źródła informacji zewnętrznych “oracles”. Pobranie niewłaściwych danych do smartcontraktu, może spowodować niepożądane działanie i ryzyko wykorzystania tej luki przez “złych graczy”.
- Błędy matematyczne – Takie jak przepełnienie (overflow) lub niedomknięcie (underflow), które prowadzą do nieprawidłowych obliczeń, co w konsekwencji może prowadzić do nadużyć.
- Nieodpowiednie zarządzanie uprawnieniami – Jeśli smartcontract nie zarządza właściwie uprawnieniami, nieautoryzowani użytkownicy mogą uzyskać dostęp do funkcji, które powinny być dla nich niedostępne.
-