Euler Finance mengalami serangan pinjaman flash, kehilangan hampir 200 juta dolar
Pada 13 Maret, proyek Euler Finance mengalami serangan flash loan karena adanya kerentanan dalam kontrak pintarnya, yang mengakibatkan kerugian besar sekitar 197 juta USD. Serangan ini melibatkan 6 jenis token cryptocurrency yang berbeda.
Analisis Proses Serangan
Penyerang pertama-tama mendapatkan Pinjaman Flash senilai 30 juta DAI dari platform peminjaman tertentu, dan menyebarkan dua kontrak kunci: satu untuk operasi peminjaman, dan satu lagi untuk likuidasi.
Kemudian, penyerang mengunci 20 juta DAI ke dalam kontrak Euler Protocol dan memperoleh sekitar 19,5 juta eDAI. Dengan memanfaatkan fitur leverage 10x dari Euler Protocol, penyerang lebih lanjut meminjam 195,6 juta eDAI dan 200 juta dDAI.
Selanjutnya, penyerang menggunakan sisa 10 juta DAI untuk membayar sebagian utang, menghancurkan dDAI yang sesuai. Kemudian meminjam kembali jumlah yang sama dari eDAI dan dDAI.
Langkah kunci adalah, penyerang memanfaatkan kerentanan fungsi donateToReserves untuk menyumbang 10 kali lipat dari jumlah dana yang harus dibayar kembali, yaitu 100 juta eDAI. Tindakan ini memungkinkan penyerang untuk memicu mekanisme likuidasi, sehingga memperoleh 310 juta dDAI dan 250 juta eDAI.
Akhirnya, penyerang memperoleh 38,9 juta DAI melalui fungsi penarikan, mengembalikan 30 juta DAI dari Pinjaman Flash, dan akhirnya meraih keuntungan sekitar 8,87 juta DAI.
Analisis Penyebab Kerentanan
Inti dari kerentanan serangan ini terletak pada fungsi donateToReserves dari Euler Finance yang tidak memiliki pemeriksaan likuiditas yang diperlukan. Berbeda dengan fungsi kunci lainnya (seperti fungsi mint), fungsi donateToReserves tidak memanggil checkLiquidity untuk melakukan verifikasi likuiditas pengguna.
Dalam kondisi normal, fungsi checkLiquidity akan memastikan bahwa jumlah eToken pengguna lebih besar dari jumlah dToken dengan memanggil modul RiskManager, untuk menjaga keamanan sistem. Namun, karena fungsi donateToReserves tidak memiliki langkah kunci ini, penyerang dapat memanipulasi status akun mereka sehingga memenuhi syarat untuk dilikuidasi, dan kemudian melakukan likuidasi untuk mendapatkan keuntungan.
Saran Keamanan
Untuk serangan semacam ini, kami menyarankan kepada pengembang proyek blockchain:
Lakukan audit keamanan menyeluruh sebelum peluncuran kontrak pintar, terutama fokus pada pinjaman dana, manajemen likuiditas, dan penyelesaian utang.
Terapkan pemeriksaan keamanan yang ketat pada semua fungsi yang mungkin mempengaruhi status aset pengguna, termasuk tetapi tidak terbatas pada verifikasi likuiditas.
Secara berkala melakukan tinjauan kode dan pemindaian kerentanan, serta segera memperbaiki potensi risiko keamanan.
Membangun mekanisme manajemen risiko yang lengkap, menetapkan batas pinjaman dan ambang likuidasi yang wajar.
Pertimbangkan untuk memperkenalkan langkah-langkah keamanan tambahan seperti multi-signature atau time lock untuk mencegah kehilangan dana dalam jumlah besar.
Dengan mengambil langkah-langkah pencegahan ini, keamanan proyek DeFi dapat meningkat secara signifikan dan mengurangi risiko terkena serangan serupa.
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.
Euler Finance mengalami serangan Pinjaman Flash senilai 200 juta dolar AS, celah pada smart contract menjadi penyebabnya.
Euler Finance mengalami serangan pinjaman flash, kehilangan hampir 200 juta dolar
Pada 13 Maret, proyek Euler Finance mengalami serangan flash loan karena adanya kerentanan dalam kontrak pintarnya, yang mengakibatkan kerugian besar sekitar 197 juta USD. Serangan ini melibatkan 6 jenis token cryptocurrency yang berbeda.
Analisis Proses Serangan
Penyerang pertama-tama mendapatkan Pinjaman Flash senilai 30 juta DAI dari platform peminjaman tertentu, dan menyebarkan dua kontrak kunci: satu untuk operasi peminjaman, dan satu lagi untuk likuidasi.
Kemudian, penyerang mengunci 20 juta DAI ke dalam kontrak Euler Protocol dan memperoleh sekitar 19,5 juta eDAI. Dengan memanfaatkan fitur leverage 10x dari Euler Protocol, penyerang lebih lanjut meminjam 195,6 juta eDAI dan 200 juta dDAI.
Selanjutnya, penyerang menggunakan sisa 10 juta DAI untuk membayar sebagian utang, menghancurkan dDAI yang sesuai. Kemudian meminjam kembali jumlah yang sama dari eDAI dan dDAI.
Langkah kunci adalah, penyerang memanfaatkan kerentanan fungsi donateToReserves untuk menyumbang 10 kali lipat dari jumlah dana yang harus dibayar kembali, yaitu 100 juta eDAI. Tindakan ini memungkinkan penyerang untuk memicu mekanisme likuidasi, sehingga memperoleh 310 juta dDAI dan 250 juta eDAI.
Akhirnya, penyerang memperoleh 38,9 juta DAI melalui fungsi penarikan, mengembalikan 30 juta DAI dari Pinjaman Flash, dan akhirnya meraih keuntungan sekitar 8,87 juta DAI.
Analisis Penyebab Kerentanan
Inti dari kerentanan serangan ini terletak pada fungsi donateToReserves dari Euler Finance yang tidak memiliki pemeriksaan likuiditas yang diperlukan. Berbeda dengan fungsi kunci lainnya (seperti fungsi mint), fungsi donateToReserves tidak memanggil checkLiquidity untuk melakukan verifikasi likuiditas pengguna.
Dalam kondisi normal, fungsi checkLiquidity akan memastikan bahwa jumlah eToken pengguna lebih besar dari jumlah dToken dengan memanggil modul RiskManager, untuk menjaga keamanan sistem. Namun, karena fungsi donateToReserves tidak memiliki langkah kunci ini, penyerang dapat memanipulasi status akun mereka sehingga memenuhi syarat untuk dilikuidasi, dan kemudian melakukan likuidasi untuk mendapatkan keuntungan.
Saran Keamanan
Untuk serangan semacam ini, kami menyarankan kepada pengembang proyek blockchain:
Lakukan audit keamanan menyeluruh sebelum peluncuran kontrak pintar, terutama fokus pada pinjaman dana, manajemen likuiditas, dan penyelesaian utang.
Terapkan pemeriksaan keamanan yang ketat pada semua fungsi yang mungkin mempengaruhi status aset pengguna, termasuk tetapi tidak terbatas pada verifikasi likuiditas.
Secara berkala melakukan tinjauan kode dan pemindaian kerentanan, serta segera memperbaiki potensi risiko keamanan.
Membangun mekanisme manajemen risiko yang lengkap, menetapkan batas pinjaman dan ambang likuidasi yang wajar.
Pertimbangkan untuk memperkenalkan langkah-langkah keamanan tambahan seperti multi-signature atau time lock untuk mencegah kehilangan dana dalam jumlah besar.
Dengan mengambil langkah-langkah pencegahan ini, keamanan proyek DeFi dapat meningkat secara signifikan dan mengurangi risiko terkena serangan serupa.