Keamanan DeFi: Kedalaman analisis kerentanan umum dan strategi perlindungan

robot
Pembuatan abstrak sedang berlangsung

Keamanan Umum dalam Keuangan Desentralisasi dan Langkah-langkah Pencegahannya

Baru-baru ini, seorang ahli keamanan berbagi pelajaran keamanan DeFi untuk anggota komunitas. Ahli tersebut meninjau peristiwa keamanan besar yang dialami industri Web3 selama lebih dari setahun terakhir, mengeksplorasi alasan terjadinya peristiwa tersebut dan bagaimana cara menghindarinya, merangkum kerentanan keamanan umum dalam kontrak pintar dan langkah-langkah pencegahan, serta memberikan beberapa saran keamanan untuk pengembang proyek dan pengguna biasa.

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 tersebut: pinjaman kilat, manipulasi harga, dan serangan reentrancy.

Cobo Keuangan Desentralisasi 安全课(下):Keuangan Desentralisasi 常⻅安全漏洞及预防

Pinjaman Kilat

Pinjaman kilat adalah inovasi dalam Keuangan Desentralisasi, tetapi seringkali 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 mengalami anomali akibat dana besar, atau apakah mungkin mendapatkan imbalan yang tidak semestinya dengan berinteraksi dengan beberapa fungsi dalam satu transaksi menggunakan dana besar.

Banyak proyek Keuangan Desentralisasi tampak memiliki imbal hasil yang tinggi, tetapi sebenarnya tingkat kemampuan tim proyek sangat bervariasi. Beberapa proyek mungkin membeli kode mereka, dan meskipun kode itu sendiri tidak memiliki celah, masih ada kemungkinan masalah dalam logika. Misalnya, beberapa proyek memberikan hadiah berdasarkan jumlah token yang dimiliki pemegang pada waktu tetap, tetapi penyerang dapat memanfaatkan pinjaman kilat untuk membeli sejumlah besar token dan mendapatkan sebagian besar hadiah saat hadiah diberikan.

Manipulasi Harga

Masalah manipulasi harga terkait erat dengan pinjaman kilat, terutama karena beberapa parameter yang digunakan dalam perhitungan harga dapat dikendalikan oleh pengguna. Ada dua jenis masalah umum:

  1. Menggunakan data pihak ketiga saat menghitung harga, tetapi cara penggunaannya tidak benar atau pemeriksaan hilang, menyebabkan harga dimanipulasi secara jahat.
  2. Menggunakan jumlah token dari alamat tertentu sebagai variabel perhitungan, di mana saldo token dari alamat tersebut dapat ditambahkan atau dikurangi secara sementara.

Serangan Reentrancy

Serangan reentrancy adalah salah satu bahaya utama yang mungkin dihadapi saat memanggil kontrak eksternal. Penyerang dapat mengambil alih alur kontrol dan melakukan perubahan yang tidak terduga pada data.

Untuk kontrak yang berbeda, ada banyak cara terjadinya reentrancy, yang mungkin melibatkan fungsi berbeda dari kontrak atau fungsi dari beberapa kontrak yang berbeda. Saat menyelesaikan masalah reentrancy, perlu diperhatikan beberapa hal berikut:

  1. Tidak hanya perlu mencegah masalah reentrancy dari fungsi tunggal
  2. Mengikuti pola Checks-Effects-Interactions dalam pengkodean
  3. Menggunakan modifier anti-reentrancy yang telah teruji seiring waktu

Dalam bidang Web3, lebih bijaksana untuk menggunakan praktik keamanan yang matang daripada mengulang roda. Menggunakan solusi yang telah terbukti dapat secara signifikan mengurangi kemungkinan munculnya masalah.

Saran Keamanan untuk Proyek

  1. Mengikuti praktik keamanan terbaik dalam pengembangan kontrak
  2. Mengimplementasikan fungsi kontrak yang dapat ditingkatkan dan dijeda
  3. Mengadopsi mekanisme kunci waktu
  4. Meningkatkan investasi keamanan dan membangun sistem keamanan yang lengkap
  5. Meningkatkan kesadaran keamanan semua karyawan
  6. Mencegah perbuatan jahat internal, sambil meningkatkan efisiensi dan memperkuat kontrol risiko
  7. Hati-hati dalam memperkenalkan layanan pihak ketiga, ikuti prinsip "default hulu dan hilir tidak aman".

Bagaimana pengguna menentukan apakah kontrak pintar aman

  1. Konfirmasi apakah kontrak bersifat open source
  2. Periksa apakah Pemilik menggunakan mekanisme multi-tanda tangan yang terdesentralisasi
  3. Lihat situasi perdagangan yang sudah ada pada kontrak
  4. Konfirmasi apakah kontrak adalah kontrak perwakilan, apakah dapat ditingkatkan, apakah ada kunci waktu
  5. Periksa apakah kontrak telah diaudit oleh beberapa lembaga, apakah hak Owner terlalu besar.
  6. Perhatikan apakah oracle yang digunakan oleh proyek tersebut dapat diandalkan.

Dengan memperhatikan poin-poin ini, pengguna dapat lebih baik menilai keamanan kontrak pintar dan mengurangi risiko keterlibatan dalam proyek Keuangan Desentralisasi.

DEFI0.98%
Lihat Asli
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.
  • Hadiah
  • 6
  • Posting ulang
  • Bagikan
Komentar
0/400
SnapshotStrikervip
· 18jam yang lalu
Kekurangan ini terlalu banyak, setelah menambang, menambang celah.
Lihat AsliBalas0
down_only_larryvip
· 18jam yang lalu
Lagi dalam pertempuran pertahanan ya~
Lihat AsliBalas0
ContractFreelancervip
· 18jam yang lalu
Saatnya mengangkat, saudara-saudara
Lihat AsliBalas0
MEVVictimAlliancevip
· 18jam yang lalu
play people for suckers baru mengerti cara menghindar
Lihat AsliBalas0
ValidatorVibesvip
· 19jam yang lalu
tata kelola rusak af... kapan protokol akhirnya akan memperbaiki vektor serangan ini smh
Lihat AsliBalas0
liquidation_surfervip
· 19jam yang lalu
Melihat tetapi tidak mengatakannya, terlalu nyata.
Lihat AsliBalas0
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)