Keamanan Umum dalam Keuangan Desentralisasi dan Tindakan Pencegahan
Baru-baru ini, seorang ahli keamanan membagikan pelajaran keamanan DeFi kepada anggota komunitas. Ia meninjau peristiwa keamanan besar yang dialami industri Web3 dalam lebih dari setahun terakhir, membahas alasan di balik peristiwa-peristiwa ini dan bagaimana cara menghindarinya, merangkum kerentanan keamanan umum dari kontrak pintar dan langkah pencegahannya, serta memberikan beberapa saran keamanan kepada pihak proyek dan pengguna biasa.
Jenis-jenis kerentanan DeFi yang umum meliputi pinjaman kilat, manipulasi harga, masalah izin fungsi, panggilan eksternal sembarangan, masalah fungsi fallback, kerentanan logika bisnis, kebocoran kunci privat, dan serangan reentrancy. Berikut ini akan dijelaskan secara khusus mengenai pinjaman kilat, manipulasi harga, dan serangan reentrancy.
Pinjaman Kilat
Pinjaman kilat adalah inovasi dalam Keuangan Desentralisasi, tetapi dapat menyebabkan kerugian besar ketika dimanfaatkan oleh peretas:
Penyerang meminjam sejumlah besar dana melalui pinjaman kilat, memanipulasi harga, menyerang logika bisnis, dll.
Pengembang perlu mempertimbangkan apakah fungsi kontrak akan mengalami anomali akibat dana besar, atau dieksploitasi untuk mendapatkan keuntungan yang tidak semestinya.
Beberapa proyek tidak mempertimbangkan dampak pinjaman kilat saat merancang fungsinya, yang mengakibatkan pencurian dana.
Selama dua tahun terakhir, banyak masalah terkait pinjaman kilat muncul. Beberapa proyek terlihat memberikan imbal hasil yang tinggi, tetapi sebenarnya ada celah logika, seperti:
Hadiah diberikan berdasarkan jumlah posisi pada waktu tertentu, dimanipulasi dengan pinjaman kilat untuk mendapatkan hadiah besar
Proyek yang menghitung harga melalui Token, dapat dipengaruhi oleh pinjaman kilat.
Pihak proyek harus waspada terhadap masalah ini.
Manipulasi Harga
Masalah manipulasi harga terkait erat dengan pinjaman kilat, terutama ada dua jenis:
Menggunakan data pihak ketiga saat menghitung harga, tetapi cara penggunaannya tidak benar atau pemeriksaan hilang.
Menggunakan jumlah Token dari alamat tertentu sebagai variabel perhitungan, dan jumlah ini dapat dimanipulasi secara sementara.
Serangan Reentrancy
Memanggil kontrak eksternal dapat menyebabkan alur kontrol diambil alih, mengakibatkan perubahan data yang tidak terduga. Contoh tipikal dari serangan reentrancy:
Karena saldo pengguna diatur menjadi 0 hanya pada akhir fungsi, pemanggilan berulang dapat menarik saldo beberapa kali.
Untuk menyelesaikan masalah reentrancy, perlu diperhatikan:
Tidak hanya mencegah reentrasi fungsi tunggal
Mengikuti pola Checks-Effects-Interactions
Gunakan modifier anti-reentrancy yang telah diverifikasi
Disarankan untuk menggunakan praktik keamanan terbaik yang sudah matang, hindari membuat roda yang sama.
Saran Keamanan
Saran untuk pihak proyek:
Mengikuti praktik keamanan terbaik dalam pengembangan kontrak
Mewujudkan kontrak yang dapat ditingkatkan dan dihentikan
Menggunakan kunci waktu
Meningkatkan investasi keamanan, membangun sistem keamanan yang sempurna
Meningkatkan kesadaran keamanan semua karyawan
Mencegah tindakan jahat internal, sambil meningkatkan efisiensi dan memperkuat pengendalian risiko
Hati-hati dalam memperkenalkan pihak ketiga, asumsi bahwa hulu dan hilir tidak aman.
Bagaimana pengguna dapat menilai apakah kontrak pintar aman:
Periksa apakah kontrak bersifat open source
Periksa apakah Pemilik menggunakan multi-signature terdesentralisasi
Lihat situasi perdagangan yang sudah ada pada kontrak
Periksa apakah kontrak dapat diupgrade, apakah ada kunci waktu
Periksa apakah menerima audit dari beberapa lembaga, apakah hak Owner terlalu besar.
Perhatikan keandalan oracle
Singkatnya, di bidang Keuangan Desentralisasi, baik pihak proyek maupun pengguna biasa perlu meningkatkan kesadaran keamanan, mengambil langkah-langkah keamanan yang diperlukan, untuk mengurangi risiko dan melindungi keamanan aset.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
9 Suka
Hadiah
9
7
Posting ulang
Bagikan
Komentar
0/400
TooScaredToSell
· 08-11 10:27
Jangan banyak bicara tentang peraturan, langsung masuk ke pasar koin adalah hal yang serius.
Analisis kerentanan keamanan umum dalam Keuangan Desentralisasi: pencegahan Pinjaman Flash, manipulasi harga, dan serangan reentrancy.
Keamanan Umum dalam Keuangan Desentralisasi dan Tindakan Pencegahan
Baru-baru ini, seorang ahli keamanan membagikan pelajaran keamanan DeFi kepada anggota komunitas. Ia meninjau peristiwa keamanan besar yang dialami industri Web3 dalam lebih dari setahun terakhir, membahas alasan di balik peristiwa-peristiwa ini dan bagaimana cara menghindarinya, merangkum kerentanan keamanan umum dari kontrak pintar dan langkah pencegahannya, serta memberikan beberapa saran keamanan kepada pihak proyek dan pengguna biasa.
Jenis-jenis kerentanan DeFi yang umum meliputi pinjaman kilat, manipulasi harga, masalah izin fungsi, panggilan eksternal sembarangan, masalah fungsi fallback, kerentanan logika bisnis, kebocoran kunci privat, dan serangan reentrancy. Berikut ini akan dijelaskan secara khusus mengenai pinjaman kilat, manipulasi harga, dan serangan reentrancy.
Pinjaman Kilat
Pinjaman kilat adalah inovasi dalam Keuangan Desentralisasi, tetapi dapat menyebabkan kerugian besar ketika dimanfaatkan oleh peretas:
Selama dua tahun terakhir, banyak masalah terkait pinjaman kilat muncul. Beberapa proyek terlihat memberikan imbal hasil yang tinggi, tetapi sebenarnya ada celah logika, seperti:
Pihak proyek harus waspada terhadap masalah ini.
Manipulasi Harga
Masalah manipulasi harga terkait erat dengan pinjaman kilat, terutama ada dua jenis:
Serangan Reentrancy
Memanggil kontrak eksternal dapat menyebabkan alur kontrol diambil alih, mengakibatkan perubahan data yang tidak terduga. Contoh tipikal dari serangan reentrancy:
solidity pemetaan (alamat => uint) saldoPenggunaPrivat;
fungsi tarikSaldo() publik { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(success); userBalances[msg.sender] = 0; }
Karena saldo pengguna diatur menjadi 0 hanya pada akhir fungsi, pemanggilan berulang dapat menarik saldo beberapa kali.
Untuk menyelesaikan masalah reentrancy, perlu diperhatikan:
Disarankan untuk menggunakan praktik keamanan terbaik yang sudah matang, hindari membuat roda yang sama.
Saran Keamanan
Saran untuk pihak proyek:
Bagaimana pengguna dapat menilai apakah kontrak pintar aman:
Singkatnya, di bidang Keuangan Desentralisasi, baik pihak proyek maupun pengguna biasa perlu meningkatkan kesadaran keamanan, mengambil langkah-langkah keamanan yang diperlukan, untuk mengurangi risiko dan melindungi keamanan aset.