Inteligentne bezpieczeństwo kontraktów: zwinne podejście SDLC PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Inteligentne bezpieczeństwo kontraktów: zwinne podejście SDLC 

Czas czytania: 10 minuty

Blockchain jest cytowany jako zdecentralizowana i odporna na manipulacje księga. Ale ta odporna na manipulacje księga jest podatna na włamania i exploity. Jedną z wad jest decentralizacja, która jest jedną z najsilniejszych zalet Blockchain. 

No dobrze, ale co z SDLC? 

Podejście dotyczące cyklu życia oprogramowania, które będziemy omawiać, opiera się na klasyfikacji luk w zabezpieczeniach w inteligentnych kontraktach na wiele faz. 

W pierwszej części przedstawiliśmy kwestie bezpieczeństwa w inteligentnych kontraktach. A w następnej sekcji omawiamy jego rozwiązania podzielone na cztery fazy; Projektowanie zabezpieczeń, implementacja zabezpieczeń, testowanie przed wdrożeniem i ostatnia, monitorowanie i analiza. 

ANALIZA KWESTII BEZPIECZEŃSTWA W INTELIGENTNYCH KONTRAKTACH 

Inteligentne kontrakty są podatne na różne hacki i exploity. Te umowy, które są synonimem rzeczywistych umów prawnych, działają niezależnie na podstawie warunków rodzimych łańcuchów bloków. 

Ale czy pomyślałeś, że nawet te natywne łańcuchy bloków mogą być również odpowiedzialne za potencjalne zagrożenia bezpieczeństwa w inteligentnych kontraktach? Poniżej przedstawiamy niektóre cechy Blockchains dla tego samego:

Decentralizacja: Jest uważany za jedną z zalet protokołów opartych na blockchain. Jednak napastnicy wymyślili sposób na przekształcenie tej pozytywnej cechy w negatywną. 

Złośliwi aktorzy mogą stworzyć fałszywą tożsamość, aby opracować i wdrożyć inteligentny kontrakt. Czasami trudno jest zidentyfikować zagrożoną umowę, ponieważ tylko adres publiczny (lub) klucze publiczne są dostępne w publicznych łańcuchach bloków. 

Kod open source: To może cię zaskoczyć, ale tak, ogólnie rzecz biorąc, większość inteligentnych kodów kontraktowych jest nieco open-source. 

Powiedzmy, że w przypadku maszyny wirtualnej Ethereum (EVM) jej kod bajtowy jest zawsze publiczny. Niektóre dekompilatory Solidity mogą pomóc w uzyskaniu inteligentnego adresu kontraktowego i kodu Solidity. Ujawnienie kodu źródłowego sprawia, że ​​ta funkcja jest zaletą dla atakujących. 

Nierozwinięte platformy blockchain: Dla programisty podstawowym wymogiem jest zapoznanie się z platformą programistyczną. Istnieje wiele słabo rozwiniętych lub nowych platform blockchain, więc programiści nie mogą zdobyć dogłębnej wiedzy na temat operacji na blockchain. 

Ta niespójność wpływa na inteligentne kontrakty z powodu braku synchronizacji. Wady platformy blockchain pozostają niezauważone ze względu na jej ciągłą ewolucję. 

Nieznane transakcje: W pierwszym punkcie omówiliśmy tożsamość anonimową; podobnie transakcje na blockchainach są nieujawnione. Prześledzenie transakcji jest niemożliwe, co prowadzi do wielu nielegalnych działań. Ponieważ w grę wchodzą transakcje finansowe, każda kwestia bezpieczeństwa może spowodować ogromne straty finansowe. 

INTELIGENTNE ROZWIĄZANIA BEZPIECZEŃSTWA UMÓW

Teraz, kontynuując bezpieczeństwo inteligentnych kontraktów, możemy porównać wszystkie niezbędne kroki wymagane do zabezpieczenia inteligentnego kontraktu z jego ewolucją. Podobnie jak w przypadku tradycyjnego tworzenia oprogramowania, zwykle podążamy za cyklem rozwoju; podobnie możemy sklasyfikować cykl rozwoju kontraktu. 

