Tjenestenektangrep på smarte kontrakter: Hvordan fikse og unngå (En ekspertveiledning) PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Tjenestenektangrep på smarte kontrakter: Hvordan fikse og unngå (En ekspertveiledning)

Lesetid: 6 minutter

Har du noen gang besøkt et nettsted som tok lang tid å laste bare for å oppdage at det ikke kan åpnes for øyeblikket? Det handler rett og slett bare om effekten av tjenestenektangrep. 

Denial of Service (DoS)-angrep er en av de mange sårbarhetene som man ser mest etter når man reviderer smarte kontrakter. Denne bloggen tar sikte på å slappe av med inn og ut av DoS-angrepet - hva det er, dets innvirkning, typer og mye mer å legge til.

La oss raskt gå inn og utforske dem alle. 

Hva er et DoS-angrep?

DoS-angrep har til hensikt å forstyrre behandlingsmulighetene til et nettverk, server eller applikasjon, og hindrer fra å ta opp forespørsler fra legitime brukere. I dette overvelder angriperen nettverket ved å sende mer trafikk som tømmer servernes minne og båndbredde. 

På grunn av det enorme potensialet som blockchain har, er de det primære målet for DoS-angrep for å stjele rikdommene. De mest kjente kryptovalutaene, som Bitcoin, Ethereum, etc., har også opplevd DoS-angrep. 

Distribuert Denial of Service (DDoS)

Distribuert Denial of Service (DDoS) er et DoS-angrep som involverer angriperen som kontrollerer flere enheter for å starte et angrep på målnoden.

Angriperen observerer målnoden og kanaliserer de flere enhetene under hans kontroll for å sende en stor mengde informasjon som oversvømmer målnoden. Dette gjør at målet krasjer og ikke klarer å oppfylle den angitte oppgaven.  

Mål for DoS-angrep i Blockchain-økosystemet

Fra registreringene av tidligere hendelser av DoS-angrep, er hver del av blokkjedeøkosystemet sårbart for DoS-angrep. Og for å nevne noen, 

Cryptocurrency lommebøker: Som med enhver lommebok, brukes kryptovaluta-lommeboken til å lagre, sende eller motta kryptovalutaer. Og disse nettlommebøkene bruker smarte kontrakter, som er utsatt for DoS-angrep som hindrer deres tjenester og interaksjon med Dapps. 

Utvekslingstjenester for kryptovaluta: Nettplattformen der kryptovalutaer handles, og utvekslingen skjer mellom brukere. De er hovedmål for hackere for å utføre DoS-angrep som forårsaker utilgjengelighet av plattformen og dens tjenester. 

Eks: Bitcoin-utvekslingsplattform, Bifinex har vært utsatt for DDoS-angrep flere ganger. 

Minne(transaksjons) pooler: Transaksjoner på blokkjeden må valideres før de legges til blokkene. Inntil da er transaksjonsforespørslene lagret i mempoolen, som er som et lager av ubekreftede transaksjoner som venter på å bli plukket av en gruvearbeider. 

Transaksjonen med et høyt gebyr er mest sannsynlig plukket av gruvearbeideren. Så å oversvømme mempoolen med mange transaksjoner med små gebyrer resulterer i at brukeren betaler høye gebyrer for å få transaksjonen sin behandlet. Dermed har DoS-angrepet virket sin magi i å øke behandlingsgebyret. 

Konsensusdeltakere: De er aktørene som løser logikken og bestemmer blokkene som skal legges til blokkjeden. Å påføre DoS-angrep på konsensuslederen stopper hele systemet. 

Blandingstjenester: Den bruker en protokoll for at brukerne skal utføre transaksjoner anonymt. De lider av DoS-angrep på forskjellige måter, for eksempel overdrevne deltakelsesforespørsler til blandebassenget, inkonsekvente input for shuffle, etc. 

Smarte kontrakter: Smart kontrakt er den underliggende protokollen bak hver transaksjon på blokkjeden. DoS-angrep på smarte kontrakter kan krasje noden som stopper funksjonen til Dapps som den er vert for.

DoS-angrep utføres på dem på flere mulige måter, utdypet i følgende avsnitt.

Analysere typer Smart Contract DoS-angrep 

DoS-sårbarheten i smarte kontrakter resulterer i ubegrenset ressursbruk eller manipulering av kontrakten. Dette fører til suspensjon i utførelsen av normale aktiviteter eller avbryter og kollapser logikken i kontrakten. 

Nedenfor ligger klassifiseringen av ulike DoS-angrep i smarte kontrakter

Uventet Tilbakestill DoS

For å studere dette DoS-angrepet på smarte kontrakter, la oss ta en auksjonskontrakt som et eksempel. Auksjonskontrakten oppdateres med hvert høyeste bud som mottas og returnerer budbeløpet til forrige budgiver ettersom det er lavere enn gjeldende bud.

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

