Analisis Insiden Kerentanan Euler Finance: Serangan Pinjaman Flash Mengakibatkan Kerugian 197 Juta Dolar
Pada 13 Maret 2023, proyek Euler Finance mengalami sebuah insiden keamanan yang signifikan. Menurut data pemantauan di blockchain, karena adanya kerentanan pengecekan likuiditas pada fungsi donateToReserves dalam Etoken, proyek tersebut mengalami serangan pinjaman flash. Penyerang melakukan beberapa operasi dengan berbagai jenis koin, yang akhirnya menyebabkan kerugian mencapai 197 juta USD, melibatkan 6 jenis token. Saat ini, dana tersebut masih tersimpan di akun penyerang.
Analisis Proses Serangan
Penyerang pertama-tama mendapatkan pinjaman flash sebesar 30 juta Dai dari platform pinjaman tertentu, kemudian mengimplementasikan dua kontrak: satu untuk meminjam, dan yang lainnya untuk likuidasi.
Penyerang menyetor 20 juta Dai yang dipinjam ke kontrak Protokol Euler dan memperoleh sekitar 19,5 juta eDAI.
Dengan memanfaatkan fitur leverage 10x dari Protokol Euler, penyerang meminjam 195,6 juta eDAI dan 200 juta dDAI.
Penyerang menggunakan sisa 10 juta DAI untuk membayar sebagian utang dan menghancurkan dDAI yang sesuai, kemudian meminjam kembali 195,6 juta eDAI dan 200 juta dDAI.
Langkah Kunci: Penyerang memanggil fungsi donateToReserves, menyumbangkan sepuluh kali lipat dari jumlah dana yang dibayarkan, yaitu 100 juta eDAI. Segera setelah itu, penyerang memicu fungsi likuidasi, mendapatkan 310 juta dDAI dan 250 juta eDAI.
Terakhir, penyerang menarik 38,9 juta Dai, mengembalikan 30 juta Pinjaman Flash, dan akhirnya memperoleh sekitar 8,87 juta Dai.
Analisis Penyebab Kerentanan
Masalah inti dari serangan ini terletak pada fungsi donateToReserves. Jika dibandingkan dengan fungsi kunci lainnya (seperti fungsi mint), fungsi donateToReserves tidak memiliki satu langkah penting: checkLiquidity.
Fungsi checkLiquidity bertujuan untuk memanggil modul RiskManager, memeriksa pengguna, dan memastikan Etoken lebih besar dari Dtoken, sehingga menjamin kondisi likuiditas pengguna. Dalam keadaan normal, setiap operasi harus melakukan pemeriksaan ini. Namun, fungsi donateToReserves tidak memiliki langkah ini, yang memungkinkan penyerang untuk terlebih dahulu menempatkan diri mereka dalam keadaan yang dapat dilikuidasi, kemudian menyelesaikan operasi likuidasi.
Saran Keamanan
Untuk mengatasi jenis kerentanan ini, kami menyarankan kepada pihak proyek untuk melakukan audit keamanan secara menyeluruh sebelum peluncuran, untuk memastikan keamanan kontrak. Untuk proyek peminjaman, terutama perlu memperhatikan beberapa aspek berikut:
Integritas mekanisme pengembalian dana
Komprehensivitas Deteksi Likuiditas
Keamanan proses likuidasi utang
Hanya dengan melalui audit keamanan yang ketat dan evaluasi risiko yang komprehensif, kemungkinan terjadinya insiden keamanan serupa dapat diminimalkan, sehingga melindungi keamanan dana proyek dan pengguna.
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.
16 Suka
Hadiah
16
3
Bagikan
Komentar
0/400
AirdropChaser
· 08-05 08:04
play people for suckers play people for suckers setiap hari dipecat
Lihat AsliBalas0
DefiSecurityGuard
· 08-05 08:04
*sigh* hari lain, protokol lain yang hancur karena kerentanan basic donateToReserves... sudah memperingatkan ini sebulan yang lalu jujur. pengingat penting: SELALU sanitasi pemeriksaan likuiditas sial. kesalahan amatir ini terus menghabiskan 9 angka smh
Lihat AsliBalas0
GasGrillMaster
· 08-05 07:50
Kak, pertahanan dasar ini saja tidak memenuhi syarat, benar-benar jelek.
Euler Finance mengalami serangan Pinjaman Flash senilai 197 juta dolar AS, kerentanan fungsi donateToReserves menjadi penyebabnya.
Analisis Insiden Kerentanan Euler Finance: Serangan Pinjaman Flash Mengakibatkan Kerugian 197 Juta Dolar
Pada 13 Maret 2023, proyek Euler Finance mengalami sebuah insiden keamanan yang signifikan. Menurut data pemantauan di blockchain, karena adanya kerentanan pengecekan likuiditas pada fungsi donateToReserves dalam Etoken, proyek tersebut mengalami serangan pinjaman flash. Penyerang melakukan beberapa operasi dengan berbagai jenis koin, yang akhirnya menyebabkan kerugian mencapai 197 juta USD, melibatkan 6 jenis token. Saat ini, dana tersebut masih tersimpan di akun penyerang.
Analisis Proses Serangan
Penyerang pertama-tama mendapatkan pinjaman flash sebesar 30 juta Dai dari platform pinjaman tertentu, kemudian mengimplementasikan dua kontrak: satu untuk meminjam, dan yang lainnya untuk likuidasi.
Penyerang menyetor 20 juta Dai yang dipinjam ke kontrak Protokol Euler dan memperoleh sekitar 19,5 juta eDAI.
Dengan memanfaatkan fitur leverage 10x dari Protokol Euler, penyerang meminjam 195,6 juta eDAI dan 200 juta dDAI.
Penyerang menggunakan sisa 10 juta DAI untuk membayar sebagian utang dan menghancurkan dDAI yang sesuai, kemudian meminjam kembali 195,6 juta eDAI dan 200 juta dDAI.
Langkah Kunci: Penyerang memanggil fungsi donateToReserves, menyumbangkan sepuluh kali lipat dari jumlah dana yang dibayarkan, yaitu 100 juta eDAI. Segera setelah itu, penyerang memicu fungsi likuidasi, mendapatkan 310 juta dDAI dan 250 juta eDAI.
Terakhir, penyerang menarik 38,9 juta Dai, mengembalikan 30 juta Pinjaman Flash, dan akhirnya memperoleh sekitar 8,87 juta Dai.
Analisis Penyebab Kerentanan
Masalah inti dari serangan ini terletak pada fungsi donateToReserves. Jika dibandingkan dengan fungsi kunci lainnya (seperti fungsi mint), fungsi donateToReserves tidak memiliki satu langkah penting: checkLiquidity.
Fungsi checkLiquidity bertujuan untuk memanggil modul RiskManager, memeriksa pengguna, dan memastikan Etoken lebih besar dari Dtoken, sehingga menjamin kondisi likuiditas pengguna. Dalam keadaan normal, setiap operasi harus melakukan pemeriksaan ini. Namun, fungsi donateToReserves tidak memiliki langkah ini, yang memungkinkan penyerang untuk terlebih dahulu menempatkan diri mereka dalam keadaan yang dapat dilikuidasi, kemudian menyelesaikan operasi likuidasi.
Saran Keamanan
Untuk mengatasi jenis kerentanan ini, kami menyarankan kepada pihak proyek untuk melakukan audit keamanan secara menyeluruh sebelum peluncuran, untuk memastikan keamanan kontrak. Untuk proyek peminjaman, terutama perlu memperhatikan beberapa aspek berikut:
Hanya dengan melalui audit keamanan yang ketat dan evaluasi risiko yang komprehensif, kemungkinan terjadinya insiden keamanan serupa dapat diminimalkan, sehingga melindungi keamanan dana proyek dan pengguna.