Denial-of-service-aanvallen op slimme contracten: hoe u PlatoBlockchain-gegevensinformatie kunt oplossen en vermijden (een deskundige gids). Verticaal zoeken. Ai.

Denial-of-service-aanvallen op slimme contracten: oplossen en vermijden (een deskundige gids)

Leestijd: 6 minuten

Heb je ooit een site bezocht die lang duurde om te laden om te ontdekken dat deze op dit moment niet kan worden geopend? Dat is gewoon alles over het effect van Denial of Service Attacks. 

Denial of Service (DoS)-aanvallen zijn een van de vele kwetsbaarheden waar vooral op wordt gelet bij het controleren van slimme contracten. Deze blog is bedoeld om de ins en outs van de DoS-aanval te ontrafelen - wat het is, de impact, typen en nog veel meer om toe te voegen.

Laten we snel naar binnen gaan en ze allemaal verkennen. 

Wat is een DoS-aanval?

DoS-aanvallen zijn bedoeld om de verwerkingscapaciteiten van een netwerk, server of applicatie te verstoren, waardoor ze de verzoeken van legitieme gebruikers niet kunnen accepteren. Hierbij overweldigt de aanvaller het netwerk door meer verkeer te verzenden dat het geheugen en de bandbreedte van de servers uitput. 

Vanwege het enorme potentieel dat blockchain biedt, zijn ze het primaire doelwit voor DoS-aanvallen om de rijkdommen te stelen. De meest bekende cryptocurrencies, zoals Bitcoin, Ethereum, enz., hebben ook DoS-aanvallen meegemaakt. 

Distributed Denial of Service (DDoS)

Distributed Denial of Service (DDoS) is een DoS-aanval waarbij de aanvaller meerdere apparaten bestuurt om een โ€‹โ€‹aanval op het doelknooppunt uit te voeren.

De aanvaller observeert het doelknooppunt en kanaliseert de meerdere apparaten onder zijn controle om een โ€‹โ€‹grote hoeveelheid informatie naar het doelknooppunt te sturen. Hierdoor crasht het doel en kan het de opgegeven taak niet uitvoeren.  

Doelen van DoS-aanvallen in het blockchain-ecosysteem

Uit de opnames van eerdere gebeurtenissen van DoS-aanvallen blijkt dat elk onderdeel van het blockchain-ecosysteem kwetsbaar is voor DoS-aanvallen. En om er een paar te noemen, 

Portefeuilles voor cryptovaluta: Zoals bij elke portemonnee, wordt de cryptocurrency-portemonnee gebruikt om cryptocurrencies op te slaan, te verzenden of te ontvangen. En die online portemonnees gebruiken slimme contracten, die gevoelig zijn voor DoS-aanvallen die hun diensten en interactie met Dapps belemmeren. 

Cryptocurrency-uitwisselingsdiensten: Het online platform waarop cryptocurrencies worden verhandeld en de uitwisseling plaatsvindt tussen gebruikers. Ze zijn de voornaamste doelwitten voor hackers om DoS-aanvallen uit te voeren die ervoor zorgen dat het platform en zijn services niet beschikbaar zijn. 

Ex: Bitcoin-uitwisselingsplatform, Bifinex heeft verschillende keren DDoS-aanvallen ondergaan. 

Geheugen(transactie)pools: Transacties op de blockchain moeten worden gevalideerd voordat ze aan de blokken worden toegevoegd. Tot die tijd worden de transactieverzoeken opgeslagen in de mempool, die lijkt op een opslagplaats van niet-bevestigde transacties die wachten om door een mijnwerker te worden geplukt. 

De transactie met een hoge vergoeding wordt het meest waarschijnlijk gekozen door de miner. Dus het overspoelen van de mempool met veel transacties van kleine vergoedingen heeft tot gevolg dat de gebruiker hoge kosten betaalt om hun transactie te laten verwerken. Dus de DoS-aanval heeft zijn magie bewerkt door de verwerkingskosten te verhogen. 

Consensusdeelnemers: Zij zijn de spelers die de logica oplossen en beslissen welke blokken aan de blockchain moeten worden toegevoegd. Het uitvoeren van DoS-aanvallen op de consensusleider stopt het hele systeem. 

Mengdiensten: Het maakt gebruik van een protocol voor de gebruikers om anoniem transacties uit te voeren. Ze lijden op verschillende manieren aan DoS-aanvallen, zoals buitensporige deelnameverzoeken aan de mengpool, inconsistente invoer voor de shuffle, enz. 

Slimme contracten: Smart contract is het onderliggende protocol achter elke transactie op de blockchain. DoS-aanvallen op slimme contracten kunnen het knooppunt laten crashen dat de werking van Dapps die erdoor worden gehost stopt.

DoS-aanvallen worden op verschillende manieren op hen uitgevoerd, die in de volgende sectie worden toegelicht.

Soorten Smart Contract DoS-aanvallen analyseren 

De DoS-kwetsbaarheid in slimme contracten resulteert in onbeperkt gebruik van bronnen of manipulatie van het contract. Dit leidt tot opschorting van de uitvoering van normale activiteiten of onderbreekt en bezwijkt de logica van het contract. 

Hieronder vindt u de classificatie van verschillende DoS-aanvallen in slimme contracten

Onverwachte herstel DoS

Om deze DoS-aanval op slimme contracten te bestuderen, nemen we als voorbeeld een veilingcontract. Het veilingcontract wordt bijgewerkt met elk hoogste bod dat is ontvangen en retourneert het biedingsbedrag van de vorige bieder omdat dit lager is dan het huidige bod.

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