Angriperkontrakten initialiseres med auksjonskontrakten i konstruktøren, som får tilgang til auksjonskontrakten. I dette, ved å kalle 'attack()'-funksjonen, låser angriperen beløpet og dermed klarer den ikke å returnere budbeløpet til angriperen selv om han mottar et høyere bud enn det. 

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

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

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

}

Det er fordi 'angriper'-kontrakten ikke inkluderer noen 'receive()'- eller reservefunksjon for å refundere Ether, noe som resulterer i uventet tilbakeføring. Dette gjør at angriperen alltid har høyestbydende kontrakt. 

Blokker gassgrense DoS 

Blokken har en maksimal grense for gass som skal brukes som er proporsjonal med mengden beregningsarbeid som skal gjøres. Ved overskridelse av gassgrensen fører det til to typer DoS-angrep.

Gassgrense DoS – Ubundet kontraktsdrift

Det er en fastsatt gassgrense, og hvis transaksjonene når en høyere gassgrense enn den fastsatte grensen resulterer det i transaksjonssvikt. 

Det blir enda verre når angriperen manipulerer gassen som trengs. Det er da angriperen legger til noen få adresser for en veldig liten refusjon. Hver refusjon koster en gassavgift; dermed overskrider gasskostnaden grensen som stopper refusjonstransaksjonene fra å skje. 

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

Derfor må nødvendige trinn vurderes når du implementerer en sløyfe over en matrise. 

Block Stuffing

Angriperen initierer dette angrepet for å hindre transaksjoner i å legge til blokkene ved å sende beregningsintensive transaksjoner med høye gasspriser. Flere transaksjoner utstedes på lignende måte for å forbruke hele gassgrensen. 

Ved å betale den høye gassavgiften sikrer angriperen at kun de tiltenkte transaksjonene legges til blokkene og utelater resten av dem. 

Eierhandling

Hver kontrakt har en eieradresse som har myndighet til å åpne eller suspendere transaksjoner. Hele operasjonen avhenger av eierens adresse, og hvis den går tapt, kan ikke brukeren sende tokens i det hele tatt, og kontraktsfunksjonen vil kollapse.

Effekten av DoS-angrep

Block stuffing er en av de mange konsekvensene som forhindrer at legitime transaksjoner blir lagt til blokkene. Imidlertid er det flere andre konsekvenser av DoS-angrep. 

Oppblåst hovedbok: Blockchain-reskontroen er der transaksjonene registreres permanent. Blockchain-nodene lagrer en kopi av transaksjonene for å verifisere for dobbeltforbruk. Et DoS-angrep kan blåse opp hovedboken med spam-transaksjoner.

Nettverkstrafikk: Vi kjenner blokkjedefunksjoner basert på peer-to-peer-modus. Hver node i blokkjeden mottar en kopi av transaksjonen. En DoS-oversvømmelse kan resultere i et stort transaksjonsvolum, som forbruker nettverksbåndbredden. 

Nodefeil: Blockchain-funksjoner på nodene som krever støtte fra programvaren for å håndtere store datamengder. Under transaksjonsflom kan nodene gå tom for minne, noe som stopper operasjonene.

Programvarekrasj: Som vi diskuterte, kommer mempoolen eller blokkene med visse begrensninger på minnet som er tildelt dem. Programvaren mottar, behandler og lagrer transaksjoner innenfor den angitte grensen. Når de innkommende transaksjonene overvelder de innebygde grensene, krasjer programvaren.  

Begrens smarte kontrakter fra DoS-angrep 

Fra analysen av DoS-angrep kan følgende måter brukes for å dempe angrepet. 

Puslespill: Serverne kan generere gåter som minnepuslespill, tidslåspuslespill, CPU-bundne puslespill osv. For at en bruker skal få tilgang til en tjeneste, må gåtene løses, noe som bekjemper spam-angrepene.

Gebyrbasert tilnærming: En ekstra avgift kan pålegges blokkjeden, slik som gruveavgifter for gruvebassenger, transaksjonsgebyrer osv. Dette gjør DoS-hacket kostbart for angriperne, og får dermed ned slike angrep. 

Avsluttende merknad

En smart kontraktrevisjon utført kl QuillAudits ser etter de potensielle sårbarhetene som ligger i kodingen. Noen av dem inkluderer sårbarhet ved gjeninntreden, lagringskollisjon, tilfeldighetsangrep, Denial of Service og så videre. 

Dette betyr helt klart smarte kontrakter er grundig testet for å være fri for Denial of Service-angrepstrusler. Dette sikrer at prosjektet ditt er skjermet fra mulige sårbarheter i Web3-området.

Se opp for vår Telegram-kanal for å samle den siste innsikten om tjenestene våre: https://t.me/quillhash

13 Visninger

Tidstempel:

Mer fra Quillhash