Nutikate lepingute teenusest keeldumise rünnakud: kuidas parandada ja vältida (ekspertjuhend) PlatoBlockchaini andmeluure. Vertikaalne otsing. Ai.

Nutikate lepingute teenusest keeldumise rünnakud: kuidas neid parandada ja vältida (ekspertjuhend)

Lugemise aeg: 6 protokoll

Kas olete kunagi külastanud saiti, mille laadimine võttis kaua aega, kuid avastasite, et seda ei saa praegu avada? See on lihtsalt kõik teenuse keelamise rünnakute mõju kohta. 

Teenuse keelamise (DoS) rünnakud on üks paljudest haavatavustest, millele nutikate lepingute auditeerimisel tähelepanu pööratakse. Selle ajaveebi eesmärk on lahti harutada DoS-rünnaku läbi ja lõhki – mis see on, selle mõju, tüübid ja palju muud, mida lisada.

Lähme kiiresti sisse ja uurime neid kõiki. 

Mis on DoS-rünnak?

DoS-rünnak kavatseb häirida võrgu, serveri või rakenduse töötlemisvõimalusi, hoides ära seaduslike kasutajate päringute vastuvõtmise. Sel juhul ületab ründaja võrgu, saates rohkem liiklust, mis tühjendab serverite mälu ja ribalaiust. 

Plokiahela tohutu potentsiaali tõttu on need DoS-i rünnakute peamine sihtmärk, et varastada rikkusi. Kõige kuulsamad krüptovaluutad, nagu Bitcoin, Ethereumjne, on samuti kogenud DoS rünnakuid. 

Distributed Denial of Service (DDoS)

Distributed Denial of Service (DDoS) on DoS-rünnak, mille käigus ründaja kontrollib mitut seadet, et käivitada rünnak sihtsõlme vastu.

Ründaja jälgib sihtsõlme ja suunab mitu enda kontrolli all olevat seadet, et saata sihtsõlme üle suure hulga teavet. See paneb sihtmärgi kokku jooksma ja ei suuda määratud ülesannet täita.  

DoS-i rünnakute sihtmärgid plokiahela ökosüsteemis

Varasemate DoS-rünnakute sündmuste salvestuste põhjal on plokiahela ökosüsteemi kõik osad DoS-i rünnakute suhtes haavatavad. Ja kui nimetada mõnda, 

Krüptovaluuta rahakotid: Nagu iga rahakoti puhul, kasutatakse ka krüptoraha rahakotti krüptovaluutade hoidmiseks, saatmiseks või vastuvõtmiseks. Ja need veebirahakotid kasutavad nutikaid lepinguid, mis on altid DoS-i rünnakutele, mis takistavad nende teenuseid ja suhtlemist Dappsiga. 

Krüptovaluuta vahetusteenused: Veebiplatvorm, kus kaubeldakse krüptovaluutadega ja vahetatakse kasutajate vahel. Need on häkkerite peamised sihtmärgid DoS-rünnakute läbiviimisel, mis põhjustavad platvormi ja selle teenuste kättesaamatuks. 

Näiteks: Bitcoini vahetusplatvorm, Bifinex on mitu korda kannatanud DDoS-i rünnakute all. 

Mälu (tehingute) kogumid: Plokiahela tehingud tuleb enne plokkidesse lisamist kinnitada. Seni hoitakse tehingupäringuid mempoolis, mis on nagu kinnitamata tehingute hoidla, mis ootab kaevandaja poolt väljavalimist. 

Kõrge tasuga tehingu nokitseb tõenäoliselt kaevandaja. Nii et mempooli üleujutamine paljude väikeste tasudega tehingutega toob kaasa selle, et kasutaja maksab tehingu töötlemise eest suuri tasusid. Seega on DoS-rünnak töötlemistasu tõstmisel oma võlu teinud. 

Konsensuse osalejad: Nemad on mängijad, kes lahendavad loogika ja otsustavad plokiahelasse lisatavad plokid. DoS-rünnakute tekitamine konsensusjuhile peatab kogu süsteemi. 

Segamisteenused: See kasutab kasutajatele anonüümseks tehingute tegemiseks protokolli. Nad kannatavad DoS rünnakute all erinevatel viisidel, näiteks liigsed osalemistaotlused segamiskogumile, ebajärjekindel segamise sisend jne. 

Nutikad lepingud: Nutikas leping on iga plokiahela tehingu aluseks olev protokoll. DoS-i rünnakud nutikatele lepingutele võivad krahhida sõlme, mis peatab selle hostitud Dappide toimimise.

DoS-rünnakuid sooritatakse nende vastu mitmel võimalikul viisil, mida kirjeldatakse järgmises jaotises.

Nutikate lepingute DoS-rünnakute tüüpide analüüsimine 

DoS-i haavatavus nutikates lepingutes toob kaasa piiramatu ressursikasutuse või lepinguga manipuleerimise. See toob kaasa tavatoimingute peatamise või lepingu loogika katkestamise ja kokkuvarisemise. 

Allpool on nutikate lepingute erinevate DoS-rünnakute klassifikatsioon

Ootamatu Revert DoS

Selle nutikatele lepingutele suunatud DoS-rünnaku uurimiseks võtame näiteks oksjonilepingu. Oksjonilepingut uuendatakse iga laekunud kõrgeima pakkumisega ja tagastatakse eelmise pakkuja pakkumise summa, kuna see on praegusest pakkumisest väiksem.

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

