Ataki typu Denial of Service na inteligentne kontrakty: jak naprawić i uniknąć (poradnik eksperta) PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Ataki typu „odmowa usługi” na kontrakty inteligentne: jak naprawić i uniknąć (przewodnik eksperta)

Czas czytania: 6 minuty

Czy kiedykolwiek odwiedziłeś witrynę, która trwała długo, tylko po to, by stwierdzić, że nie można jej w tej chwili otworzyć? To po prostu wszystko o efekcie ataków Denial of Service. 

Ataki typu „odmowa usługi” (DoS) to jedna z wielu luk, na które zwraca się uwagę podczas audytu inteligentnych kontraktów. Ten blog ma na celu rozwinięcie tajników ataku DoS – co to jest, jego wpływ, rodzaje i wiele więcej do dodania.

Wejdźmy szybko i zbadajmy je wszystkie. 

Co to jest atak DoS?

Atak DoS ma na celu zakłócenie możliwości przetwarzania sieci, serwera lub aplikacji, powstrzymując się od przyjmowania żądań od legalnych użytkowników. W ten sposób atakujący przytłacza sieć, wysyłając więcej ruchu, który wyczerpuje pamięć i przepustowość serwerów. 

Ze względu na ogromny potencjał, jaki tkwi w blockchain, są one głównym celem ataków DoS mających na celu kradzież bogactw. Najbardziej znane kryptowaluty, takie jak Bitcoin, Ethereumitp. również doświadczyły ataków DoS. 

Rozproszona odmowa usługi (DDoS)

Rozproszona odmowa usługi (DDoS) to atak DoS polegający na tym, że atakujący kontroluje wiele urządzeń w celu przeprowadzenia ataku na docelowy węzeł.

Atakujący obserwuje węzeł docelowy i przekierowuje wiele kontrolowanych przez siebie urządzeń, aby wysłać dużą ilość informacji zalewających węzeł docelowy. Powoduje to awarię celu i niemożność wykonania określonego zadania.  

Cele ataków DoS w ekosystemie Blockchain

Na podstawie nagrań z przeszłych zdarzeń ataków DoS każda część ekosystemu blockchain jest podatna na ataki DoS. I żeby wymienić tylko kilka, 

Portfele kryptowalut: Podobnie jak w przypadku każdego portfela, portfel kryptowalut służy do przechowywania, wysyłania lub odbierania kryptowalut. A te portfele online wykorzystują inteligentne kontrakty, które są podatne na ataki DoS, które utrudniają ich usługi i interakcję z Dapps. 

Usługi wymiany kryptowalut: Platforma internetowa, na której handluje się kryptowalutami, a wymiana odbywa się między użytkownikami. Są głównym celem hakerów do przeprowadzania ataków DoS, które powodują niedostępność platformy i jej usług. 

Np. platforma wymiany bitcoinów, Bifinex kilka razy padła ofiarą ataków DDoS. 

Pule pamięci (transakcji): Transakcje w łańcuchu bloków wymagają weryfikacji przed dodaniem ich do bloków. Do tego czasu żądania transakcji są przechowywane w mempool, który jest jak repozytorium niepotwierdzonych transakcji oczekujących na pobranie przez górnika. 

Transakcja z wysoką opłatą najprawdopodobniej zostanie wybrana przez górnika. Tak więc zalewanie mempool wieloma transakcjami o niewielkich opłatach powoduje, że użytkownik płaci wysokie opłaty za przetworzenie transakcji. W ten sposób atak DoS zadziałał magicznie, podnosząc opłatę manipulacyjną. 

Uczestnicy konsensusu: To gracze, którzy rozwiązują logikę i decydują, które bloki zostaną dodane do łańcucha bloków. Zadawanie ataków DoS na lidera konsensusu zatrzymuje cały system. 

Usługi mieszania: Wykorzystuje protokół dla użytkowników do anonimowego wykonywania transakcji. Są narażone na ataki DoS na różne sposoby, takie jak nadmierne żądania uczestnictwa w puli miksowania, niespójne dane wejściowe do losowania itp. 

Inteligentne kontrakty: Inteligentny kontrakt jest protokołem leżącym u podstaw każdej transakcji w łańcuchu bloków. Ataki DoS na inteligentne kontrakty mogą spowodować awarię węzła, który zatrzymuje działanie hostowanych przez niego Dappów.

Ataki DoS przeprowadzane są na nich na kilka możliwych sposobów, opisanych w następnej sekcji.

Analiza typów ataków DoS na inteligentne kontrakty 

Luka DoS w inteligentnych kontraktach skutkuje nieograniczonym wykorzystaniem zasobów lub manipulacją kontraktem. Prowadzi to do zawieszenia w wykonywaniu normalnych czynności lub przerwania i załamuje logikę kontraktu. 

Poniżej znajduje się klasyfikacja różnych ataków DoS w inteligentnych kontraktach

Nieoczekiwany cofnięty atak DoS

Aby zbadać atak DoS na inteligentne kontrakty, weźmy jako przykład umowę aukcyjną. Umowa aukcyjna jest aktualizowana z każdą najwyższą otrzymaną ofertą i zwraca kwotę oferty poprzedniego oferenta, ponieważ jest ona niższa niż aktualna oferta.

contract Auction {
    address frontRunner;
    uint256 highestBid;

    function bid() public payable {
        require(msg.value > highestBid, "Need to be higher than highest bid");
        // Refund the old leader, if it fails then revert   
        require(payable(frontRunner).send(highestBid), "Failed to send Ether");
 
        frontRunner = msg.sender;
        highestBid = msg.value;
    }
}

