Denial of Service-angreb på smarte kontrakter: Sådan rettes og undgås (En ekspertvejledning) PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Denial of Service-angreb på smarte kontrakter: Sådan rettes og undgås (En ekspertvejledning)

Læsetid: 6 minutter

Har du nogensinde besøgt et websted, der tog lang indlæsningstid kun for at opdage, at det ikke kan åbnes i øjeblikket? Det handler simpelthen om effekten af ​​Denial of Service-angreb. 

Denial of Service (DoS)-angreb er en af ​​de mange sårbarheder, som man holder meget øje med, når man auditerer smarte kontrakter. Denne blog har til formål at slappe af i ins og outs af DoS-angrebet - hvad det er, dets indvirkning, typer og meget mere at tilføje.

Lad os hurtigt komme ind og udforske dem alle. 

Hvad er et DoS-angreb?

DoS-angreb har til hensigt at forstyrre behandlingsmulighederne på et netværk, en server eller en applikation og forhindrer i at tage imod anmodninger fra legitime brugere. I dette overvælder angriberen netværket ved at sende mere trafik, der opbruger servernes hukommelse og båndbredde. 

På grund af det enorme potentiale, som blockchain rummer, er de det primære mål for DoS-angreb for at stjæle rigdommene væk. De mest berømte kryptovalutaer, såsom Bitcoin, Ethereumosv., har også oplevet DoS-angreb. 

Distributed Denial of Service (DDoS)

Distributed Denial of Service (DDoS) er et DoS-angreb, der involverer angriberen, der kontrollerer flere enheder for at starte et angreb på målknuden.

Angriberen observerer målknuden og kanaliserer de flere enheder under hans kontrol for at sende en stor mængde information, der oversvømmer målknuden. Dette får målet til at gå ned og ude af stand til at udføre den specificerede opgave.  

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

Fra optagelserne af tidligere hændelser af DoS-angreb er alle dele af blockchain-økosystemet sårbare over for DoS-angreb. Og for at nævne nogle få, 

Cryptocurrency tegnebøger: Som med enhver tegnebog bruges cryptocurrency wallet til at gemme, sende eller modtage cryptocurrencies. Og disse online tegnebøger bruger smarte kontrakter, som er tilbøjelige til DoS-angreb, der hindrer deres tjenester og interaktion med Dapps. 

Udvekslingstjenester for kryptovaluta: Den online platform, hvor kryptovalutaer handles, og udvekslingen sker mellem brugere. De er primære mål for hackere til at udføre DoS-angreb, der forårsager utilgængeligheden af ​​platformen og dens tjenester. 

Eks: Bitcoin-udvekslingsplatform, Bifinex har været udsat for DDoS-angreb flere gange. 

Hukommelses(transaktions) puljer: Transaktioner på blockchain skal valideres, før de føjes til blokkene. Indtil da er transaktionsanmodningerne gemt i mempoolen, som er som et lager af ubekræftede transaktioner, der venter på at blive plukket af en minearbejder. 

Transaktionen med et højt gebyr vil højst sandsynligt blive valgt af minearbejderen. Så oversvømmelse af mempoolen med mange transaktioner med små gebyrer resulterer i, at brugeren betaler høje gebyrer for at få deres transaktion behandlet. Således har DoS-angrebet virket sin magi med at hæve behandlingsgebyret. 

Konsensusdeltagere: De er spillerne, der løser logikken og beslutter, hvilke blokke der skal tilføjes til blockchain. At påføre DoS-angreb på konsensuslederen stopper hele systemet. 

Blandingstjenester: Det anvender en protokol for brugerne til at udføre transaktioner anonymt. De udsættes for DoS-angreb på forskellige måder, såsom overdrevne anmodninger om deltagelse til blandepuljen, inkonsekvent input til shufflen osv. 

Smarte kontrakter: Smart kontrakt er den underliggende protokol bag hver transaktion på blockchain. DoS-angreb på smarte kontrakter kan crashe den node, der stopper funktionen af ​​Dapps, der hostes af den.

DoS-angreb udføres på dem på flere mulige måder, uddybet i det følgende afsnit.

Analyse af typer af Smart Contract DoS-angreb 

DoS-sårbarheden i smarte kontrakter resulterer i ubegrænset ressourceforbrug eller manipulation af kontrakten. Dette fører til suspension i udførelsen af ​​normale aktiviteter eller afbryder og kollapser kontraktens logik. 

Nedenfor ligger klassificeringen af ​​forskellige DoS-angreb i smarte kontrakter

Uventet Revert DoS

For at studere dette DoS-angreb på smarte kontrakter, lad os tage en auktionskontrakt som eksempel. Auktionskontrakten bliver opdateret med hvert højeste bud modtaget og returnerer budbeløbet fra den tidligere budgiver, da det er lavere end det aktuelle 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;
    }
}

