Älykkäisiin sopimuksiin kohdistuvat palvelunestohyökkäykset: Kuinka korjata ja välttää (asiantuntijaopas) PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Älykkäisiin sopimuksiin kohdistuvat palvelunestohyökkäykset: kuinka korjata ja välttää (asiantuntijaopas)

Lukeaika: 6 pöytäkirja

Oletko koskaan käynyt sivustolla, jonka latautuminen kesti kauan, mutta huomasi, että sitä ei voi avata tällä hetkellä? Siinä on yksinkertaisesti kyse palvelunestohyökkäysten vaikutuksesta. 

Palvelunestohyökkäykset (DoS) ovat yksi monista haavoittuvuuksista, joita huomioidaan erityisesti älykkäitä sopimuksia tarkasteltaessa. Tämä blogi pyrkii purkamaan DoS-hyökkäyksen läpikotaisin – mitä se on, sen vaikutusta, tyyppejä ja paljon muuta lisättävää.

Mennään nopeasti sisään ja tutkitaan niitä kaikkia. 

Mikä on DoS-hyökkäys?

DoS-hyökkäys pyrkii häiritsemään verkon, palvelimen tai sovelluksen prosessointikykyä ja estämään laillisten käyttäjien pyyntöjen vastaanottamisen. Tässä hyökkääjä ylittää verkon lähettämällä lisää liikennettä, joka kuluttaa palvelimien muistia ja kaistanleveyttä. 

Lohkoketjun valtavan potentiaalin vuoksi ne ovat DoS-hyökkäysten ensisijainen kohde rikkauksien varastamiseksi. Tunnetuimmat kryptovaluutat, kuten Bitcoin, Ethereumjne., ovat myös kokeneet DoS-hyökkäyksiä. 

Distributed Denial of Service (DDoS)

Distributed Denial of Service (DDoS) on DoS-hyökkäys, jossa hyökkääjä ohjaa useita laitteita hyökkäyksen käynnistämiseksi kohdesolmua vastaan.

Hyökkääjä tarkkailee kohdesolmua ja kanavoi useita ohjaamiaan laitteita lähettääkseen suuren määrän tietoa kohdesolmuun. Tämä saa kohteen kaatumaan eikä pysty suorittamaan määritettyä tehtävää.  

DoS-hyökkäysten kohteet Blockchain-ekosysteemissä

DoS-hyökkäysten aiempien tapahtumien tallenteiden perusteella jokainen blockchain-ekosysteemin osa on alttiina DoS-hyökkäyksille. Ja muutamia mainitakseni, 

Kryptovaluuttalompakot: Kuten mitä tahansa lompakkoa, kryptovaluuttalompakkoa käytetään kryptovaluuttojen tallentamiseen, lähettämiseen tai vastaanottamiseen. Ja nämä online-lompakot käyttävät älykkäitä sopimuksia, jotka ovat alttiita DoS-hyökkäyksille, jotka estävät heidän palvelujaan ja vuorovaikutusta Dappsin kanssa. 

Kryptovaluutanvaihtopalvelut: Online-alusta, jossa kryptovaluutoilla käydään kauppaa ja vaihto tapahtuu käyttäjien välillä. Ne ovat ensisijaisia ​​kohteita hakkereille tehdä DoS-hyökkäyksiä, jotka aiheuttavat alustan ja sen palveluiden epäkäytettävyyden. 

Esimerkiksi: Bitcoin-vaihtoalusta, Bifinex on kärsinyt DDoS-hyökkäyksistä useita kertoja. 

Muisti(tapahtuma)varastot: Lohkoketjun tapahtumat on vahvistettava ennen kuin ne lisätään lohkoihin. Siihen asti tapahtumapyynnöt tallennetaan muistiin, joka on kuin vahvistamattomien tapahtumien arkisto, joka odottaa kaivostyöntekijän poimimista. 

