Napadi zavrnitve storitve na pametne pogodbe: Kako popraviti in se jim izogniti (strokovni vodnik) PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Napadi zavrnitve storitve na pametne pogodbe: Kako popraviti in se jim izogniti (strokovni vodnik)

Čas branja: 6 min

Ste že kdaj obiskali spletno mesto, ki se je dolgo nalagalo in ugotovilo, da ga trenutno ni mogoče odpreti? To je preprosto vse o učinku napadov zavrnitve storitve. 

Napadi zavrnitve storitve (DoS) so ena od številnih ranljivosti, na katere smo pri revidiranju pametnih pogodb zelo pozorni. Namen tega bloga je razkriti podrobnosti napada DoS – kaj je, njegov vpliv, vrste in še veliko več, kar lahko dodate.

Hitro vstopimo in jih vse raziščimo. 

Kaj je napad DoS?

Napad DoS namerava prekiniti zmožnosti obdelave omrežja, strežnika ali aplikacije in preprečiti sprejemanje zahtev zakonitih uporabnikov. Pri tem napadalec preplavi omrežje s pošiljanjem več prometa, ki izčrpava pomnilnik in pasovno širino strežnikov. 

Zaradi ogromnega potenciala, ki ga ima blockchain, so glavna tarča napadov DoS, da bi ukradli bogastvo. Najbolj znane kriptovalute, kot je Bitcoin, Ethereum, itd., so prav tako doživeli napade DoS. 

Distributed Denial of Service (DDoS)

Distributed Denial of Service (DDoS) je napad DoS, pri katerem napadalec nadzoruje več naprav, da začne napad na ciljno vozlišče.

Napadalec opazuje ciljno vozlišče in kanalizira več naprav pod njegovim nadzorom, da pošljejo veliko količino informacij, ki preplavijo ciljno vozlišče. Zaradi tega se cilj zruši in ne more izpolniti navedene naloge.  

Tarče napadov DoS v ekosistemu verige blokov

Iz posnetkov preteklih dogodkov napadov DoS je vsak del ekosistema blockchain ranljiv za napade DoS. In če jih naštejem nekaj, 

Denarnice za kriptovalute: Kot pri vsaki denarnici se denarnica za kriptovalute uporablja za shranjevanje, pošiljanje ali prejemanje kriptovalut. In te spletne denarnice uporabljajo pametne pogodbe, ki so nagnjene k napadom DoS, ki ovirajo njihove storitve in interakcijo z Dapps. 

Storitve menjave kriptovalut: Spletna platforma, kjer se trguje s kriptovalutami in poteka izmenjava med uporabniki. So glavne tarče hekerjev za izvajanje napadov DoS, ki povzročijo nerazpoložljivost platforme in njenih storitev. 

Primer: platforma za izmenjavo bitcoinov, Bifinex, je bila večkrat izpostavljena napadom DDoS. 

Pomnilniška (transakcijska) področja: Transakcije v verigi blokov morajo biti potrjene, preden se dodajo v bloke. Do takrat so zahteve za transakcije shranjene v mempoolu, ki je kot repozitorij nepotrjenih transakcij, ki čakajo, da jih izbere rudar. 

Transakcijo z visoko provizijo bo najverjetneje izbral rudar. Torej preplavitev mempoola s številnimi transakcijami z majhnimi provizijami povzroči, da uporabnik plača visoke provizije za obdelavo svoje transakcije. Tako je napad DoS naredil svojo čarovnijo pri zvišanju pristojbine za obdelavo. 

Soglasni udeleženci: So igralci, ki rešujejo logiko in odločajo o blokih, ki bodo dodani v verigo blokov. Izvajanje napadov DoS na vodjo soglasja ustavi celoten sistem. 

Storitve mešanja: Uporablja protokol za uporabnike, da anonimno izvajajo transakcije. Trpijo napade DoS z različnimi sredstvi, kot so pretirane zahteve za sodelovanje v mešalnem bazenu, nedosleden vnos za naključno predvajanje itd. 

Pametne pogodbe: Pametna pogodba je temeljni protokol za vsako transakcijo v verigi blokov. Napadi DoS na pametne pogodbe lahko zrušijo vozlišče, ki ustavi delovanje Dapps, ki jih gosti.

DoS napadi se izvajajo na njih na več možnih načinov, ki so podrobneje opisani v naslednjem razdelku.

Analiza vrst napadov DoS pametnih pogodb 

Ranljivost DoS v pametnih pogodbah povzroči neomejeno uporabo virov ali manipulacijo pogodbe. To vodi do začasne ustavitve izvajanja normalnih dejavnosti ali pa prekine in poruši logiko pogodbe. 

Spodaj je razvrstitev različnih napadov DoS v pametnih pogodbah

Nepričakovan razveljavi DoS

Če želite preučiti ta napad DoS na pametne pogodbe, vzemimo za primer dražbeno pogodbo. Dražbena pogodba se posodobi z vsako najvišjo prejeto ponudbo in vrne znesek ponudbe prejšnjega dražitelja, saj je nižji od trenutne ponudbe.

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;
    }
}

