Keamanan Umum dalam Keuangan Desentralisasi dan Langkah-Langkah Pencegahannya
Baru-baru ini, seorang ahli keamanan membagikan wawasan tentang keamanan Keuangan Desentralisasi, meninjau peristiwa keamanan besar yang dialami industri Web3 dalam setahun terakhir, membahas penyebab terjadinya peristiwa-peristiwa ini serta cara untuk menghindarinya, merangkum kerentanan keamanan umum pada kontrak pintar dan langkah-langkah pencegahannya, serta memberikan beberapa saran keamanan kepada proyek dan pengguna.
Jenis-jenis kerentanan DeFi yang umum meliputi pinjaman kilat, manipulasi harga, masalah hak akses fungsi, panggilan eksternal sembarangan, masalah fungsi fallback, kerentanan logika bisnis, kebocoran kunci privat, dan reentrancy. Di bawah ini, kami akan fokus pada tiga jenis ini: pinjaman kilat, manipulasi harga, dan serangan reentrancy.
Pinjaman Kilat
Pinjaman kilat adalah inovasi dalam Keuangan Desentralisasi, tetapi juga dimanfaatkan oleh peretas untuk melakukan serangan. Penyerang meminjam sejumlah besar dana melalui pinjaman kilat, untuk memanipulasi harga atau menyerang logika bisnis. Pengembang perlu mempertimbangkan apakah fungsi kontrak akan berperilaku tidak normal akibat dana yang besar, atau dimanfaatkan untuk mendapatkan imbalan yang tidak semestinya.
Banyak proyek Keuangan Desentralisasi tampak memberikan hasil tinggi, tetapi sebenarnya tingkat kemampuan tim proyek sangat bervariasi. Beberapa proyek mungkin membeli kode mereka, meskipun kode itu sendiri tidak memiliki celah, secara logika masih mungkin terdapat masalah. Misalnya, beberapa proyek akan memberikan hadiah berdasarkan kepemilikan pada waktu yang telah ditentukan, tetapi dieksploitasi oleh penyerang yang menggunakan pinjaman kilat untuk membeli sejumlah besar token, mendapatkan sebagian besar hadiah.
Pengendalian Harga
Masalah manipulasi harga sangat terkait dengan pinjaman kilat, terutama karena parameter yang digunakan dalam perhitungan harga dapat dikontrol oleh pengguna. Ada dua jenis masalah yang umum:
Menggunakan data pihak ketiga saat menghitung harga, tetapi cara penggunaannya tidak benar atau pemeriksaan hilang, mengakibatkan harga dimanipulasi secara jahat.
Menggunakan jumlah token dari alamat tertentu sebagai variabel perhitungan, di mana saldo token di alamat tersebut dapat ditambah atau dikurangi secara sementara.
Serangan Reentrancy
Salah satu risiko utama dalam memanggil kontrak eksternal adalah mereka dapat mengambil alih alur kontrol, melakukan perubahan yang tidak terduga pada data. Contohnya:
Karena saldo pengguna hanya diatur menjadi nol di akhir fungsi, pemanggilan ulang masih akan berhasil, dan saldo dapat ditarik berulang kali.
Untuk menyelesaikan masalah reentrancy, perlu diperhatikan:
Tidak hanya mencegah reentrancy dari satu fungsi
Mengikuti pola Checks-Effects-Interactions
Menggunakan modifier anti-reentrancy yang telah diverifikasi
Metode serangan reentrancy sangat beragam, dan bisa melibatkan beberapa fungsi atau kontrak, sehingga penyelesaiannya cukup kompleks. Sebaiknya gunakan praktik terbaik yang telah terverifikasi dengan baik, daripada menciptakan kembali roda.
Saran Keamanan Proyek
Mengikuti praktik keamanan terbaik dalam pengembangan kontrak
Mengimplementasikan fungsi kontrak yang dapat diupgrade dan dijeda
Menggunakan mekanisme kunci waktu
Meningkatkan investasi keamanan, membangun sistem keamanan yang lengkap
Meningkatkan kesadaran keamanan semua karyawan
Mencegah kejahatan internal, sambil meningkatkan efisiensi dan memperkuat manajemen risiko.
Hati-hati dalam memperkenalkan komponen pihak ketiga, lakukan verifikasi keamanan dengan baik
Bagaimana pengguna dapat menilai keamanan kontrak pintar
Pastikan kontrak bersifat open source
Periksa apakah Owner menggunakan multisig, dan apakah multisig tersebut terdesentralisasi.
Lihat situasi perdagangan yang ada pada kontrak
Menentukan apakah kontrak adalah kontrak perwakilan, apakah dapat ditingkatkan, dan apakah memiliki kunci waktu
Pastikan kontrak telah diaudit oleh beberapa lembaga, apakah hak akses Owner terlalu besar
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
9 Suka
Hadiah
9
4
Bagikan
Komentar
0/400
SchrodingerProfit
· 5jam yang lalu
Potong, sekarang masih ada yang tidak dipermainkan untuk menjadi suckers?
Lihat AsliBalas0
ContractSurrender
· 5jam yang lalu
Ini adalah panduan besar untuk Dianggap Bodoh!
Lihat AsliBalas0
SnapshotDayLaborer
· 5jam yang lalu
Harus benar-benar waspada, untung saya bisa berlari cepat.
Keuangan Desentralisasi keamanan besar-besaran: Jenis kerentanan umum dan panduan pencegahan
Keamanan Umum dalam Keuangan Desentralisasi dan Langkah-Langkah Pencegahannya
Baru-baru ini, seorang ahli keamanan membagikan wawasan tentang keamanan Keuangan Desentralisasi, meninjau peristiwa keamanan besar yang dialami industri Web3 dalam setahun terakhir, membahas penyebab terjadinya peristiwa-peristiwa ini serta cara untuk menghindarinya, merangkum kerentanan keamanan umum pada kontrak pintar dan langkah-langkah pencegahannya, serta memberikan beberapa saran keamanan kepada proyek dan pengguna.
Jenis-jenis kerentanan DeFi yang umum meliputi pinjaman kilat, manipulasi harga, masalah hak akses fungsi, panggilan eksternal sembarangan, masalah fungsi fallback, kerentanan logika bisnis, kebocoran kunci privat, dan reentrancy. Di bawah ini, kami akan fokus pada tiga jenis ini: pinjaman kilat, manipulasi harga, dan serangan reentrancy.
Pinjaman Kilat
Pinjaman kilat adalah inovasi dalam Keuangan Desentralisasi, tetapi juga dimanfaatkan oleh peretas untuk melakukan serangan. Penyerang meminjam sejumlah besar dana melalui pinjaman kilat, untuk memanipulasi harga atau menyerang logika bisnis. Pengembang perlu mempertimbangkan apakah fungsi kontrak akan berperilaku tidak normal akibat dana yang besar, atau dimanfaatkan untuk mendapatkan imbalan yang tidak semestinya.
Banyak proyek Keuangan Desentralisasi tampak memberikan hasil tinggi, tetapi sebenarnya tingkat kemampuan tim proyek sangat bervariasi. Beberapa proyek mungkin membeli kode mereka, meskipun kode itu sendiri tidak memiliki celah, secara logika masih mungkin terdapat masalah. Misalnya, beberapa proyek akan memberikan hadiah berdasarkan kepemilikan pada waktu yang telah ditentukan, tetapi dieksploitasi oleh penyerang yang menggunakan pinjaman kilat untuk membeli sejumlah besar token, mendapatkan sebagian besar hadiah.
Pengendalian Harga
Masalah manipulasi harga sangat terkait dengan pinjaman kilat, terutama karena parameter yang digunakan dalam perhitungan harga dapat dikontrol oleh pengguna. Ada dua jenis masalah yang umum:
Menggunakan data pihak ketiga saat menghitung harga, tetapi cara penggunaannya tidak benar atau pemeriksaan hilang, mengakibatkan harga dimanipulasi secara jahat.
Menggunakan jumlah token dari alamat tertentu sebagai variabel perhitungan, di mana saldo token di alamat tersebut dapat ditambah atau dikurangi secara sementara.
Serangan Reentrancy
Salah satu risiko utama dalam memanggil kontrak eksternal adalah mereka dapat mengambil alih alur kontrol, melakukan perubahan yang tidak terduga pada data. Contohnya:
soliditas mapping (address => uint) private userBalances;
fungsi withdrawBalance() publik { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(success); userBalances[msg.sender] = 0; }
Karena saldo pengguna hanya diatur menjadi nol di akhir fungsi, pemanggilan ulang masih akan berhasil, dan saldo dapat ditarik berulang kali.
Untuk menyelesaikan masalah reentrancy, perlu diperhatikan:
Metode serangan reentrancy sangat beragam, dan bisa melibatkan beberapa fungsi atau kontrak, sehingga penyelesaiannya cukup kompleks. Sebaiknya gunakan praktik terbaik yang telah terverifikasi dengan baik, daripada menciptakan kembali roda.
Saran Keamanan Proyek
Bagaimana pengguna dapat menilai keamanan kontrak pintar
总之,在Keuangan Desentralisasi领域,安全问题尤为重要。项目方应当重视安全投入,用户也要提高警惕,谨慎参与。只有共同努力,才能构建一个更加安全可靠的Keuangan Desentralisasi生态系统。