Keamanan Umum dalam Keuangan Desentralisasi dan Langkah-langkah Pencegahan
Baru-baru ini, seorang ahli keamanan membagikan sebuah kursus tentang keamanan Keuangan Desentralisasi, membahas kejadian-kejadian keamanan besar yang baru-baru ini dialami oleh industri Web3, menganalisis penyebab terjadinya kejadian tersebut serta cara menghindarinya, dan merangkum celah-celah keamanan umum dalam kontrak pintar serta langkah-langkah pencegahannya. Artikel ini akan fokus pada tiga jenis celah umum: pinjaman kilat, manipulasi harga, dan serangan reentrancy.
Pinjaman Kilat
Pinjaman kilat sendiri adalah inovasi dalam Keuangan Desentralisasi, tetapi sering dimanfaatkan oleh peretas untuk melakukan serangan:
Penyerang meminjam sejumlah besar dana melalui pinjaman kilat, memanipulasi harga atau menyerang logika bisnis
Pengembang perlu mempertimbangkan apakah fungsi kontrak akan berfungsi secara abnormal karena dana yang besar, atau digunakan untuk mendapatkan terlalu banyak imbalan dalam satu transaksi.
Pertanyaan Umum: Menghitung hadiah menggunakan jumlah Token, atau berpartisipasi dalam perhitungan menggunakan jumlah Token dalam pasangan perdagangan DEX
Selama dua tahun terakhir, banyak masalah muncul. Beberapa proyek Keuangan Desentralisasi tampak memberikan imbal hasil tinggi, tetapi sebenarnya memiliki tingkat pengembangan yang bervariasi. Misalnya, ada proyek yang memberikan imbalan berdasarkan kepemilikan pada waktu tertentu, yang dieksploitasi oleh penyerang dengan memanfaatkan pinjaman kilat untuk membeli sejumlah besar token dan mendapatkan sebagian besar imbalan.
Manipulasi Harga
Harga manipulasi sangat terkait dengan pinjaman kilat, ada dua masalah utama:
Menggunakan data pihak ketiga saat menghitung harga, tetapi penggunaan yang tidak tepat atau kurangnya pemeriksaan.
Menggunakan saldo Token dari alamat tertentu sebagai variabel perhitungan, dan saldo ini dapat ditambahkan atau dikurangi sementara.
Serangan Reentrancy
Risiko utama dari pemanggilan kontrak eksternal adalah kemungkinan pengambilalihan aliran kontrol, yang dapat menyebabkan modifikasi data yang tidak terduga.
Sebuah contoh tipikal dari serangan reentrancy:
solidity
mapping (address => uint) private userBalances;
Karena saldo pengguna hanya akan direset pada akhir fungsi, pemanggilan berulang dapat menarik beberapa kali.
Mengatasi masalah reentrancy perlu diperhatikan:
Tidak hanya mencegah reentrasi fungsi tunggal
Mengikuti pola Checks-Effects-Interactions
Gunakan modifier pencegah reentrancy yang terverifikasi
Disarankan untuk menggunakan praktik keamanan yang matang, hindari mengulang roda.
Saran Keamanan Proyek
Mengembangkan kontrak sesuai dengan praktik keamanan terbaik
Mewujudkan kontrak yang dapat ditingkatkan dan fungsi jeda
Menggunakan kunci waktu
Membangun sistem keamanan yang lengkap
Meningkatkan kesadaran keamanan seluruh anggota
Mencegah kejahatan internal, meningkatkan efisiensi sekaligus memperkuat pengendalian risiko
Hati-hati dalam memperkenalkan pihak ketiga, anggap mereka tidak aman dan lakukan verifikasi dengan baik.
Bagaimana pengguna menilai keamanan kontrak pintar
Apakah kontrak tersebut bersifat open source?
Apakah Pemilik menggunakan multi-tanda tangan yang terdesentralisasi
Lihat situasi transaksi kontrak yang ada
Apakah kontrak dapat ditingkatkan, apakah ada kunci waktu
Apakah menerima audit dari beberapa lembaga, apakah hak akses Owner terlalu besar?
Perhatikan keandalan oracle
Singkatnya, keamanan sangat penting di bidang Keuangan Desentralisasi. Pihak proyek harus membangun sistem keamanan secara menyeluruh, dan pengguna juga perlu meningkatkan kewaspadaan serta berhati-hati dalam berpartisipasi.
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.
17 Suka
Hadiah
17
8
Bagikan
Komentar
0/400
DeFiVeteran
· 25menit yang lalu
Dompet lagi hilang, tidak heran.
Lihat AsliBalas0
DisillusiionOracle
· 6jam yang lalu
Baiklah defi terus ramai, orang-orang Hacker setiap hari mencukur bulu sapi.
Lihat AsliBalas0
GateUser-bd883c58
· 07-21 12:00
Tetap harus menyisakan pintu belakang, ya!
Lihat AsliBalas0
LayoffMiner
· 07-21 02:24
Hah, masih sama seperti biasa, cara mencuci tambang yang beragam.
Lihat AsliBalas0
LiquidationWatcher
· 07-21 02:19
Dengan begitu banyak celah, untuk apa bermain DeFi?
Keuangan Desentralisasi tiga risiko keamanan utama: Pinjaman Flash, manipulasi harga, dan serangan reentrancy
Keamanan Umum dalam Keuangan Desentralisasi dan Langkah-langkah Pencegahan
Baru-baru ini, seorang ahli keamanan membagikan sebuah kursus tentang keamanan Keuangan Desentralisasi, membahas kejadian-kejadian keamanan besar yang baru-baru ini dialami oleh industri Web3, menganalisis penyebab terjadinya kejadian tersebut serta cara menghindarinya, dan merangkum celah-celah keamanan umum dalam kontrak pintar serta langkah-langkah pencegahannya. Artikel ini akan fokus pada tiga jenis celah umum: pinjaman kilat, manipulasi harga, dan serangan reentrancy.
Pinjaman Kilat
Pinjaman kilat sendiri adalah inovasi dalam Keuangan Desentralisasi, tetapi sering dimanfaatkan oleh peretas untuk melakukan serangan:
Selama dua tahun terakhir, banyak masalah muncul. Beberapa proyek Keuangan Desentralisasi tampak memberikan imbal hasil tinggi, tetapi sebenarnya memiliki tingkat pengembangan yang bervariasi. Misalnya, ada proyek yang memberikan imbalan berdasarkan kepemilikan pada waktu tertentu, yang dieksploitasi oleh penyerang dengan memanfaatkan pinjaman kilat untuk membeli sejumlah besar token dan mendapatkan sebagian besar imbalan.
Manipulasi Harga
Harga manipulasi sangat terkait dengan pinjaman kilat, ada dua masalah utama:
Serangan Reentrancy
Risiko utama dari pemanggilan kontrak eksternal adalah kemungkinan pengambilalihan aliran kontrol, yang dapat menyebabkan modifikasi data yang tidak terduga.
Sebuah contoh tipikal dari serangan reentrancy: solidity mapping (address => uint) private userBalances;
fungsi menarikSaldo() publik { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(success); userBalances[msg.sender] = 0; }
Karena saldo pengguna hanya akan direset pada akhir fungsi, pemanggilan berulang dapat menarik beberapa kali.
Mengatasi masalah reentrancy perlu diperhatikan:
Disarankan untuk menggunakan praktik keamanan yang matang, hindari mengulang roda.
Saran Keamanan Proyek
Bagaimana pengguna menilai keamanan kontrak pintar
Singkatnya, keamanan sangat penting di bidang Keuangan Desentralisasi. Pihak proyek harus membangun sistem keamanan secara menyeluruh, dan pengguna juga perlu meningkatkan kewaspadaan serta berhati-hati dalam berpartisipasi.