Cykl życia inteligentnych kontraktów można podzielić na cztery fazy: projektowanie zabezpieczeń, wdrażanie zabezpieczeń, testowanie przed wdrożeniem oraz monitorowanie i analiza.

przegląd zagadnień związanych z bezpieczeństwem z perspektywy cyklu życia inteligentnych kontraktów
przegląd tematów bezpieczeństwa z perspektywy cyklu życia inteligentnych kontraktów

1. PROJEKT BEZPIECZEŃSTWA 

Ta pierwsza faza obejmuje trzy tematy; zasada projektowa, wzorzec projektowy i modelowanie zabezpieczeń (jak pokazano na powyższym rysunku). Głównym celem tych tematów jest projektowanie umów i sposoby zapobiegania zagrożeniom bezpieczeństwa. 

ZASADA PROJEKTOWA

Zasady projektowania to fundamentalne idee projektowania bezpiecznych inteligentnych kontraktów w łańcuchu bloków. Istnieje pięć podstawowych zasad projektowania umów: Przygotuj się na awarię, Ostrożnie wdrażaj, Utrzymuj proste umowy, Bądź na bieżąco i Musisz wiedzieć o właściwościach łańcucha bloków. 

Teraz możesz pomyśleć, w jaki sposób pomogą stworzyć bezpieczną inteligentną umowę? 

Weźmy jedną z powyższych zasad, powiedzmy „Przygotuj się na awarię”, co oznacza, że ​​w przypadku braku schematów łatania umowa powinna być w stanie reagować na błędy. A jeśli dojdzie do jakiegokolwiek ataku, kontrakt powinien być w stanie wstrzymać, aby zapobiec dalszym stratom. 

WZÓR PROJEKTOWY

W projektowaniu oprogramowania wzorce projektowe to rozwiązania, które można ponownie wykorzystać do rozwiązania problemu. 

Jeśli weźmiemy przykład Ethereum, istnieje sześć wzorców bezpieczeństwa; Interakcja sprawdzania efektów, Zatrzymanie awaryjne, Mutex, Próg zwalniający, Limit prędkości i Limit równowagi.  

Możemy wykorzystać te wzorce bezpieczeństwa do rozwiązania problemów związanych z bezpieczeństwem w łańcuchu bloków, takich jak luka w zabezpieczeniach, którą można rozwiązać za pomocą wzorca Mutex. 

Jednocześnie wzorzec zatrzymania awaryjnego może pomóc nam zakończyć wykonanie umowy, jeśli zostanie dotknięta luką w zabezpieczeniach. 

MODELOWANIE BEZPIECZEŃSTWA

Może istnieć różnica między opracowanym kodem a wymaganym kodem do umów, ponieważ Solidity jest używany do tworzenia umów; ten język spełnia kompletność Turinga, ale jest podatny na błędy. 

Powyższy rysunek pokazuje, że ta podfaza obejmuje dwie fazy; projektowanie i wdrażanie zabezpieczeń. 

Modelowanie bezpieczeństwa jest bezpośrednio związane z logiką biznesową; ponieważ specyfikacje wywodzą się z biznesu, logikę można sklasyfikować według bezbłędnej semantyki. Pomaga to później podczas formalnego procesu weryfikacji przeprowadzanego w celu złagodzenia podatności. 

2. WDROŻENIE BEZPIECZEŃSTWA

W tej sekcji omówimy dwa z trzech tematów; bezpieczeństwo

Szablon rozwoju i bezpieczeństwa, ponieważ modelowanie bezpieczeństwa omówiliśmy już w ostatniej fazie.

ROZWÓJ BEZPIECZEŃSTWA

W tej sekcji zobaczymy, jak można uniknąć luk w zabezpieczeniach podczas procesu realizacji kontraktu. 

Na platformie Ethereum mamy EIP bezpieczeństwa (propozycje ulepszeń Ethereum) – zalecenia dotyczące zwalczania problemów bezpieczeństwa na Ethereum Platforma. Dlatego te EIP są godne uwagi ze względu na bezpieczne wdrażanie inteligentnych kontraktów. 