Suuri maksutapahtuma on todennäköisimmin kaivosmiehen valitsema. Mempoolin täyttäminen monilla pienten maksujen tapahtumilla johtaa siihen, että käyttäjä maksaa korkeita maksuja tapahtumansa käsittelystä. Siten DoS-hyökkäys on tehnyt taikuutensa nostamassa käsittelymaksua. 

Konsensuksen osallistujat: He ovat pelaajia, jotka ratkaisevat logiikan ja päättävät lohkoketjuun lisättävät lohkot. DoS-hyökkäysten aiheuttaminen konsensusjohtajalle pysäyttää koko järjestelmän. 

Sekoituspalvelut: Se käyttää protokollaa, jonka avulla käyttäjät voivat suorittaa tapahtumia nimettömästi. He kärsivät DoS-hyökkäyksistä useilla tavoilla, kuten liiallisilla osallistumispyynnöillä sekoituspooliin, epäjohdonmukaisilla syötteillä sekoitusta varten jne. 

Älykkäät sopimukset: Älykäs sopimus on jokaisen lohkoketjun tapahtuman taustalla oleva protokolla. DoS-hyökkäykset älykkäitä sopimuksia vastaan ​​voivat kaataa solmun, joka pysäyttää sen isännöimien Dappien toiminnan.

DoS-hyökkäykset suoritetaan niille useilla mahdollisilla tavoilla, joita käsitellään seuraavassa osiossa.

Analysoidaan älykkäiden sopimusten DoS-hyökkäystyyppejä 

Älykkäiden sopimusten DoS-haavoittuvuus johtaa rajoittamattomaan resurssien käyttöön tai sopimuksen manipulointiin. Tämä johtaa normaalien toimintojen suorittamisen keskeyttämiseen tai sopimuksen logiikan keskeyttämiseen ja romahtamiseen. 

Alla on erilaisten DoS-hyökkäysten luokittelu älykkäissä sopimuksissa

Odottamaton Revert DoS

Tämän älykkäisiin sopimuksiin kohdistuvan DoS-hyökkäyksen tutkimiseksi otetaan esimerkkinä huutokauppasopimus. Huutokauppasopimus päivitetään jokaisella saadulla korkeimmalla tarjouksella ja palauttaa edellisen tarjoajan tarjoussumman, koska se on pienempi kuin nykyinen tarjous.

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

Hyökkääjäsopimus alustetaan huutokauppasopimuksella rakentajassa, joka saa pääsyn huutokauppasopimukseen. Tässä kutsumalla 'attack()'-funktiota hyökkääjä lukitsee summan ja siten hän ei pysty palauttamaan tarjoussummaa hyökkääjälle edes saatuaan sitä korkeamman tarjouksen. 

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

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

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

}

Tämä johtuu siitä, että "hyökkääjä"-sopimus ei sisällä mitään "receive()"- tai varatoimintoa Etherin hyvittämiseksi, mikä johtaa odottamattomaan palautumiseen. Tämä tekee hyökkääjästä sopimuksen aina korkeimman tarjouksen tekijäksi. 

Block Gas Limit DoS 

Lohkolla on käytettävän kaasun enimmäisraja, joka on verrannollinen suoritettavan laskennallisen työn määrään. Jos kaasuraja ylittyy, se johtaa kahdentyyppisiin DoS-hyökkäyksiin.

Gas Limit DoS – Rajoittamaton sopimustoiminta

On asetettu kaasuraja, ja jos tapahtumat saavuttavat asetettua rajaa korkeamman kaasurajan, tapahtuma epäonnistuu. 

Tilanne muuttuu vielä pahemmaksi, kun hyökkääjä manipuloi tarvittavaa kaasua. Silloin hyökkääjä lisää muutaman osoitteen saadakseen erittäin pienen hyvityksen. Jokainen palautus maksaa kaasumaksun; näin ollen kaasun hinta ylittää rajan, joka estää palautustapahtumia. 

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

Siksi tarvittavat vaiheet on otettava huomioon toteutettaessa silmukkaa taulukon yli. 

Block Täyte