Napadalčeva pogodba se inicializira z dražbeno pogodbo v konstruktorju, ki pridobi dostop do dražbene pogodbe. Pri tem s klicem funkcije 'attack()' napadalec zaklene znesek in s tem napadalcu ne vrne zneska ponudbe, tudi če prejme višjo ponudbo od te. 

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

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

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

}

To je zato, ker pogodba 'napadalca' ne vključuje nobene funkcije 'receive()' ali nadomestne funkcije za vračilo Etherja, kar povzroči nepričakovano vrnitev. Zaradi tega je napadalec vedno najvišji ponudnik. 

Blokiraj omejitev plina DoS 

Blok ima največjo omejitev porabe plina, ki je sorazmerna s količino računskega dela, ki ga je treba opraviti. V primeru prekoračitve omejitve plina pride do dveh vrst napadov DoS.

Gas Limit DoS – Neomejeno pogodbeno delovanje

Obstaja nastavljena omejitev plina in če transakcije dosežejo višjo omejitev plina od nastavljene, transakcija ne uspe. 

Še hujše postane, ko napadalec manipulira s potrebnim plinom. Takrat napadalec doda nekaj naslovov za zelo majhno povračilo. Vsako vračilo stane pristojbino za plin; tako strošek plina presega mejo, ki preprečuje izvedbo transakcij vračila. 

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;
}

Zato je treba pri izvajanju zanke nad matriko upoštevati potrebne korake. 

Nadev za bloke

Napadalec sproži ta napad, da zadrži transakcije pri dodajanju v bloke s pošiljanjem računsko intenzivnih transakcij z visokimi cenami plina. Več transakcij se izvede na podoben način, da se porabi celotna omejitev plina. 

S plačilom visoke pristojbine za plin napadalec zagotovi, da se v bloke dodajo le predvidene transakcije, ostale pa niso izključene. 

Dejanje lastnika

Vsaka pogodba ima naslov lastnika, ki ima pooblastilo za odpiranje ali prekinitev transakcij. Celotna operacija je odvisna od naslova lastnika, zato, če se izgubi, uporabnik sploh ne more poslati žetonov in delovanje pogodbe se poruši.

Vpliv DoS napada

Polnjenje blokov je eden od mnogih vplivov, ki preprečujejo, da bi se zakonite transakcije dodale v bloke. Vendar pa obstaja več drugih učinkov napadov DoS. 

Napihnjena knjiga: Glavna knjiga verige blokov je mesto, kjer se transakcije trajno beležijo. Vozlišča verige blokov shranijo kopijo transakcij za preverjanje dvojne porabe. Napad DoS lahko napihne knjigo z neželenimi transakcijami.

Omrežni promet: Poznamo funkcije blockchaina, ki temeljijo na načinu enakovrednega. Vsako vozlišče v verigi blokov prejme kopijo transakcije. Poplava DoS lahko povzroči velik obseg transakcij, ki porabi pasovno širino omrežja. 

Napake vozlišča: Blockchain deluje na vozliščih, ki potrebujejo podporo programske opreme za obdelavo velikih količin podatkov. Med poplavljanjem transakcij lahko vozliščem zmanjka pomnilnika, zaradi česar se operacije ustavijo.

Zrušitev programske opreme: Kot smo razpravljali, imajo mempool ali bloki določene omejitve pomnilnika, ki jim je dodeljen. Programska oprema sprejema, obdeluje in shranjuje transakcije v okviru nastavljenega limita. Ko dohodne transakcije presežejo vgrajene omejitve, se programska oprema zruši.  

Omejite pametne pogodbe pred napadi DoS 

Iz analize napadov DoS je mogoče uporabiti naslednje načine za ublažitev napada. 

Uganke: Strežniki lahko ustvarijo uganke, kot so spominske uganke, uganke s časovnim zaklepanjem, uganke, vezane na procesor, itd. Da bi uporabnik pridobil dostop do storitve, je treba uganke rešiti, kar preprečuje napade neželene pošte.

Pristop, ki temelji na pristojbinah: Za verigo blokov se lahko naložijo dodatne pristojbine, kot so rudarske pristojbine za rudarska združenja, transakcijske pristojbine itd. Zaradi tega je vdor DoS drag za napadalce, s čimer se preprečijo takšni napadi. 

Zaključna opomba

Revizija pametne pogodbe, izvedena na QuillAudits išče morebitne ranljivosti, ki se skrivajo v kodiranju. Nekateri od njih vključujejo ranljivost ponovnega vstopa, trk v pomnilniku, napad naključnosti, zavrnitev storitve in tako naprej. 

To jasno pomeni, pametne pogodbe so temeljito preizkušeni, da ne vsebujejo groženj napadov zavrnitve storitve. To zagotavlja, da je vaš projekt zaščiten pred možnimi ranljivostmi prostora Web3.

Bodite pozorni na naš kanal Telegram, da zberete najnovejše vpoglede v naše storitve: https://t.me/quillhash

13 Ogledov

Časovni žig:

Več od Quillhash