Keamanan Umum dalam Keuangan Desentralisasi dan Langkah-langkah Pencegahannya
Baru-baru ini, seorang ahli keamanan berbagi topik terkait keamanan DeFi dengan anggota komunitas. Ahli tersebut meninjau peristiwa keamanan besar yang dialami industri Web3 selama lebih dari setahun terakhir, mendalami penyebab peristiwa tersebut serta cara untuk menghindarinya, merangkum kerentanan keamanan umum dalam 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 hak akses fungsi, panggilan eksternal sembarangan, masalah fungsi fallback, kerentanan logika bisnis, kebocoran kunci pribadi, dan serangan reentrancy. Artikel ini akan fokus pada tiga jenis ini: pinjaman kilat, manipulasi harga, dan serangan reentrancy.
Pinjaman Kilat
Pinjaman kilat adalah inovasi dalam Keuangan Desentralisasi, tetapi juga sering dimanfaatkan oleh peretas. Penyerang dapat meminjam sejumlah besar dana melalui pinjaman kilat untuk memanipulasi harga atau menyerang logika bisnis. Pengembang perlu mempertimbangkan apakah fungsi kontrak akan mengalami anomali akibat dana yang sangat besar, atau dieksploitasi dalam satu transaksi untuk berinteraksi dengan beberapa fungsi untuk mendapatkan keuntungan yang tidak sah.
Banyak proyek DeFi tampak memiliki imbal hasil yang tinggi, tetapi kualitas tim proyek bervariasi. Meskipun kode itu sendiri tidak memiliki kerentanan, secara logis masih mungkin ada masalah. Misalnya, beberapa proyek memberikan hadiah berdasarkan jumlah kepemilikan pada waktu tertentu, tetapi dieksploitasi oleh penyerang yang memanfaatkan pinjaman kilat untuk membeli banyak token, sehingga mendapatkan sebagian besar imbal hasil saat hadiah diberikan. Selain itu, beberapa proyek yang menghitung harga berdasarkan Token juga rentan terhadap pengaruh pinjaman kilat. Tim proyek harus tetap waspada terhadap masalah ini.
Manipulasi Harga
Masalah manipulasi harga sangat terkait dengan pinjaman kilat, terutama karena beberapa parameter dalam perhitungan harga dapat dikendalikan oleh pengguna. Ada dua situasi umum:
Menggunakan data pihak ketiga saat menghitung harga, tetapi cara penggunaannya tidak benar atau pemeriksaan hilang, yang menyebabkan harga dimanipulasi secara jahat.
Menggunakan saldo Token dari alamat tertentu sebagai variabel perhitungan, dan jumlah Token dari alamat tersebut dapat ditambah atau dikurangi secara sementara.
Serangan Reentrancy
Salah satu risiko utama dari memanggil kontrak eksternal adalah mereka dapat mengambil alih alur kontrol, melakukan perubahan yang tidak terduga pada data. Contohnya:
Karena saldo pengguna diatur menjadi 0 hanya di akhir fungsi, pemanggilan kedua dan selanjutnya masih akan berhasil, dan saldo dapat ditarik berulang kali.
Bentuk serangan reentrancy bervariasi, mungkin melibatkan fungsi berbeda dari kontrak yang sama atau fungsi dari beberapa kontrak. Saat menyelesaikan masalah reentrancy, perlu diperhatikan:
Tidak hanya mencegah masalah reentrancy dari fungsi tunggal
Mengkode mengikuti pola Checks-Effects-Interactions
Gunakan modifier pencegah reentrancy yang telah diverifikasi
Sebaiknya hindari menciptakan roda yang sama, dan gunakan praktik keamanan terbaik yang matang di industri. "Roda" yang baru dibuat kurang terverifikasi dengan baik, sehingga kemungkinan masalahnya seringkali lebih tinggi dibandingkan dengan solusi yang telah teruji.
Saran Keamanan
saran keamanan proyek
Mengikuti praktik keamanan terbaik dalam pengembangan kontrak
Merancang kontrak yang dapat ditingkatkan dan dijeda: membantu dalam mendeteksi dan mengurangi kerugian akibat serangan tepat waktu.
Menggunakan kunci waktu: memberikan periode penyangga untuk menemukan dan mengatasi masalah potensial
Meningkatkan investasi keamanan, membangun sistem keamanan yang lengkap: Keamanan adalah pekerjaan sistematis, tidak terbatas pada audit kontrak.
Meningkatkan kesadaran keamanan semua karyawan: Banyak serangan memanfaatkan kelemahan manusia, meningkatkan kewaspadaan dapat menghindari banyak masalah.
Mencegah tindakan jahat internal, sambil meningkatkan efisiensi, memperkuat pengendalian risiko: seperti menggunakan mekanisme multisignature, kunci waktu, dan lainnya.
Hati-hati dalam mengintroduksi pihak ketiga: lakukan pemeriksaan keamanan pada hulu dan hilir, terutama untuk kontrak yang tidak bersumber terbuka.
Metode untuk menentukan keamanan kontrak pintar oleh pengguna/LP
Periksa apakah kontrak sumber terbuka: Jangan ikut serta dalam proyek yang tidak sumber terbuka.
Konfirmasi apakah Pemilik menggunakan multi-tanda tangan terdesentralisasi
Lihat situasi transaksi yang sudah ada pada kontrak: waktu penyebaran, jumlah interaksi, dll.
Periksa apakah kontrak adalah kontrak perwakilan, apakah dapat diupgrade, apakah memiliki kunci waktu.
Pastikan kontrak telah diaudit oleh banyak lembaga, apakah hak akses Pemilik terlalu besar.
Perhatikan keandalan oracle: Oracle terkemuka cukup aman, oracle yang dibangun sendiri atau dengan ambang batas rendah harus dilakukan dengan hati-hati.
Singkatnya, di bidang Keuangan Desentralisasi, para peserta harus tetap waspada, pihak proyek harus mempertimbangkan masalah keamanan secara menyeluruh, dan pengguna harus berhati-hati dalam mengevaluasi keamanan proyek sebelum membuat keputusan.
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.
13 Suka
Hadiah
13
5
Bagikan
Komentar
0/400
HackerWhoCares
· 07-30 21:57
Dana itu dipinjam, keamanan tidak bisa dipinjam.
Lihat AsliBalas0
SurvivorshipBias
· 07-30 14:52
Ini adalah kisah darah dan air mata para suckers yang lagi-lagi dipermainkan.
Lihat AsliBalas0
MetaMaskVictim
· 07-30 14:52
Ada orang yang lagi play people for suckers... Siapa yang rugi, kasih tau saya.
Analisis Lengkap Kerentanan Keamanan DeFi: Panduan Pencegahan Pinjaman Flash, Manipulasi Harga, dan Serangan Re-Entrancy
Keamanan Umum dalam Keuangan Desentralisasi dan Langkah-langkah Pencegahannya
Baru-baru ini, seorang ahli keamanan berbagi topik terkait keamanan DeFi dengan anggota komunitas. Ahli tersebut meninjau peristiwa keamanan besar yang dialami industri Web3 selama lebih dari setahun terakhir, mendalami penyebab peristiwa tersebut serta cara untuk menghindarinya, merangkum kerentanan keamanan umum dalam 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 hak akses fungsi, panggilan eksternal sembarangan, masalah fungsi fallback, kerentanan logika bisnis, kebocoran kunci pribadi, dan serangan reentrancy. Artikel ini akan fokus pada tiga jenis ini: pinjaman kilat, manipulasi harga, dan serangan reentrancy.
Pinjaman Kilat
Pinjaman kilat adalah inovasi dalam Keuangan Desentralisasi, tetapi juga sering dimanfaatkan oleh peretas. Penyerang dapat meminjam sejumlah besar dana melalui pinjaman kilat untuk memanipulasi harga atau menyerang logika bisnis. Pengembang perlu mempertimbangkan apakah fungsi kontrak akan mengalami anomali akibat dana yang sangat besar, atau dieksploitasi dalam satu transaksi untuk berinteraksi dengan beberapa fungsi untuk mendapatkan keuntungan yang tidak sah.
Banyak proyek DeFi tampak memiliki imbal hasil yang tinggi, tetapi kualitas tim proyek bervariasi. Meskipun kode itu sendiri tidak memiliki kerentanan, secara logis masih mungkin ada masalah. Misalnya, beberapa proyek memberikan hadiah berdasarkan jumlah kepemilikan pada waktu tertentu, tetapi dieksploitasi oleh penyerang yang memanfaatkan pinjaman kilat untuk membeli banyak token, sehingga mendapatkan sebagian besar imbal hasil saat hadiah diberikan. Selain itu, beberapa proyek yang menghitung harga berdasarkan Token juga rentan terhadap pengaruh pinjaman kilat. Tim proyek harus tetap waspada terhadap masalah ini.
Manipulasi Harga
Masalah manipulasi harga sangat terkait dengan pinjaman kilat, terutama karena beberapa parameter dalam perhitungan harga dapat dikendalikan oleh pengguna. Ada dua situasi umum:
Menggunakan data pihak ketiga saat menghitung harga, tetapi cara penggunaannya tidak benar atau pemeriksaan hilang, yang menyebabkan harga dimanipulasi secara jahat.
Menggunakan saldo Token dari alamat tertentu sebagai variabel perhitungan, dan jumlah Token dari alamat tersebut dapat ditambah atau dikurangi secara sementara.
Serangan Reentrancy
Salah satu risiko utama dari memanggil kontrak eksternal adalah mereka dapat mengambil alih alur kontrol, melakukan perubahan yang tidak terduga pada data. Contohnya:
solidity mapping (address => uint) private userBalances;
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 di akhir fungsi, pemanggilan kedua dan selanjutnya masih akan berhasil, dan saldo dapat ditarik berulang kali.
Bentuk serangan reentrancy bervariasi, mungkin melibatkan fungsi berbeda dari kontrak yang sama atau fungsi dari beberapa kontrak. Saat menyelesaikan masalah reentrancy, perlu diperhatikan:
Sebaiknya hindari menciptakan roda yang sama, dan gunakan praktik keamanan terbaik yang matang di industri. "Roda" yang baru dibuat kurang terverifikasi dengan baik, sehingga kemungkinan masalahnya seringkali lebih tinggi dibandingkan dengan solusi yang telah teruji.
Saran Keamanan
saran keamanan proyek
Mengikuti praktik keamanan terbaik dalam pengembangan kontrak
Merancang kontrak yang dapat ditingkatkan dan dijeda: membantu dalam mendeteksi dan mengurangi kerugian akibat serangan tepat waktu.
Menggunakan kunci waktu: memberikan periode penyangga untuk menemukan dan mengatasi masalah potensial
Meningkatkan investasi keamanan, membangun sistem keamanan yang lengkap: Keamanan adalah pekerjaan sistematis, tidak terbatas pada audit kontrak.
Meningkatkan kesadaran keamanan semua karyawan: Banyak serangan memanfaatkan kelemahan manusia, meningkatkan kewaspadaan dapat menghindari banyak masalah.
Mencegah tindakan jahat internal, sambil meningkatkan efisiensi, memperkuat pengendalian risiko: seperti menggunakan mekanisme multisignature, kunci waktu, dan lainnya.
Hati-hati dalam mengintroduksi pihak ketiga: lakukan pemeriksaan keamanan pada hulu dan hilir, terutama untuk kontrak yang tidak bersumber terbuka.
Metode untuk menentukan keamanan kontrak pintar oleh pengguna/LP
Periksa apakah kontrak sumber terbuka: Jangan ikut serta dalam proyek yang tidak sumber terbuka.
Konfirmasi apakah Pemilik menggunakan multi-tanda tangan terdesentralisasi
Lihat situasi transaksi yang sudah ada pada kontrak: waktu penyebaran, jumlah interaksi, dll.
Periksa apakah kontrak adalah kontrak perwakilan, apakah dapat diupgrade, apakah memiliki kunci waktu.
Pastikan kontrak telah diaudit oleh banyak lembaga, apakah hak akses Pemilik terlalu besar.
Perhatikan keandalan oracle: Oracle terkemuka cukup aman, oracle yang dibangun sendiri atau dengan ambang batas rendah harus dilakukan dengan hati-hati.
Singkatnya, di bidang Keuangan Desentralisasi, para peserta harus tetap waspada, pihak proyek harus mempertimbangkan masalah keamanan secara menyeluruh, dan pengguna harus berhati-hati dalam mengevaluasi keamanan proyek sebelum membuat keputusan.