Hyökkääjä käynnistää tämän hyökkäyksen estääkseen tapahtumien lisäämisen lohkoihin lähettämällä laskennallisesti intensiivisiä tapahtumia korkealla kaasun hinnalla. Useita tapahtumia toteutetaan samalla tavalla koko kaasurajan kuluttamiseksi. 

Maksamalla korkean kaasumaksun hyökkääjä varmistaa, että vain aiotut tapahtumat lisätään lohkoihin jättäen loput pois. 

Omistajan toiminta

Jokaisella sopimuksella on omistajan osoite, jolla on valtuudet avata tai keskeyttää tapahtumia. Koko toiminta riippuu omistajan osoitteesta, joten jos se katoaa, käyttäjä ei voi lähettää tokeneita ollenkaan ja sopimuksen toiminta romahtaa.

DoS-hyökkäyksen vaikutus

Lohkojen täyttäminen on yksi monista vaikutuksista, jotka estävät laillisten tapahtumien lisäämisen lohkoihin. DoS-hyökkäyksillä on kuitenkin useita muita vaikutuksia. 

Turvonnut pääkirja: Lohkoketjureskontra on paikka, johon tapahtumat kirjataan pysyvästi. Lohkoketjusolmut tallentavat kopion tapahtumista kaksinkertaisten kulujen varmentamiseksi. DoS-hyökkäys voi turvottaa kirjanpitoa roskapostitapahtumilla.

Verkkoliikenne: Tunnemme lohkoketjutoiminnot, jotka perustuvat vertaisverkkoon. Jokainen lohkoketjun solmu saa kopion tapahtumasta. DoS-tulva voi johtaa suureen tapahtumavolyymiin, mikä kuluttaa verkon kaistanleveyttä. 

Solmuvirheet: Blockchain toimii solmuissa, jotka vaativat ohjelmiston tuen käsittelemään suuria tietomääriä. Tapahtumatulvituksen aikana solmujen muisti saattaa loppua, mikä keskeyttää toiminnot.

Ohjelmiston kaatuminen: Kuten keskustelimme, mempoolilla tai lohkoilla on tietyt rajoitukset niille varatulle muistille. Ohjelmisto vastaanottaa, käsittelee ja tallentaa tapahtumia asetetun rajan sisällä. Kun saapuvat tapahtumat ylittävät sisäänrakennetut rajat, ohjelmisto kaatuu.  

Estä älykkäät sopimukset DoS-hyökkäyksiltä 

DoS-hyökkäysten analyysin perusteella voidaan käyttää seuraavia tapoja hyökkäyksen lieventämiseen. 

palapelit: Palvelimet voivat luoda pulmia, kuten muistipulmia, aikalukkopulmia, prosessoriin sidottuja pulmia jne. Jotta käyttäjä pääsee käyttämään palvelua, palapelit on ratkaistava, mikä torjuu roskapostihyökkäyksiä.

Maksuperusteinen lähestymistapa: Lohkoketjusta voidaan periä ylimääräinen maksu, kuten kaivospoolien kaivosmaksut, transaktiomaksut jne. Tämä tekee DoS-hakkeroinnista kallista hyökkääjille, mikä vähentää tällaiset hyökkäykset. 

Loppuhuomautus

Älykäs sopimusauditointi suoritettu klo QuillAudits etsii koodauksessa mahdollisesti olevia haavoittuvuuksia. Jotkut niistä sisältävät palautumisen haavoittuvuuden, tallennustörmäyksen, satunnaisuushyökkäyksen, palveluneston ja niin edelleen. 

Tämä tarkoittaa selvästi älykkäät sopimukset on testattu perusteellisesti, jotta ne eivät sisällä palvelunestohyökkäysuhkia. Tämä varmistaa, että projektisi on suojattu Web3-tilan mahdollisilta haavoittuvuuksilta.

Pidä silmällä Telegram-kanavaamme kerätäksesi viimeisimmät tiedot palveluistamme: https://t.me/quillhash

13 Näyttökerrat

Aikaleima:

Lisää aiheesta Quillhash