Proyek Euler Finance mengalami serangan flash loan, dengan kerugian hampir 200 juta dolar.
Pada 13 Maret, proyek Euler Finance mengalami serangan pinjaman flash akibat kerentanan kontrak pintar, dengan kerugian mencapai 197 juta dolar. Penyerang memanfaatkan kerentanan pada fungsi donateToReserves dari kontrak Etoken yang kurang melakukan pemeriksaan likuiditas, melakukan berbagai operasi serangan dengan berbagai cryptocurrency.
Analisis Proses Serangan
Penyerang pertama-tama mendapatkan Pinjaman Flash sebesar 30 juta DAI dari suatu platform pinjaman, kemudian menerapkan dua kontrak yaitu pinjaman dan likuidasi. Proses serangan secara garis besar adalah sebagai berikut:
Menyimpan 20 juta DAI ke dalam kontrak Euler Protocol, mendapatkan 19,5 juta eDAI.
Menggunakan fitur leverage 10x dari Euler Protocol, meminjam 195,6 juta eDAI dan 200 juta dDAI.
Menggunakan sisa 10 juta DAI untuk membayar sebagian utang, menghancurkan dDAI yang sesuai.
Meminjam kembali jumlah eDAI dan dDAI yang setara.
Donasikan 100 juta eDAI melalui fungsi donateToReserves, kemudian panggil fungsi liquidate untuk melakukan likuidasi, memperoleh 310 juta dDAI dan 250 juta eDAI.
Terakhir menarik 38,90 juta DAI, setelah membayar kembali Pinjaman Flash, meraih keuntungan 8,87 juta DAI.
Analisis Penyebab Kerentanan
Inti dari serangan ini adalah bahwa fungsi donateToReserves dari proyek Euler Finance tidak memiliki pemeriksaan likuiditas yang diperlukan. Dibandingkan dengan fungsi kunci lainnya seperti mint, fungsi donateToReserves tidak memanggil checkLiquidity untuk memverifikasi likuiditas pengguna. Hal ini memungkinkan penyerang untuk memanipulasi status akun mereka agar sesuai dengan kondisi likuidasi, sehingga mendapatkan keuntungan yang tidak semestinya.
Dalam keadaan normal, fungsi checkLiquidity akan memanggil modul RiskManager, memastikan bahwa jumlah Etoken pengguna selalu lebih besar dari jumlah Dtoken. Namun, karena fungsi donateToReserves melewatkan langkah ini, penyerang dapat menghindari mekanisme keamanan.
Saran Keamanan
Peristiwa ini sekali lagi menyoroti pentingnya audit keamanan kontrak pintar. Untuk proyek pinjaman, perlu memperhatikan beberapa aspek berikut:
Integritas mekanisme pengembalian dana
Komprehensivitas Deteksi Likuiditas
Keamanan Proses Likuidasi Utang
Pihak proyek harus melakukan audit keamanan yang menyeluruh dan detail sebelum menerapkan kontrak, untuk mencegah munculnya kerentanan serupa. Selain itu, pemantauan keamanan yang berkelanjutan dan perbaikan kerentanan yang tepat waktu juga merupakan kunci untuk menjaga operasi proyek yang aman dalam jangka panjang.
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.
7 Suka
Hadiah
7
2
Bagikan
Komentar
0/400
WhaleMinion
· 07-25 11:58
Orang yang suka membuat masalah sudah datang lagi
Lihat AsliBalas0
DefiEngineerJack
· 07-25 11:45
*sigh* jam amatir dalam desain kontrak pintar... tampilkan verifikasi formal atau gtfo
Euler Finance mengalami serangan pinjaman flash dengan kerugian hampir 200 juta dolar.
Proyek Euler Finance mengalami serangan flash loan, dengan kerugian hampir 200 juta dolar.
Pada 13 Maret, proyek Euler Finance mengalami serangan pinjaman flash akibat kerentanan kontrak pintar, dengan kerugian mencapai 197 juta dolar. Penyerang memanfaatkan kerentanan pada fungsi donateToReserves dari kontrak Etoken yang kurang melakukan pemeriksaan likuiditas, melakukan berbagai operasi serangan dengan berbagai cryptocurrency.
Analisis Proses Serangan
Penyerang pertama-tama mendapatkan Pinjaman Flash sebesar 30 juta DAI dari suatu platform pinjaman, kemudian menerapkan dua kontrak yaitu pinjaman dan likuidasi. Proses serangan secara garis besar adalah sebagai berikut:
Menyimpan 20 juta DAI ke dalam kontrak Euler Protocol, mendapatkan 19,5 juta eDAI.
Menggunakan fitur leverage 10x dari Euler Protocol, meminjam 195,6 juta eDAI dan 200 juta dDAI.
Menggunakan sisa 10 juta DAI untuk membayar sebagian utang, menghancurkan dDAI yang sesuai.
Meminjam kembali jumlah eDAI dan dDAI yang setara.
Donasikan 100 juta eDAI melalui fungsi donateToReserves, kemudian panggil fungsi liquidate untuk melakukan likuidasi, memperoleh 310 juta dDAI dan 250 juta eDAI.
Terakhir menarik 38,90 juta DAI, setelah membayar kembali Pinjaman Flash, meraih keuntungan 8,87 juta DAI.
Analisis Penyebab Kerentanan
Inti dari serangan ini adalah bahwa fungsi donateToReserves dari proyek Euler Finance tidak memiliki pemeriksaan likuiditas yang diperlukan. Dibandingkan dengan fungsi kunci lainnya seperti mint, fungsi donateToReserves tidak memanggil checkLiquidity untuk memverifikasi likuiditas pengguna. Hal ini memungkinkan penyerang untuk memanipulasi status akun mereka agar sesuai dengan kondisi likuidasi, sehingga mendapatkan keuntungan yang tidak semestinya.
Dalam keadaan normal, fungsi checkLiquidity akan memanggil modul RiskManager, memastikan bahwa jumlah Etoken pengguna selalu lebih besar dari jumlah Dtoken. Namun, karena fungsi donateToReserves melewatkan langkah ini, penyerang dapat menghindari mekanisme keamanan.
Saran Keamanan
Peristiwa ini sekali lagi menyoroti pentingnya audit keamanan kontrak pintar. Untuk proyek pinjaman, perlu memperhatikan beberapa aspek berikut:
Pihak proyek harus melakukan audit keamanan yang menyeluruh dan detail sebelum menerapkan kontrak, untuk mencegah munculnya kerentanan serupa. Selain itu, pemantauan keamanan yang berkelanjutan dan perbaikan kerentanan yang tepat waktu juga merupakan kunci untuk menjaga operasi proyek yang aman dalam jangka panjang.