Euler Finance mengalami serangan pinjaman flash, mengalami kerugian hampir 200 juta dolar.
Pada 13 Maret 2023, proyek Euler Finance mengalami serangan pinjaman flash yang signifikan. Menurut data pemantauan di blockchain, penyerang memanfaatkan celah dalam kontrak proyek, berhasil mencuri sekitar 197 juta USD, melibatkan 6 jenis token yang berbeda.
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 pinjaman, dan satu lagi untuk likuidasi.
Langkah-langkah utama dari serangan adalah sebagai berikut:
Mengunci 20 juta DAI dalam kontrak Protokol Euler, mendapatkan 19,5 juta eDAI.
Memanfaatkan fitur leverage 10x dari Euler Protocol, meminjam 195,6 juta eDAI dan 200 juta dDAI.
Menggunakan sisa 10 juta DAI untuk membayar sebagian utang, dan menghancurkan dDAI yang sesuai.
Meminjam kembali jumlah yang sama dari eDAI dan dDAI.
M捻ng捻gunakan fungsi donateToReserves untuk mendonasikan 100 juta eDAI, kemudian memanggil fungsi liquidate untuk melakukan likuidasi, mendapatkan 310 juta dDAI dan 250 juta eDAI.
Terakhir, menarik 38,9 juta DAI, mengembalikan 30 juta Pinjaman Flash, dengan keuntungan bersih sekitar 8,87 juta DAI.
Analisis Penyebab Kerentanan
Inti dari serangan ini adalah kerentanan pada fungsi donateToReserves dalam kontrak Euler Finance yang tidak memiliki pemeriksaan likuiditas yang diperlukan. Berbeda dengan fungsi kunci lainnya (seperti fungsi mint), fungsi donateToReserves tidak melakukan operasi checkLiquidity, yang memungkinkan penyerang untuk memanipulasi status akun mereka agar memenuhi syarat untuk dilikuidasi.
Dalam kondisi normal, fungsi checkLiquidity akan memanggil modul RiskManager untuk memastikan jumlah eToken pengguna selalu lebih besar dari jumlah dToken. Namun, karena fungsi donateToReserves tidak memiliki langkah kunci ini, penyerang dapat melewati mekanisme keamanan dan mendapatkan keuntungan secara tidak sah.
Saran Keamanan
Untuk serangan semacam ini, proyek blockchain harus:
Melakukan audit keamanan menyeluruh sebelum kontrak diluncurkan, untuk memastikan kualitas dan keamanan kode.
Perhatikan dengan khusus pada tahap kunci seperti pelunasan dana, deteksi likuiditas, dan likuidasi utang dalam proyek pinjaman.
Pastikan semua fungsi yang mungkin mempengaruhi status aset pengguna menyertakan langkah pemeriksaan keamanan yang diperlukan.
Secara berkala melakukan review kode dan pemindaian kerentanan, segera memperbaiki risiko potensial.
Pertimbangkan untuk memperkenalkan mekanisme tanda tangan ganda atau kunci waktu dan langkah-langkah keamanan tambahan lainnya untuk memberikan waktu penyangga dalam menghadapi keadaan darurat.
Kejadian ini sekali lagi menekankan pentingnya keamanan kontrak pintar. Pihak proyek harus selalu memprioritaskan keamanan, melalui praktik keamanan yang berkelanjutan dan inovasi teknologi, untuk bersama-sama membangun ekosistem Web3 yang lebih aman dan dapat diandalkan.
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.
Euler Finance mengalami serangan Pinjaman Flash senilai 197 juta dolar AS, fungsi donateToReserves memiliki celah.
Euler Finance mengalami serangan pinjaman flash, mengalami kerugian hampir 200 juta dolar.
Pada 13 Maret 2023, proyek Euler Finance mengalami serangan pinjaman flash yang signifikan. Menurut data pemantauan di blockchain, penyerang memanfaatkan celah dalam kontrak proyek, berhasil mencuri sekitar 197 juta USD, melibatkan 6 jenis token yang berbeda.
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 pinjaman, dan satu lagi untuk likuidasi.
Langkah-langkah utama dari serangan adalah sebagai berikut:
Mengunci 20 juta DAI dalam kontrak Protokol Euler, mendapatkan 19,5 juta eDAI.
Memanfaatkan fitur leverage 10x dari Euler Protocol, meminjam 195,6 juta eDAI dan 200 juta dDAI.
Menggunakan sisa 10 juta DAI untuk membayar sebagian utang, dan menghancurkan dDAI yang sesuai.
Meminjam kembali jumlah yang sama dari eDAI dan dDAI.
M捻ng捻gunakan fungsi donateToReserves untuk mendonasikan 100 juta eDAI, kemudian memanggil fungsi liquidate untuk melakukan likuidasi, mendapatkan 310 juta dDAI dan 250 juta eDAI.
Terakhir, menarik 38,9 juta DAI, mengembalikan 30 juta Pinjaman Flash, dengan keuntungan bersih sekitar 8,87 juta DAI.
Analisis Penyebab Kerentanan
Inti dari serangan ini adalah kerentanan pada fungsi donateToReserves dalam kontrak Euler Finance yang tidak memiliki pemeriksaan likuiditas yang diperlukan. Berbeda dengan fungsi kunci lainnya (seperti fungsi mint), fungsi donateToReserves tidak melakukan operasi checkLiquidity, yang memungkinkan penyerang untuk memanipulasi status akun mereka agar memenuhi syarat untuk dilikuidasi.
Dalam kondisi normal, fungsi checkLiquidity akan memanggil modul RiskManager untuk memastikan jumlah eToken pengguna selalu lebih besar dari jumlah dToken. Namun, karena fungsi donateToReserves tidak memiliki langkah kunci ini, penyerang dapat melewati mekanisme keamanan dan mendapatkan keuntungan secara tidak sah.
Saran Keamanan
Untuk serangan semacam ini, proyek blockchain harus:
Melakukan audit keamanan menyeluruh sebelum kontrak diluncurkan, untuk memastikan kualitas dan keamanan kode.
Perhatikan dengan khusus pada tahap kunci seperti pelunasan dana, deteksi likuiditas, dan likuidasi utang dalam proyek pinjaman.
Pastikan semua fungsi yang mungkin mempengaruhi status aset pengguna menyertakan langkah pemeriksaan keamanan yang diperlukan.
Secara berkala melakukan review kode dan pemindaian kerentanan, segera memperbaiki risiko potensial.
Pertimbangkan untuk memperkenalkan mekanisme tanda tangan ganda atau kunci waktu dan langkah-langkah keamanan tambahan lainnya untuk memberikan waktu penyangga dalam menghadapi keadaan darurat.
Kejadian ini sekali lagi menekankan pentingnya keamanan kontrak pintar. Pihak proyek harus selalu memprioritaskan keamanan, melalui praktik keamanan yang berkelanjutan dan inovasi teknologi, untuk bersama-sama membangun ekosistem Web3 yang lebih aman dan dapat diandalkan.