Serangan Denial of Service Pada Kontrak Cerdas: Cara Memperbaiki dan Menghindari (Panduan Ahli) Intelijen Data PlatoBlockchain. Pencarian Vertikal. Ai.

Serangan Denial of Service Pada Kontrak Cerdas: Cara Memperbaiki dan Menghindari (Panduan Ahli)

Waktu Baca: 6 menit

Pernah mengunjungi situs yang membutuhkan waktu pemuatan lama hanya untuk menemukan bahwa itu tidak dapat dibuka saat ini? Itu hanya tentang efek Denial of Service Attacks. 

Serangan Denial of Service (DoS) adalah salah satu dari banyak kerentanan yang paling diwaspadai saat mengaudit kontrak pintar. Blog ini bertujuan untuk melepaskan seluk beluk serangan DoS - apa itu, Dampaknya, jenisnya, dan banyak lagi untuk ditambahkan.

Ayo cepat masuk dan jelajahi semuanya. 

Apa itu Serangan DoS?

Serangan DoS bermaksud mengganggu kemampuan pemrosesan jaringan, server atau aplikasi, menahan diri dari menerima permintaan dari pengguna yang sah. Dalam hal ini, penyerang membanjiri jaringan dengan mengirimkan lebih banyak lalu lintas yang menghabiskan memori dan bandwidth server. 

Karena potensi besar yang dimiliki blockchain, mereka adalah target utama serangan DoS untuk mencuri kekayaan. Cryptocurrency paling terkenal, seperti Bitcoin, Ethereum, dll., juga mengalami serangan DoS. 

Distributed Denial of Service (DDoS)

Distributed Denial of Service (DDoS) adalah serangan DoS yang melibatkan penyerang yang mengendalikan beberapa perangkat untuk meluncurkan serangan pada node target.

Penyerang mengamati node target dan menyalurkan beberapa perangkat di bawah kendalinya untuk mengirim sejumlah besar informasi yang membanjiri node target. Ini membuat target crash dan tidak dapat memenuhi tugas yang ditentukan.  

Target Serangan DoS Di Ekosistem Blockchain

Dari rekaman kejadian serangan DoS di masa lalu, setiap bagian dari ekosistem blockchain rentan terhadap serangan DoS. Dan untuk beberapa nama, 

Dompet Cryptocurrency: Seperti halnya dompet apa pun, dompet cryptocurrency digunakan untuk menyimpan, mengirim, atau menerima cryptocurrency. Dan dompet online tersebut menggunakan kontrak pintar, yang rentan terhadap serangan DoS yang menghambat layanan dan interaksi mereka dengan Dapps. 

Layanan pertukaran mata uang kripto: Platform online tempat cryptocurrency diperdagangkan, dan pertukaran terjadi di antara pengguna. Mereka adalah target utama bagi peretas untuk melakukan serangan DoS yang menyebabkan tidak tersedianya platform dan layanannya. 

Contoh: Platform pertukaran Bitcoin, Bifinex telah mengalami serangan DDoS beberapa kali. 

Kumpulan memori (transaksi): Transaksi di blockchain perlu divalidasi sebelum ditambahkan ke blok. Sampai saat itu, permintaan transaksi disimpan di mempool, yang seperti gudang transaksi yang belum dikonfirmasi yang menunggu untuk diambil oleh penambang. 

Transaksi dengan biaya tinggi kemungkinan besar akan diambil oleh penambang. Jadi membanjiri mempool dengan banyak transaksi dengan biaya kecil mengakibatkan pengguna membayar biaya tinggi untuk memproses transaksi mereka. Dengan demikian, serangan DoS telah berhasil meningkatkan biaya pemrosesan. 

Peserta konsensus: Mereka adalah pemain yang memecahkan logika dan memutuskan blok yang akan ditambahkan ke blockchain. Menimbulkan serangan DoS pada pemimpin konsensus menghentikan seluruh sistem. 

Layanan pencampuran: Ini menggunakan protokol bagi pengguna untuk melakukan transaksi secara anonim. Mereka menderita serangan DoS dengan berbagai cara, seperti permintaan partisipasi yang berlebihan ke kumpulan pencampuran, input yang tidak konsisten untuk shuffle, dll. 

Kontrak pintar: Kontrak pintar adalah protokol yang mendasari di balik setiap transaksi di blockchain. Serangan DoS pada kontrak pintar dapat merusak node yang menghentikan fungsi Dapps yang dihosting olehnya.

Serangan DoS dilakukan pada mereka dalam beberapa cara yang mungkin, diuraikan di bagian berikut.

Menganalisis Jenis Serangan DoS Kontrak Cerdas 

Kerentanan DoS dalam kontrak pintar menghasilkan penggunaan sumber daya yang tidak terbatas atau manipulasi kontrak. Hal ini menyebabkan penangguhan dalam pelaksanaan kegiatan normal atau interupsi dan runtuhnya logika kontrak. 

Di bawah ini terletak klasifikasi berbagai serangan DoS dalam kontrak pintar

Pengembalian DoS yang Tidak Terduga

Untuk mempelajari serangan DoS ini pada kontrak pintar, mari kita ambil contoh kontrak lelang. Kontrak lelang akan diperbarui dengan setiap tawaran tertinggi yang diterima dan mengembalikan jumlah tawaran dari penawar sebelumnya karena lebih rendah dari tawaran saat ini.

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