Kontrakt atakującego jest inicjowany kontraktem aukcyjnym w konstruktorze, który uzyskuje dostęp do kontraktu aukcyjnego. W tym przypadku, wywołując funkcję 'attack()', atakujący blokuje kwotę, a tym samym nie zwraca kwoty oferty atakującemu nawet po otrzymaniu wyższej oferty. 

import "./Auction.sol";   
contract Attacker{
    Auction auction;

    constructor(Auction _auctionaddr){
        auction = Auction(_auctionaddr);
    }

    function attack (){
        auction.bid{value: msg.value}();
    }

}

Dzieje się tak, ponieważ kontrakt „atakującego” nie zawiera żadnej funkcji „receive()” ani funkcji awaryjnej do zwrotu Etheru, co powoduje nieoczekiwany powrót. To sprawia, że ​​kontrakt atakujący zawsze będzie najwyższą ofertą. 

Limit gazu blokowego DoS 

Blok ma maksymalny limit zużycia gazu, który jest proporcjonalny do ilości pracy obliczeniowej do wykonania. W przypadku przekroczenia limitu gazu prowadzi to do dwóch rodzajów ataków DoS.

DoS Limit Gazu – Nieograniczona Eksploatacja Kontraktu

Istnieje ustalony limit gazu, a jeśli transakcje osiągną wyższy limit gazu niż ustalony limit, transakcja kończy się niepowodzeniem. 

Sytuacja staje się jeszcze gorsza, gdy atakujący manipuluje potrzebnym gazem. Wtedy atakujący dodaje kilka adresów, aby uzyskać bardzo mały zwrot pieniędzy. Każdy zwrot kosztuje opłatę za gaz; w ten sposób koszt gazu przekracza limit, który uniemożliwia realizację transakcji zwrotu. 

struct Payee {
    address addr;
    uint256 value;
}

Payee[] payees;
uint256 nextPayeeIndex;

function payOut() {
    uint256 i = nextPayeeIndex;
    while (i < payees.length && msg.gas > 200000) {
      payees[i].addr.send(payees[i].value);
      i++;
    }
    nextPayeeIndex = i;
}

Dlatego podczas implementacji pętli w tablicy należy wziąć pod uwagę niezbędne kroki. 

Blokuj farsz

Atakujący inicjuje ten atak, aby uniemożliwić dodawanie transakcji do bloków poprzez wysyłanie intensywnych obliczeniowo transakcji z wysokimi cenami gazu. Kilka transakcji wystawianych jest w podobny sposób, aby zużyć cały limit gazu. 

Płacąc wysoką opłatę za gaz, atakujący zapewnia, że ​​do bloków zostaną dodane tylko zamierzone transakcje, pomijając resztę. 

Akcja właściciela

Każda umowa ma adres właściciela, który ma uprawnienia do otwierania lub zawieszania transakcji. Cała operacja zależy od adresu właściciela, więc w przypadku jej utraty użytkownik nie może w ogóle wysyłać tokenów, a funkcjonowanie kontraktu upadnie.

Wpływ ataku DoS

Wypełnianie bloków jest jednym z wielu wpływów, które uniemożliwiają dodawanie legalnych transakcji do bloków. Istnieje jednak kilka innych skutków ataków DoS. 

Rozdęta księga: Księga blockchain to miejsce, w którym transakcje są rejestrowane na stałe. Węzły blockchain przechowują kopię transakcji w celu weryfikacji pod kątem podwójnych wydatków. Atak DoS może zapełnić księgę transakcjami spamowymi.

Ruch sieciowy: Znamy funkcje blockchain oparte na trybie peer-to-peer. Każdy węzeł w łańcuchu bloków otrzymuje kopię transakcji. Zalanie DoS może spowodować duże wolumeny transakcji, zużywając przepustowość sieci. 

Awarie węzłów: Blockchain działa na węzłach, które wymagają wsparcia oprogramowania do obsługi dużych ilości danych. Podczas zalewania transakcji węzłom może zabraknąć pamięci, wstrzymując operacje.

Awaria oprogramowania: Jak już wspomnieliśmy, mempool lub bloki mają określone limity przydzielonej im pamięci. Oprogramowanie odbiera, przetwarza i przechowuje transakcje w ustalonym limicie. Gdy przychodzące transakcje przekraczają wbudowane limity, oprogramowanie ulega awarii.  

Powstrzymaj inteligentne kontrakty przed atakami DoS 

Na podstawie analizy ataków DoS można zastosować następujące sposoby złagodzenia ataku. 

Puzzle: Serwery mogą generować łamigłówki, takie jak łamigłówki pamięciowe, łamigłówki czasowe, łamigłówki związane z procesorem itp. Aby użytkownik mógł uzyskać dostęp do usługi, łamigłówki muszą zostać rozwiązane, co zwalcza ataki spamowe.

Podejście odpłatne: Na łańcuch bloków może zostać nałożona dodatkowa opłata, taka jak opłaty za wydobycie dla puli wydobywczych, opłaty transakcyjne itp. To sprawia, że ​​haker DoS jest kosztowny dla atakujących, a tym samym ogranicza takie ataki. 

Nota końcowa

Audyt inteligentnych kontraktów przeprowadzony w QuillAudyty wyszukuje potencjalne luki w kodowaniu. Niektóre z nich obejmują podatność na ponowne wejście, kolizję pamięci masowej, atak losowy, odmowę usługi i tak dalej. 

To wyraźnie oznacza, że inteligentne kontrakty są dokładnie testowane, aby były wolne od zagrożeń atakami typu „odmowa usługi”. Dzięki temu Twój projekt jest chroniony przed możliwymi lukami w przestrzeni Web3.

Uważaj na nasz kanał Telegram, aby zebrać najnowsze informacje na temat naszych usług: https://t.me/quillhash

13 odwiedzajacy

Znak czasu:

Więcej z Quillhash