Angriberkontrakten initialiseres med auktionskontrakten i konstruktøren, som får adgang til auktionskontrakten. I denne, ved at kalde 'attack()'-funktionen, låser angriberen beløbet og derved undlader den at returnere budbeløbet til angriberen, selv om han modtager et højere bud end det. 

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

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

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

}

Det er fordi 'angriber'-kontrakten ikke inkluderer nogen 'receive()'- eller reservefunktion til at refundere Ether, hvilket resulterer i den uventede tilbagevenden. Dette får angriberen til altid at være højestbydende. 

Bloker gasgrænse DoS 

Blokken har en maksimal grænse for gas, der skal bruges, som er proportional med mængden af ​​beregningsarbejde, der skal udføres. I tilfælde af overskridelse af gasgrænsen fører det til to typer DoS-angreb.

Gasgrænse DoS – Ubundet kontraktdrift

Der er en fastsat gasgrænse, og hvis transaktionerne når en højere gasgrænse end den fastsatte grænse, resulterer det i transaktionsfejl. 

Det bliver endnu værre, når angriberen manipulerer med den nødvendige gas. Det er, når angriberen tilføjer et par adresser for en meget lille refusion. Hver refusion koster et gasgebyr; således overstiger gasomkostningerne den grænse, der forhindrer tilbagebetalingstransaktionerne i at ske. 

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 skal nødvendige trin overvejes under implementering af en loop over et array. 

Blokfyldning

Angriberen indleder dette angreb for at forhindre transaktioner i at føje til blokkene ved at sende beregningsintensive transaktioner med høje gaspriser. Flere transaktioner udstedes på lignende måde for at forbruge hele gasgrænsen. 

Ved at betale det høje gasgebyr sikrer angriberen, at kun de tilsigtede transaktioner føjes til blokkene og udelader resten af ​​dem. 

Ejerhandling

Hver kontrakt har en ejeradresse, som har bemyndigelse til at åbne eller suspendere transaktioner. Hele operationen afhænger af ejerens adresse, og hvis den går tabt, kan brugeren slet ikke sende tokens, og kontraktens funktion vil kollapse.

Effekten af ​​DoS-angreb

Block stuffing er en af ​​de mange påvirkninger, der forhindrer legitime transaktioner i at blive tilføjet til blokkene. Der er dog flere andre virkninger af DoS-angreb. 

Oppustet hovedbog: Blockchain Ledger er det sted, hvor transaktionerne registreres permanent. Blockchain-noderne gemmer en kopi af transaktionerne for at verificere for dobbeltforbrug. Et DoS-angreb kan blæse hovedbogen op med spamtransaktioner.

Netværkstrafik: Vi kender blockchain-funktioner baseret på peer-to-peer-tilstand. Hver node i blockchain modtager en kopi af transaktionen. En DoS-oversvømmelse kan resultere i en stor transaktionsvolumen, der optager netværkets båndbredde. 

Nodefejl: Blockchain-funktioner på de noder, der kræver support af softwaren til at håndtere store mængder data. Under transaktionsoversvømmelse kan noderne løbe tør for hukommelse, hvilket stopper operationerne.

Softwarenedbrud: Som vi diskuterede, kommer mempoolen eller blokkene med visse begrænsninger på den hukommelse, der er allokeret til dem. Softwaren modtager, behandler og gemmer transaktioner inden for den fastsatte grænse. Når de indgående transaktioner overvælder de indbyggede grænser, går softwaren ned.  

Begræns smarte kontrakter fra DoS-angreb 

Fra analysen af ​​DoS-angreb kan følgende måder bruges til at afbøde angrebet. 

Puslespil: Serverne kan generere puslespil såsom hukommelses-puslespil, time-lock-puslespil, CPU-bundne puslespil osv. For at en bruger kan få adgang til en tjeneste, skal gåderne løses, hvilket bekæmper spam-angrebene.

Gebyrbaseret tilgang: Et ekstra gebyr kan pålægges blockchain, såsom minegebyrer for minepuljer, transaktionsgebyrer osv. Dette gør DoS-hacket dyrt for angriberne, og derved nedbringe sådanne angreb. 

Afsluttende note

En smart kontraktrevision udført kl QuillAudits ser ud til de potentielle sårbarheder, der ligger i kodningen. Nogle af dem inkluderer sårbarhed ved genindtræden, lagerkollision, tilfældighedsangreb, Denial of Service og så videre. 

Dette betyder helt klart smarte kontrakter er grundigt testet for at være fri for Denial of Service-angrebstrusler. Dette sikrer, at dit projekt er beskyttet mod de mulige sårbarheder i Web3-rummet.

Hold øje med vores Telegram-kanal for at samle den seneste indsigt om vores tjenester: https://t.me/quillhash

13 Views

Tidsstempel:

Mere fra Quillhash