Ründaja leping initsialiseeritakse oksjonilepinguga konstruktoris, kes saab juurdepääsu oksjonilepingule. Selle puhul lukustab ründaja funktsiooni 'attack()' kutsudes summa ja seetõttu ei suuda ta pakkumise summat ründajale tagastada isegi siis, kui ta saab sellest kõrgema pakkumise. 

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

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

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

}

Põhjus on selles, et "ründaja" leping ei sisalda eetri tagasimaksmiseks ühtegi "receive()" ega varufunktsiooni, mille tulemuseks on ootamatu tagasipöördumine. See muudab ründaja lepingu alati kõrgeima pakkumise tegijaks. 

Block Gas Limit DoS 

Plokil on kulutatava gaasi maksimaalne piirmäär, mis on võrdeline tehtava arvutustöö mahuga. Gaasipiirangu ületamine toob kaasa kahte tüüpi DoS rünnakud.

Gas Limit DoS – Piiramatu lepinguline operatsioon

Gaasilimiit on seatud ja kui tehingud jõuavad seatud limiidist kõrgemale gaasilimiidile, siis tehing ebaõnnestub. 

See muutub veelgi hullemaks, kui ründaja manipuleerib vajaliku gaasiga. See on siis, kui ründaja lisab väga väikese tagasimakse saamiseks mõned aadressid. Iga tagasimakse eest tuleb maksta gaasitasu; seega ületab gaasikulu piiri, mis peatab tagasimaksetehingute toimumise. 

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

Seetõttu tuleb massiivi üle tsükli rakendamisel kaaluda vajalikke samme. 

Plokk täidis

Ründaja algatab selle rünnaku, et takistada tehingute lisamist plokkidesse, saates arvutuslikult intensiivseid tehinguid kõrge gaasihinnaga. Sarnasel viisil vormistatakse mitu tehingut kogu gaasilimiidi tarbimiseks. 

Kõrget gaasitasu makstes tagab ründaja, et plokkidesse lisatakse ainult kavandatud tehingud, jättes need ülejäänud välja. 

Omaniku tegevus

Igal lepingul on omaniku aadress, kellel on õigus tehinguid avada või peatada. Kogu toiming sõltub omaniku aadressist, mistõttu selle kadumise korral ei saa kasutaja üldse žetoone saata ja lepingu toimimine kukub kokku.

DoS-i rünnaku mõju

Plokkide täitmine on üks paljudest mõjudest, mis takistavad seaduslike tehingute lisamist plokkidesse. DoS-i rünnakutel on aga mitmeid muid mõjusid. 

Ülepuhutud pearaamat: Plokiahela pearaamat on koht, kus tehingud registreeritakse püsivalt. Plokiahela sõlmed salvestavad tehingute koopiad, et kontrollida topeltkulutusi. DoS-rünnak võib pearaamatut rämpspostitehingutega üle ujutada.

Võrguliiklus: Teame plokiahela funktsioone, mis põhinevad peer-to-peer režiimil. Iga plokiahela sõlm saab tehingu koopia. DoS-i üleujutus võib kaasa tuua suure tehingumahu, mis kulutab võrgu ribalaiust. 

Sõlme tõrked: Plokiahela funktsioonid sõlmedes, mis nõuavad suurte andmemahtude käsitlemiseks tarkvara tuge. Tehingu üleujutamise ajal võib sõlmede mälu tühjaks saada, mis peatab toimingud.

Tarkvara krahh: Nagu me arutasime, on mempoolil või plokkidel neile eraldatud mälule teatud piirangud. Tarkvara võtab vastu, töötleb ja salvestab tehinguid seatud limiidi piires. Kui sissetulevad tehingud ületavad sisseehitatud limiidid, jookseb tarkvara kokku.  

Piirake nutikaid lepinguid DoS-i rünnakute eest 

DoS-rünnakute analüüsi põhjal saab rünnaku leevendamiseks kasutada järgmisi viise. 

Mõistatused: Serverid võivad genereerida mõistatusi, nagu mälumõistatused, ajaluku mõistatused, protsessoriga seotud mõistatused jne. Et kasutaja saaks teenusele juurdepääsu, tuleb mõistatused lahendada, mis võitleb rämpsposti rünnakutega.

Tasupõhine lähenemine: Plokiahelale võib kehtestada lisatasud, näiteks kaevandamistasud kaevanduskogumite eest, tehingutasud jne. See muudab DoS-i häkkimise ründajatele kulukaks, vähendades seeläbi selliseid rünnakuid. 

Lõppmärkus

Tark lepingu audit teostati aadressil QuillAudits otsib võimalikke turvaauke, mis kodeerimises peituvad. Mõned neist hõlmavad uuesti sisenemise haavatavust, salvestuse kokkupõrget, juhuslikkuse rünnakut, teenuse keelamist ja nii edasi. 

See tähendab selgelt arukad lepingud on põhjalikult testitud, et need ei sisaldaks teenuse keelamise rünnakuid. See tagab, et teie projekt on kaitstud Web3 ruumi võimalike haavatavuste eest.

Vaadake meie Telegrami kanalit, et koguda uusimaid teadmisi meie teenuste kohta: https://t.me/quillhash

13 views

Ajatempel:

Veel alates Quillhash