SZABLON BEZPIECZEŃSTWA

Szablony służą jako źródło nowych dokumentów. Szablony inteligentnych umów z parametrami operacyjnymi łączą umowę prawną z kodem wykonywalnym. 

W kontekście inteligentnych zabezpieczeń kontraktów możliwe jest wyodrębnienie standardowych szablonów kontraktów z ulepszonymi parametrami bezpieczeństwa, takimi jak wzorce bezpieczeństwa i biblioteki bezpieczeństwa. Zmniejszy to możliwość błędów w ręcznym kodowaniu. 

3. TESTOWANIE PRZED WDROŻENIEM

Ponownie, wymóg tej fazy wynika z jednej z zalet inteligentnych kontraktów – „niezmienności”. 

Po utworzeniu inteligentnych kontraktów nie ma możliwości ich zmiany. Dlatego obowiązkowe jest przeprowadzenie wystarczających testów, aby zapewnić bezpieczeństwo inteligentnych kontraktów przed wdrożeniem.

Ta faza obejmuje trzy parametry bezpieczeństwa, których należy przestrzegać przed wdrożeniem inteligentnej umowy; Rygorystyczna weryfikacja formalna, narzędzia do analizy kodu i audyt bezpieczeństwa. 

RYGORYSTYCZNA WERYFIKACJA FORMALNA

Formalna weryfikacja to dobrze zdefiniowany proces, który wykorzystuje rozumowanie matematyczne i dowody matematyczne do weryfikacji pożądanych właściwości systemu. 

Na inteligentnych kontraktach możemy przeprowadzić weryfikację formalną, ponieważ program kontraktowy jest krótki i ograniczony w czasie. Istnieje wiele sposobów na sformalizowanie i sztywną weryfikację inteligentnych kontraktów; niektóre są oparte na kodzie umowy, a inne na semantyce maszyny wirtualnej Ethereum (EVM). 

NARZĘDZIA DO ANALIZY KODÓW

Analiza kodu odbywa się bez wykonywania programów. W tym celu używamy narzędzi zwanych statycznymi narzędziami do testowania bezpieczeństwa aplikacji (SAST). Narzędzia te pomagają w wykrywaniu luk bezpieczeństwa w kodzie źródłowym. 

Analiza wykonywana przez te narzędzia może obejmować jeden lub wszystkie z następujących kroków:

(I) Utwórz pośrednią reprezentację (IR), taką jak abstrakcyjne drzewo składni (AST), do szczegółowej analizy. 

(II) Uzupełnij IR o wystarczające informacje uzyskane z kontroli statycznej lub analizy przepływu dat i technik weryfikacji formalnej; techniki te obejmują: wykonanie symboliczne, interpretację abstrakcyjną i sprawdzanie modelu symbolicznego. 

Ale jakich narzędzi można użyć do przeprowadzenia analizy kodu na Smart Contract? 

Chociaż istnieje wiele narzędzi, których można użyć do przeprowadzenia analizy bezpieczeństwa, najbardziej popularnym jest Oyente. 

Słuchacz może być używany do przeprowadzania analizy bezpieczeństwa dla inteligentnych kontraktów EVM. Wykorzystuje „symboliczną egzekucję”, aby wykryć cztery typowe błędy; zależność kolejności transakcji, zależność sygnatury czasowej, niewłaściwie obsłużone wyjątki i ponowne wejście. 

Architektura Oyente
Architektura Oyente

Architektura Oyente pokazuje, że pobiera kod bajtowy i przedstawia stan globalny Ethereum jako dane wejściowe. 

Jedną z drugiej strony Oyente jest to, że wykrywa tylko luki w zabezpieczeniach. Symboliczna technika egzekucji stosowana przez Oyente nie bada wszystkich możliwych ścieżek. W związku z tym pojawia się zapotrzebowanie na inne narzędzia, takie jak audyty bezpieczeństwa i ręczne. 

AUDYT BEZPIECZEŃSTWA

