Atacurile de refuzare a serviciului asupra contractelor inteligente: cum să remediați și să evitați (un ghid de experți) PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Atacurile de refuzare a serviciului asupra contractelor inteligente: cum să remediați și să evitați (un ghid de experți)

Timp de citit: 6 minute

Ați vizitat vreodată un site care a durat mult timp de încărcare doar pentru a constata că nu poate fi deschis în acest moment? Acesta este pur și simplu totul despre efectul atacurilor de refuzare a serviciului. 

Atacurile de tip Denial of Service (DoS) sunt una dintre numeroasele vulnerabilități la care se urmărește în mare măsură atunci când se auditează contractele inteligente. Acest blog își propune să relaxeze dezavantajele atacului DoS - ce este, impactul său, tipuri și multe altele de adăugat.

Să intrăm rapid și să le explorăm pe toate. 

Ce este un atac DoS?

Atacul DoS intenționează să perturbe capacitățile de procesare ale unei rețele, server sau aplicații, împiedicând preluarea cererilor de la utilizatorii legitimi. În acest sens, atacatorul copleșește rețeaua trimițând mai mult trafic care epuizează memoria și lățimea de bandă a serverelor. 

Datorită potențialului imens pe care blockchain-ul îl deține, acestea sunt ținta principală pentru atacurile DoS pentru a fura bogățiile. Cele mai cunoscute criptomonede, cum ar fi Bitcoin, Ethereum, etc., au suferit și atacuri DoS. 

Deniul de serviciu distribuit (DDoS)

Distributed Denial of Service (DDoS) este un atac DoS care implică atacatorul controlând mai multe dispozitive pentru a lansa un atac asupra nodului țintă.

Atacatorul observă nodul țintă și canalizează dispozitivele multiple aflate sub controlul său pentru a trimite o cantitate mare de informații care inundă nodul țintă. Acest lucru face ca ținta să se prăbușească și să nu poată îndeplini sarcina specificată.  

Țintele atacurilor DoS în ecosistemul Blockchain

Din înregistrările evenimentelor trecute ale atacurilor DoS, fiecare parte a ecosistemului blockchain este vulnerabilă la atacurile DoS. Și ca să numim câteva, 

Portofele cu criptomonede: Ca și în cazul oricărui portofel, portofelul cu criptomonede este folosit pentru a stoca, trimite sau primi criptomonede. Și aceste portofele online folosesc contracte inteligente, care sunt predispuse la atacuri DoS care le împiedică serviciile și interacțiunea cu Dapps. 

Servicii de schimb de criptomonede: Platforma online în care sunt tranzacționate criptomonede, iar schimbul are loc între utilizatori. Acestea sunt ținte principale pentru hackeri pentru a efectua atacuri DoS care provoacă indisponibilitatea platformei și a serviciilor sale. 

Ex: Platforma de schimb Bitcoin, Bifinex au suferit atacuri DDoS de mai multe ori. 

Pool-uri de memorie (tranzacții): Tranzacțiile pe blockchain trebuie să fie validate înainte de a fi adăugate la blocuri. Până atunci, cererile de tranzacție sunt stocate în mempool, care este ca un depozit de tranzacții neconfirmate care așteaptă să fie alese de un miner. 

Tranzacția cu o taxă mare este cel mai probabil să fie aleasă de miner. Așadar, inundarea mempool-ului cu multe tranzacții cu taxe mici are ca rezultat ca utilizatorul să plătească taxe mari pentru a-și procesa tranzacția. Astfel, atacul DoS și-a făcut magie în creșterea taxei de procesare. 

Participanți la consens: Ei sunt jucătorii care rezolvă logica și decid blocurile care vor fi adăugate în blockchain. Infligerea atacurilor DoS asupra liderului consens oprește întregul sistem. 

Servicii de mixare: Utilizează un protocol pentru ca utilizatorii să efectueze tranzacții în mod anonim. Aceștia suferă atacuri DoS prin diferite mijloace, cum ar fi solicitări excesive de participare la grupul de amestecare, intrare inconsecventă pentru amestecare etc. 

Contracte inteligente: Contractul inteligent este protocolul de bază din spatele fiecărei tranzacții pe blockchain. Atacurile DoS asupra contractelor inteligente pot prăbuși nodul care oprește funcționarea Dapp-urilor găzduite de acesta.

Atacurile DoS sunt efectuate asupra lor în mai multe moduri posibile, elaborate în secțiunea următoare.

Analizarea tipurilor de atacuri Smart Contract DoS 

Vulnerabilitatea DoS în contractele inteligente are ca rezultat utilizarea nelimitată a resurselor sau manipularea contractului. Aceasta duce la suspendarea în executarea activităților normale sau întrerupe și prăbușește logica contractului. 

Mai jos se află clasificarea diferitelor atacuri DoS în contractele inteligente

Reveniți DoS neașteptat

Pentru a studia acest atac DoS asupra contractelor inteligente, să luăm ca exemplu un contract de licitație. Contractul de licitație este actualizat cu fiecare ofertă cea mai mare primită și returnează suma ofertată a ofertantului anterior, deoarece este mai mică decât oferta actuală.

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

