Euler Finance mengalami flash loan attack, kehilangan hampir 200 juta dolar AS
Pada 13 Maret 2023, proyek Euler Finance mengalami serangan besar-besaran Pinjaman Flash akibat adanya celah dalam fungsi donateToReserves pada kontrak Etoken mereka. Penyerang memanfaatkan berbagai token untuk melakukan beberapa operasi, yang akhirnya menyebabkan kerugian sekitar 197 juta dolar AS.
Analisis Proses Serangan
Penyerang pertama-tama mendapatkan pinjaman flash sebesar 30 juta DAI dari suatu platform pinjaman, kemudian menerapkan dua kontrak kunci: satu untuk operasi peminjaman, dan satu lagi untuk likuidasi. Proses serangan dapat dibagi menjadi beberapa langkah berikut:
Menyimpan 20 juta DAI ke dalam kontrak Protokol Euler, mendapatkan sekitar 19,5 juta eDAI.
Menggunakan fitur leverage 10x dari Protokol Euler, meminjam 195,6 juta eDAI dan 200 juta dDAI.
Menggunakan sisa 10 juta DAI untuk melunasi sebagian utang dan menghancurkan dDAI yang sesuai, kemudian meminjam kembali jumlah yang sama dari eDAI dan dDAI.
Melalui fungsi donateToReserves, mendonasikan 100 juta eDAI, kemudian memanggil fungsi liquidate untuk melakukan likuidasi, memperoleh 310 juta dDAI dan 250 juta eDAI.
Terakhir, menarik 38,9 juta DAI, setelah membayar kembali Pinjaman Flash, bersih mendapatkan sekitar 8,87 juta DAI.
Analisis Penyebab Kerentanan
Masalah inti dari serangan ini terletak pada fungsi donateToReserves yang tidak memiliki pemeriksaan likuiditas yang diperlukan. Dibandingkan dengan fungsi mint, fungsi donateToReserves tidak menjalankan langkah checkLiquidity, yang memungkinkan pengguna untuk melewati mekanisme pemeriksaan likuiditas yang normal.
Dalam kondisi normal, fungsi checkLiquidity akan memanggil modul RiskManager untuk memastikan jumlah Etoken pengguna lebih besar dari jumlah Dtoken. Namun, karena fungsi donateToReserves melewati langkah ini, penyerang dapat terlebih dahulu menempatkan diri mereka dalam keadaan yang dapat dilikuidasi, kemudian menyelesaikan operasi likuidasi.
Saran Keamanan
Untuk mengatasi kerentanan semacam ini, kami menyarankan kepada pengembang proyek DeFi:
Lakukan audit keamanan menyeluruh sebelum kontrak diluncurkan, untuk memastikan keamanan kontrak.
Perhatikan dengan khusus terhadap pengembalian dana, deteksi likuiditas, dan likuidasi utang dalam proyek pinjaman.
Melakukan pemeriksaan likuiditas yang ketat pada semua fungsi yang dapat mempengaruhi status aset pengguna.
Lakukan review kode secara berkala, dan perbaiki potensi risiko keamanan dengan cepat.
Pertimbangkan untuk menerapkan mekanisme tanda tangan ganda atau penguncian waktu sebagai langkah keamanan tambahan.
Peristiwa ini sekali lagi menyoroti pentingnya keamanan kontrak pintar. Pihak proyek harus selalu mengutamakan keamanan, dengan terus memperbaiki praktik keamanan untuk melindungi aset pengguna dan perkembangan sehat ekosistem proyek.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
22 Suka
Hadiah
22
6
Bagikan
Komentar
0/400
MevTears
· 07-07 18:24
Apakah defi berbaring sambil menghitung uang itu nyaman?
Euler Finance mengalami serangan pinjaman flash senilai 200 juta dolar AS, keamanan Keuangan Desentralisasi kembali diingatkan.
Euler Finance mengalami flash loan attack, kehilangan hampir 200 juta dolar AS
Pada 13 Maret 2023, proyek Euler Finance mengalami serangan besar-besaran Pinjaman Flash akibat adanya celah dalam fungsi donateToReserves pada kontrak Etoken mereka. Penyerang memanfaatkan berbagai token untuk melakukan beberapa operasi, yang akhirnya menyebabkan kerugian sekitar 197 juta dolar AS.
Analisis Proses Serangan
Penyerang pertama-tama mendapatkan pinjaman flash sebesar 30 juta DAI dari suatu platform pinjaman, kemudian menerapkan dua kontrak kunci: satu untuk operasi peminjaman, dan satu lagi untuk likuidasi. Proses serangan dapat dibagi menjadi beberapa langkah berikut:
Menyimpan 20 juta DAI ke dalam kontrak Protokol Euler, mendapatkan sekitar 19,5 juta eDAI.
Menggunakan fitur leverage 10x dari Protokol Euler, meminjam 195,6 juta eDAI dan 200 juta dDAI.
Menggunakan sisa 10 juta DAI untuk melunasi sebagian utang dan menghancurkan dDAI yang sesuai, kemudian meminjam kembali jumlah yang sama dari eDAI dan dDAI.
Melalui fungsi donateToReserves, mendonasikan 100 juta eDAI, kemudian memanggil fungsi liquidate untuk melakukan likuidasi, memperoleh 310 juta dDAI dan 250 juta eDAI.
Terakhir, menarik 38,9 juta DAI, setelah membayar kembali Pinjaman Flash, bersih mendapatkan sekitar 8,87 juta DAI.
Analisis Penyebab Kerentanan
Masalah inti dari serangan ini terletak pada fungsi donateToReserves yang tidak memiliki pemeriksaan likuiditas yang diperlukan. Dibandingkan dengan fungsi mint, fungsi donateToReserves tidak menjalankan langkah checkLiquidity, yang memungkinkan pengguna untuk melewati mekanisme pemeriksaan likuiditas yang normal.
Dalam kondisi normal, fungsi checkLiquidity akan memanggil modul RiskManager untuk memastikan jumlah Etoken pengguna lebih besar dari jumlah Dtoken. Namun, karena fungsi donateToReserves melewati langkah ini, penyerang dapat terlebih dahulu menempatkan diri mereka dalam keadaan yang dapat dilikuidasi, kemudian menyelesaikan operasi likuidasi.
Saran Keamanan
Untuk mengatasi kerentanan semacam ini, kami menyarankan kepada pengembang proyek DeFi:
Lakukan audit keamanan menyeluruh sebelum kontrak diluncurkan, untuk memastikan keamanan kontrak.
Perhatikan dengan khusus terhadap pengembalian dana, deteksi likuiditas, dan likuidasi utang dalam proyek pinjaman.
Melakukan pemeriksaan likuiditas yang ketat pada semua fungsi yang dapat mempengaruhi status aset pengguna.
Lakukan review kode secara berkala, dan perbaiki potensi risiko keamanan dengan cepat.
Pertimbangkan untuk menerapkan mekanisme tanda tangan ganda atau penguncian waktu sebagai langkah keamanan tambahan.
Peristiwa ini sekali lagi menyoroti pentingnya keamanan kontrak pintar. Pihak proyek harus selalu mengutamakan keamanan, dengan terus memperbaiki praktik keamanan untuk melindungi aset pengguna dan perkembangan sehat ekosistem proyek.