Kontrak penyerang diinisialisasi dengan kontrak lelang di konstruktor, yang memperoleh akses ke kontrak lelang. Dalam hal ini, dengan memanggil fungsi 'attack()', penyerang mengunci jumlah dan dengan demikian, gagal mengembalikan jumlah tawaran kepada penyerang bahkan saat menerima tawaran yang lebih tinggi dari itu. 

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

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

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

}

Itu karena kontrak 'penyerang' tidak menyertakan fungsi 'receive()' atau fallback apa pun untuk mengembalikan Eter, yang mengakibatkan pengembalian yang tidak diharapkan. Hal ini membuat kontrak penyerang selalu menjadi penawar tertinggi. 

Blokir Batas Gas DoS 

Blok memiliki batas maksimum gas yang harus dikeluarkan yang sebanding dengan jumlah pekerjaan komputasi yang harus dilakukan. Jika melebihi batas gas, itu menyebabkan dua jenis serangan DoS.

Batas Gas DoS โ€“ Operasi Kontrak Tanpa Batas

Ada batas gas yang ditetapkan, dan jika transaksi mencapai batas gas yang lebih tinggi dari batas yang ditetapkan mengakibatkan kegagalan transaksi. 

Ini menjadi lebih buruk ketika penyerang memanipulasi gas yang dibutuhkan. Saat itulah penyerang menambahkan beberapa alamat untuk pengembalian dana yang sangat kecil. Setiap pengembalian dana dikenakan biaya gas; dengan demikian, biaya gas melebihi batas yang menghentikan transaksi pengembalian uang terjadi. 

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

Oleh karena itu, langkah-langkah yang diperlukan harus dipertimbangkan saat mengimplementasikan loop pada array. 

Blok Isian

Penyerang memulai serangan ini untuk menahan transaksi agar tidak menambah blok dengan mengirimkan transaksi komputasi intensif dengan harga gas yang tinggi. Beberapa transaksi dikeluarkan dengan cara yang sama untuk mengkonsumsi seluruh batas gas. 

Dengan membayar biaya gas yang tinggi, penyerang memastikan bahwa hanya transaksi yang dimaksudkan yang ditambahkan ke blok meninggalkan sisanya. 

Tindakan Pemilik

Setiap kontrak memiliki alamat pemilik yang memiliki wewenang untuk membuka atau menangguhkan transaksi. Seluruh operasi tergantung pada alamat pemilik, dan jika hilang, pengguna tidak dapat mengirim token sama sekali, dan fungsi kontrak akan runtuh.

Dampak Serangan DoS

Blok isian adalah salah satu dari banyak dampak yang mencegah transaksi yang sah ditambahkan ke blok. Namun, ada beberapa dampak lain dari serangan DoS. 

Buku besar yang membengkak: Buku besar blockchain adalah tempat transaksi dicatat secara permanen. Node blockchain menyimpan salinan transaksi untuk memverifikasi pengeluaran ganda. Serangan DoS dapat menggembungkan buku besar dengan transaksi spam.

Lalu lintas jaringan: Kami tahu fungsi blockchain berdasarkan mode peer-to-peer. Setiap node di blockchain menerima salinan transaksi. Banjir DoS dapat menghasilkan volume transaksi yang besar, menghabiskan bandwidth jaringan. 

Kegagalan simpul: Blockchain berfungsi pada node yang membutuhkan dukungan perangkat lunak untuk menangani volume data yang besar. Selama transaksi banjir, node mungkin kehabisan memori, menghentikan operasi.

Kerusakan Perangkat Lunak: Seperti yang telah kita bahas, mempool atau blok memiliki batasan tertentu pada memori yang dialokasikan untuk mereka. Perangkat lunak menerima, memproses, dan menyimpan transaksi dalam batas yang ditetapkan. Ketika transaksi masuk melebihi batas bawaan, perangkat lunak macet.  

Menahan Kontrak Cerdas Dari Serangan DoS 

Dari analisis serangan DoS, cara-cara berikut dapat digunakan untuk memitigasi serangan tersebut. 

Teka-teki: Server dapat menghasilkan teka-teki seperti teka-teki memori, teka-teki kunci waktu, teka-teki terikat CPU, dll. Agar pengguna mendapatkan akses ke layanan, teka-teki harus dipecahkan, yang memerangi serangan spam.

Pendekatan berbasis biaya: Biaya tambahan dapat dikenakan pada blockchain, seperti biaya penambangan untuk kumpulan penambangan, biaya transaksi, dll. Ini membuat peretasan DoS mahal bagi penyerang, sehingga menurunkan serangan tersebut. 

Catatan Penutup

Audit kontrak pintar dilakukan di QuillAudit mencari potensi kerentanan yang terletak pada pengkodean. Beberapa di antaranya termasuk kerentanan reentrancy, tabrakan penyimpanan, serangan keacakan, Denial of Service dan sebagainya. 

Ini jelas berarti kontrak pintar diuji secara menyeluruh untuk bebas dari ancaman serangan Denial of Service. Ini memastikan proyek Anda terlindung dari kemungkinan kerentanan ruang Web3.

Perhatikan saluran Telegram kami untuk mengumpulkan wawasan terbaru tentang layanan kami: https://t.me/quillhash

13 views

Stempel Waktu:

Lebih dari Quillhash