Contractul atacatorului este inițializat cu contractul de licitație în constructor, care obține acces la contractul de licitație. În acest sens, apelând funcția „atack()”, atacatorul blochează suma și, prin urmare, nu reușește să returneze atacatorului suma licitată chiar și atunci când primește o ofertă mai mare decât aceasta. 

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

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

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

}

Acest lucru se datorează faptului că contractul „atacatorului” nu include nicio funcție „receive()” sau de rezervă pentru a rambursa Ether, rezultând o revenire neașteptată. Acest lucru face ca atacatorul să fie întotdeauna cel mai mare ofertant. 

DoS limită de gaz bloc 

Blocul are o limită maximă de gaz de cheltuit, care este proporțională cu cantitatea de muncă de calcul care trebuie efectuată. În cazul depășirii limitei de gaz, aceasta duce la două tipuri de atacuri DoS.

Limita de gaze DoS – Operațiune cu contract nelimitat

Există o limită de gaz stabilită, iar dacă tranzacțiile ating o limită de gaz mai mare decât limita stabilită duce la eșecul tranzacției. 

Devine și mai rău atunci când atacatorul manipulează gazul necesar. Atunci atacatorul adaugă câteva adrese pentru o rambursare foarte mică. Fiecare rambursare costă o taxă de gaz; astfel, costul gazului depășește limita care împiedică efectuarea tranzacțiilor de rambursare. 

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

Prin urmare, pașii necesari trebuie luați în considerare în timpul implementării unei bucle peste o matrice. 

Umplutura bloc

Atacatorul inițiază acest atac pentru a împiedica tranzacțiile să se adauge la blocuri prin trimiterea de tranzacții intensive din punct de vedere computațional cu prețuri mari ale gazului. Mai multe tranzacții sunt emise în mod similar pentru a consuma întreaga limită de gaz. 

Achitând taxa mare de gaz, atacatorul se asigură că doar tranzacțiile intenționate sunt adăugate blocurilor, lăsând deoparte restul. 

Acțiunea proprietarului

Fiecare contract are o adresă de proprietar care are autoritatea de a deschide sau suspenda tranzacțiile. Întreaga operațiune depinde de adresa proprietarului, așa că dacă aceasta este pierdută, utilizatorul nu poate trimite deloc jetoane, iar funcționarea contractului se va prăbuși.

Impactul atacului DoS

Blocurile de umplutură este unul dintre numeroasele efecte care împiedică adăugarea tranzacțiilor legitime la blocuri. Cu toate acestea, există câteva alte efecte ale atacurilor DoS. 

Registrul umflat: Registrul blockchain este locul unde tranzacțiile sunt înregistrate permanent. Nodurile blockchain stochează o copie a tranzacțiilor pentru a verifica cheltuielile duble. Un atac DoS poate umfla registrul cu tranzacții spam.

Trafic de rețea: Cunoaștem funcțiile blockchain bazate pe modul peer-to-peer. Fiecare nod din blockchain primește o copie a tranzacției. O inundare DoS poate duce la un volum mare de tranzacții, consumând lățimea de bandă a rețelei. 

Eșecuri de nod: Blockchain funcționează pe nodurile care necesită suportul software-ului pentru a gestiona volume mari de date. În timpul inundațiilor tranzacțiilor, nodurile pot rămâne fără memorie, oprind operațiunile.

Crashdown software: După cum am discutat, mempool-ul sau blocurile vin cu anumite limite ale memoriei alocate acestora. Software-ul primește, procesează și stochează tranzacții în limita stabilită. Când tranzacțiile primite depășesc limitele încorporate, software-ul se blochează.  

Limitați contractele inteligente de la atacurile DoS 

Din analiza atacurilor DoS, pot fi folosite următoarele moduri pentru a atenua atacul. 

Puzzle-uri: Serverele pot genera puzzle-uri precum puzzle-uri de memorie, puzzle-uri cu blocare în timp, puzzle-uri legate de CPU, etc. Pentru ca un utilizator să aibă acces la un serviciu, puzzle-urile trebuie rezolvate, ceea ce combate atacurile de spam.

Abordare bazată pe taxe: O taxă suplimentară poate fi impusă blockchain-ului, cum ar fi taxele de mining pentru pool-urile de minerit, taxele de tranzacție etc. Acest lucru face ca hack-ul DoS să fie costisitor pentru atacatori, reducând astfel astfel de atacuri. 

Notă finală

Un audit de contract inteligent efectuat la QuillAudits caută potențialele vulnerabilități care se află în codificare. Unele dintre ele includ vulnerabilitatea de reintrare, coliziunea de stocare, atacul aleatoriu, refuzul serviciului și așa mai departe. 

Aceasta înseamnă în mod clar contracte inteligente sunt testate temeinic pentru a fi lipsite de amenințările de atac de tip Denial of Service. Acest lucru asigură că proiectul dumneavoastră este protejat de posibilele vulnerabilități ale spațiului Web3.

Atenție la canalul nostru Telegram pentru a aduna cele mai recente informații despre serviciile noastre: https://t.me/quillhash

13 Vizualizări

Timestamp-ul:

Mai mult de la Quillhash