Het aanvallercontract wordt geรฏnitialiseerd met het veilingcontract in de constructor, die toegang krijgt tot het veilingcontract. Hierbij vergrendelt de aanvaller, door de functie 'attack()' aan te roepen, het bedrag en daardoor slaagt hij er niet in het geboden bedrag aan de aanvaller terug te geven, zelfs niet wanneer hij een hoger bod ontvangt. 

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

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

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

}

Het is omdat het 'attacker'-contract geen 'receive()' of fallback-functie bevat om Ether terug te betalen, wat resulteert in de onverwachte terugkeer. Dit zorgt ervoor dat de aanvaller altijd de hoogste bieder is. 

Blokkeer gaslimiet DoS 

Het blok heeft een maximale hoeveelheid gas die moet worden uitgegeven, die evenredig is aan de hoeveelheid rekenwerk die moet worden gedaan. Bij overschrijding van de gaslimiet leidt dit tot twee soorten DoS-aanvallen.

Gaslimiet DoS - Onbeperkte contractwerking

Er is een vaste gaslimiet, en als de transacties een hogere gaslimiet bereiken dan de ingestelde limiet resulteert dit in een mislukte transactie. 

Het wordt nog erger wanneer de aanvaller het benodigde gas manipuleert. Dat is wanneer de aanvaller een paar adressen toevoegt voor een zeer kleine terugbetaling. Elke terugbetaling kost een gasvergoeding; dus overschrijden de gaskosten de limiet die ervoor zorgt dat de terugbetalingstransacties niet plaatsvinden. 

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

Daarom moeten de nodige stappen worden overwogen bij het implementeren van een lus over een array. 

Blok vulling

De aanvaller initieert deze aanval om te voorkomen dat transacties aan de blokken worden toegevoegd door rekenintensieve transacties met hoge gasprijzen te verzenden. Verschillende transacties worden op dezelfde manier uitgegeven om de volledige gaslimiet te verbruiken. 

Door de hoge gasvergoeding te betalen, zorgt de aanvaller ervoor dat alleen de beoogde transacties aan de blokken worden toegevoegd, zonder de rest. 

Eigenaar actie

Elk contract heeft een eigenaarsadres dat de bevoegdheid heeft om transacties te openen of op te schorten. De hele operatie hangt af van het adres van de eigenaar, en als het dus verloren gaat, kan de gebruiker helemaal geen tokens verzenden en zal de werking van het contract instorten.

Impact van DoS-aanval

Blokvulling is een van de vele effecten die voorkomen dat legitieme transacties aan de blokken worden toegevoegd. Er zijn echter verschillende andere effecten van DoS-aanvallen. 

Opgeblazen grootboek: In het blockchain-grootboek worden de transacties permanent geregistreerd. De blockchain-knooppunten slaan een kopie van de transacties op om te controleren op dubbele uitgaven. Een DoS-aanval kan het grootboek doen opzwellen met spamtransacties.

Netwerk verkeer: We kennen blockchain-functies op basis van peer-to-peer-modus. Elk knooppunt in de blockchain ontvangt een kopie van de transactie. Een DoS-flooding kan resulteren in een groot transactievolume, waardoor de netwerkbandbreedte wordt verbruikt. 

Knooppuntstoringen: Blockchain-functies op de knooppunten die de ondersteuning van de software nodig hebben om grote hoeveelheden gegevens te verwerken. Tijdens het overstromen van transacties kunnen de knooppunten onvoldoende geheugen hebben, waardoor de bewerkingen worden stopgezet.

Software-crashdown: Zoals we hebben besproken, hebben de mempool of blokken bepaalde limieten voor het geheugen dat eraan is toegewezen. De software ontvangt, verwerkt en slaat transacties op binnen de ingestelde limiet. Wanneer de inkomende transacties de ingebouwde limieten overschrijden, crasht de software.  

Beperk slimme contracten tegen DoS-aanvallen 

Uit de analyse van DoS-aanvallen kunnen de volgende manieren worden gebruikt om de aanval te mitigeren. 

puzzels: De servers kunnen puzzels genereren zoals geheugenpuzzels, tijdslotpuzzels, CPU-gebonden puzzels, enz. Om een โ€‹โ€‹gebruiker toegang te geven tot een dienst, moeten de puzzels worden opgelost, wat de spamaanvallen bestrijdt.

Op vergoedingen gebaseerde aanpak: Aan de blockchain kan een extra vergoeding worden geheven, zoals mining fees voor mining pools, transactiekosten, etc. Dit maakt de DoS-hack kostbaar voor de aanvallers, waardoor dergelijke aanvallen worden verijdeld. 

Slotnota

Een slimme contractaudit uitgevoerd bij QuillAudits let op de mogelijke kwetsbaarheden die in de codering liggen. Sommigen van hen omvatten herintredingskwetsbaarheid, opslagbotsing, willekeurigheidsaanval, Denial of Service enzovoort. 

Dit betekent duidelijk de slimme contracten zijn grondig getest om vrij te zijn van Denial of Service-aanvallen. Dit zorgt ervoor dat uw project wordt afgeschermd van de mogelijke kwetsbaarheden van de Web3-ruimte.

Kijk uit voor ons Telegram-kanaal om de nieuwste inzichten over onze services te verzamelen: https://t.me/quillhash

13 keer bekeken

Tijdstempel:

Meer van Quillhash