Zaczniemy tę sekcję tam, gdzie zostawiliśmy ostatnią; ręczne audyty. 

Ale najpierw zrozummy potrzebę audytu bezpieczeństwa; czy to hack Ronin Network, czy hack Poly Network, niezbadany kod jest najbardziej podatny na hacki i exploity. 

Prowadzą do ogromnych strat finansowych. Nie tylko poddanie się audytowi projektu Web3, w rzeczywistości, ale również poddanie go audytowi przez ekspertów ma znaczenie, ponieważ zależy to od profesjonalnych umiejętności audytorów do przeprowadzania audytów bezpieczeństwa. 

Znowu, gdzie znaleźć tych profesjonalnych ekspertów? Nie musisz nigdzie szukać godnych zaufania audytorów; Kliknij https://t.me/quillhash skontaktować się z jednym z nich! 

Idealny audyt inteligentnego kontraktu to połączenie ręcznej i automatycznej analizy kodu; tak jak pisaliśmy w poprzednim punkcie, mimo iż korzystając z automatycznej analizy kodu z narzędzi takich jak Oyente, istnieje możliwość niezidentyfikowanych luk w kontrakcie. 

W ten sposób, aby rozwiązać ten problem, audytorzy bezpieczeństwa mogą ręcznie analizować każdy wiersz kodu i testować go pod kątem potencjalnych luk. 

4. MONITOROWANIE I ANALIZA

Pamiętasz stale ewoluującą zasadę Blockchain, o której mówiliśmy na początku? 

Ta faza opiera się na tym samym temacie; po wdrożeniu i uruchomieniu umowy mogą pojawić się luki, które nie zostały zauważone na poprzednich etapach, z powodu nowych wersji i częstych aktualizacji, które później zmniejszają wydajność umów. 

Możemy przeprowadzić; nagrody za błędy, monitorowanie bezpieczeństwa i analiza post hoc w celu pokonania tych barier. 

NAGRODA ZA BŁĘDY

Ponieważ zastanawiamy się nad kwestiami bezpieczeństwa po wdrożeniu kontraktów, pomocne mogą być nagrody w postaci błędów. Omówiona wcześniej technika weryfikacji formalnej jest techniką analizy statycznej. Z drugiej strony bug bounty to technika analizy dynamicznej. 

Koncepcja nagrody za Bug jest prosta; Hakerzy odkrywają błędy, a w zamian otrzymują pewne nagrody finansowe. Wygląda na sytuację korzystną dla obu stron, prawda? Ale tak nie jest!

Tu jest haczyk; że wartość błędów może być wyższa niż nagroda w szarej strefie i istnieje możliwość, że hakerzy mogą wykorzystać lub sprzedać błędy, aby uzyskać wysoką cenę. 

Czasami właściciele projektów odmawiają wypłaty nagrody, chyba że błędy zostaną potwierdzone; Hakerzy martwią się również o niepewność płatności po ujawnieniu błędów. 

Aby temu zaradzić, zaproponowano platformę bug bounty, znaną jako „Hydra”. 

Hydra wykorzystuje technologię luk w exploitach o nazwie N-of-N-version Programming (NNVP) jako system nagród za błędy w łańcuchu blokowym. 

Rama Hydra z głowicami
Rama Hydra z głowicami

MONITOROWANIE BEZPIECZEŃSTWA

Możemy użyć statycznej analizy kodu, aby wykryć luki w zabezpieczeniach, ale ta metoda jest używana przed wdrożeniem inteligentnych kontraktów. 

Aby jednak znaleźć błędy i potencjalne luki w zabezpieczeniach w czasie rzeczywistym, musimy monitorować i analizować dane transakcyjne w łańcuchu bloków. 

Luki te wykryte poprzez analizę inteligentnych kontraktów można nazwać lukami śledzenia. Głównymi źródłami tych luk w zabezpieczeniach są trzy rodzaje umów; 

(I) Kontrakty chciwe (kontrakty, które pozostają żywe i blokują Ether na czas nieokreślony).

