Technologia Blockchain wzbudziła zainteresowanie przedsiębiorstw na całym świecie. Jego zalety, w tym niezmienność i przejrzystość, skłoniły starsze firmy spoza branży finansowej, takie jak BMW i Bosch, do eksperymentowania z inteligentnymi kontraktami w celu tworzenia bardziej wydajnych łańcuchów dostaw i tworzenia inteligentniejszych produktów inżynieryjnych.

Inteligentne kontrakty, które zasadniczo są oprogramowaniem zakodowanym w konkretnym łańcuchu bloków, formalizują i realizują umowy między wieloma stronami, eliminując potrzebę korzystania z zaufanego pośrednika będącego stroną trzecią, oszczędzając czas i umożliwiając weryfikację opartą na konsensusie wielu stron. Można ich używać do różnych czynności, takich jak testamenty, gry w szachy, a nawet przenoszenie aktów prawnych.

Jednak pomimo całego rewolucyjnego potencjału i szeroko reklamowanych możliwości, jakie obiecuje blockchain, liczba napadów na inteligentne kontrakty wzrosła ponad 12-krotnie w ciągu ostatnich dwóch lat. Jeśli są tacy mądrzy, dlaczego obserwujemy tak ogromny wzrost liczby napadów?

Aby lepiej zrozumieć, wyjaśnijmy związek pomiędzy blockchainem a inteligentnymi kontraktami.

Decentralizacja

Pomyśl o sieci blockchain, takiej jak platforma AWS firmy Amazon, i każdym z jej inteligentnych kontraktów jako o serwerze. Dzięki technologii blockchain nie ma ani jednego scentralizowanego serwera, który mogliby wykorzystać hakerzy, co utrudnia cyberprzestępcom korzystanie z tradycyjnych metod hakowania, takich jak konie trojańskie, ataki fizyczne i oprogramowanie ransomware. Blockchain przeciwdziała tym problemom, eliminując pojedynczy punkt awarii sieci.

Chociaż sieci blockchain nie można dokładnie zhakować, wiele rozproszonych aplikacji i inteligentnych kontraktów obsługiwanych przez blockchain może to zrobić.

Dzięki stopniowo rosnącemu sukcesowi i wpływowi zdecentralizowanych finansów (DeFi) za pośrednictwem inteligentnych kontraktów przepływają duże ilości wartości, co czyni je atrakcyjnymi dla hakerów. Zagrożenie to prawdopodobnie będzie rosło tylko w miarę przenoszenia większej liczby aktywów w łańcuchu wraz ze wzrostem ilości tokenizowanych aktywów w świecie rzeczywistym. Hakowanie stanowi poważne zagrożenie dla tego rozwijającego się sektora blockchain, ponieważ aktywa skradzione z inteligentnych kontraktów są niezwykle trudne do odzyskania.

Zagrożenia dla inteligentnych kontraktów

Podobnie jak każdy kod, inteligentne kontrakty są podatne na błędy ludzkie. Błędy te mogą mieć formę literówek, fałszywych interpretacji specyfikacji lub poważniejszych błędów, które można wykorzystać do zhakowania lub „oszukania” inteligentnej umowy. W przeciwieństwie do blockchain, nie ma gwarancji, że umowy zostały sprawdzone lub zatwierdzone.

Choć błędów w kodowaniu można uniknąć poprzez audyt inteligentnych kontraktów, inne zagrożenia są bardziej złożone. Na przykład luka w zabezpieczeniach dotycząca domyślnej widoczności jest częstym błędem występującym, gdy nie określono widoczności funkcji, a niektóre funkcje pozostawiono publiczne. Na przykład hakerzy mogą uzyskać dostęp do funkcji mennicy i utworzyć miliardy odpowiednich tokenów. Na szczęście tej luce można zapobiec, przeprowadzając audyt, który sprawdza, czy wszystkie funkcje są domyślnie ustawione jako prywatne.

Innym bardziej skomplikowanym i poważnym zagrożeniem spowodowanym błędami kodowania jest atak typu reentranty. Dzieje się tak, gdy osoba atakująca wykorzystuje zewnętrzne wywołania funkcji inteligentnego kontraktu i wdraża złośliwą inteligentną umowę w celu interakcji z podmiotem przechowującym środki.

W 2016 roku incydent DAO, który miał miejsce na początku istnienia Ethereum, pokazał, jak niebezpieczny może być tego typu atak, i ostatecznie doprowadził do powstania Ethereum Classic. Zapobieganie atakom polegającym na ponownym wejściu nie jest proste, ale istnieją struktury i protokoły, które mogą złagodzić szkody, które obejmują CEI (kontrola, efekty i interakcje), zabezpieczenia ponownego wejścia i nie tylko.

Jeśli jesteś kompetentny w zakresie inteligentnego kodu kontraktu, przeczytanie samego kodu jest zawsze ogromną zaletą. Tak jak przeczytanie umowy przed przeprowadzką do nowego mieszkania chroni Cię przed niespodziankami, tak możliwość odczytania kodu inteligentnej umowy może ujawnić wady, złośliwe funkcje lub funkcje, które nie działają lub nie mają sensu.

Jeśli jednak jesteś użytkownikiem końcowym, który nie jest szczególnie obeznany z technologią, korzystaj wyłącznie z powszechnie używanych inteligentnych kontraktów z publicznie dostępnym kodem. Jest to preferowana opcja, w przeciwieństwie do skompilowanych inteligentnych kontraktów, w których kod jest ukryty i ludzie nie mogą go sprawdzić.

Usuwanie luk w zabezpieczeniach inteligentnych kontraktów

Nie zapominajmy, że większość administratorów inteligentnych kontraktów pozostawia sobie pewne uprawnienia administracyjne, zwykle w celu wprowadzenia zmian po uruchomieniu. Aby uzyskać dostęp do tych uprawnień, administratorzy muszą użyć swoich kluczy prywatnych. Te klucze prywatne stanowią kolejną lukę w zabezpieczeniach i jeśli nie są prawidłowo przechowywane (tj. w zimnym skarbcu offline), hakerzy, którzy w jakiś sposób uzyskają do nich dostęp, mogą wprowadzić zmiany w inteligentnej umowie i skierować środki w dowolne miejsce.

Niedawno Parlament Europejski nakazał zastosowanie mechanizmu wyłącznika awaryjnego w celu złagodzenia szkód w przypadku naruszenia inteligentnej umowy. Choć intencją organów regulacyjnych było zapewnienie ludziom większej ochrony ich własnych danych osobowych, ustawa wywołała obawy w społeczności Web3.

Jeśli nie zostanie poprawnie zaimplementowany, wyłącznik awaryjny może zniszczyć cały inteligentny kontrakt i całą przechowywaną na nim wartość. Lepszym rozwiązaniem byłoby aktywowanie funkcji pauzy, która w przypadku zagrożenia bezpieczeństwa mogłaby zamrozić inteligentną umowę i ponownie ją aktywować po rozwiązaniu problemu.