(II) Kontrakty marnotrawne (umowy, które beztrosko wyciekają środki do dowolnych użytkowników) oraz

(iii) Umowy samobójcze (umowy, które każdy dowolny użytkownik może zabić). 

Zaproponowano nawet koncepcję obiektów skutecznie wolnych od wywołań zwrotnych (ECF) w celu identyfikacji luk w zabezpieczeniach poprzez monitorowanie obiektów ECF. 

W kontekście tego przedstawiono również algorytm online; pomogło odkryć nieznane luki w zabezpieczeniach. W tej samej propozycji zasugerowano wykonanie inteligentnych kontraktów w Testnet przed wdrożeniem w Mainnet. 

Monitoring UI to platforma monitorująca Blockchain wykorzystująca React.js. Ta platforma może być używana do przeprowadzania transakcji, kontrolowania aktywów i zapytań o stan Blockchain. 

Nie możemy polegać na tej platformie do bezpiecznego monitorowania inteligentnych kontraktów, ale ponieważ można znaleźć większość danych transakcyjnych związanych z inteligentnymi kontraktami, możemy wykrywać exploity w czasie rzeczywistym, śledząc transfer aktywów. 

ANALIZA POST HOC

Analiza post hoc wykorzystuje dane transakcyjne łańcucha bloków do analizowania, wykrywania lub śledzenia potencjalnych zagrożeń w łańcuchu bloków w kategoriach laika. 

Jeśli omówimy analizę Graph, została ona zaprojektowana jako podejście do gromadzenia wszystkich danych transakcyjnych (w tym transakcji wewnętrznych z inteligentnych kontraktów). 

Za pomocą tych danych przygotowali trzy wykresy; 

(I) Wykres przepływów pieniężnych (MFG)

(II) Wykres tworzenia umowy (CCG) oraz,

(iii) Wykres wywołania kontraktu (CIG)

Na podstawie analizy wspomnianych powyżej wykresów zaproponowano wiele nowych ustaleń, takich jak rozwiązania problemów bezpieczeństwa między wieloma współpracującymi ze sobą kontraktami. 

Przegląd analizy wykresów
Przegląd analizy wykresów

Schemat Ponzi jest jednym z klasycznych schematów oszustw, za pomocą którego można pozyskać dużą liczbę funduszy i wpływać na natywny blockchain. Aby zwalczyć to oszustwo, zaproponowano mechanizm klasyfikatora do wykrywania schematów Ponzi w Ethereum. 

Mechanizm ten wykorzystuje eksplorację danych i uczenie maszynowe do wykrywania kontraktów Ponzi. Ten proces działa nawet wtedy, gdy kod źródłowy inteligentnych kontraktów jest niedostępny. 

Ramy inteligentnego wykrywania schematów Ponzi
Ramy inteligentnego wykrywania schematów Ponzi

Zabrany klucz

To wszystko, tak, na razie to wszystko!

Jeśli byłeś z nami do tej pory, będziemy wdzięczni. Nie rozciągając więcej, na zakończenie powiedzielibyśmy tylko, że ekosystem inteligentnych kontraktów jest zdecentralizowany i trudno jest go załatać pod kątem błędów. 

Próbowaliśmy przełamać bezpieczeństwo inteligentnych kontraktów z perspektywy cyklu życia oprogramowania. 

Najpierw omówiliśmy kluczowe funkcje łańcucha bloków odpowiedzialne za kwestie bezpieczeństwa w inteligentnych kontraktach. Rozwiązania bezpieczeństwa dla inteligentnych kontraktów podzieliliśmy na cztery fazy. Mamy nadzieję, że udostępnimy więcej postów, aby wyprzedzić wyzwania w rozwijającym się ekosystemie Web3. 

Co sądzisz o tym zwinnym podejściu SDLC do bezpieczeństwa inteligentnych kontraktów? Podziel się swoimi przemyśleniami w komentarzach poniżej!

46 odwiedzajacy

Post Inteligentne bezpieczeństwo kontraktów: zwinne podejście SDLC  pojawiła się najpierw na Blog.

Znak czasu:

Więcej z Quillhash