Euler Finance mengalami serangan pinjaman flash, dengan kerugian mencapai 1,97 juta dolar AS
Pada 13 Maret 2023, proyek Euler Finance mengalami serangan pinjaman flash besar-besaran akibat celah dalam kontrak pintarnya. Penyerang memanfaatkan celah dalam fungsi donateToReserves di Etoken yang tidak memiliki pemeriksaan likuiditas, dengan melakukan banyak panggilan operasi untuk berbagai jenis koin untuk mendapatkan keuntungan yang besar. Total kerugian yang disebabkan oleh serangan ini mencapai 197 juta USD, melibatkan 6 jenis token yang berbeda.
Analisis Proses Serangan
Langkah-langkah yang diambil oleh penyerang adalah sebagai berikut:
Meminjam 30 juta DAI dari platform pinjaman tertentu menggunakan pinjaman flash.
Deploy dua kontrak: satu untuk peminjaman, yang lainnya untuk likuidasi.
Mengunci 20 juta DAI ke dalam kontrak Euler Protocol, mendapatkan 195 ribu eDAI.
Menggunakan fitur pinjaman dengan leverage 10 kali dari Protokol Euler, meminjam 1.956.000 eDAI dan 2.000.000 dDAI.
Menggunakan sisa 10 juta DAI untuk membayar sebagian utang, dan menghancurkan dDAI yang sesuai.
Meminjam kembali 1.956.000 eDAI dan 2.000.000 dDAI.
Panggil fungsi donateToReserves,捐赠10倍于偿还资金的金额(100万eDAI)。
Memicu fungsi likuidasi, mendapatkan 3,1 juta dDAI dan 2,5 juta eDAI.
Mengambil 389.000 DAI, mengembalikan 300.000 Pinjaman Flash, akhirnya menghasilkan 88.700 DAI.
Analisis Kerentanan
Kunci keberhasilan serangan terletak pada kurangnya pemeriksaan likuiditas yang diperlukan pada fungsi donateToReserves milik Euler Finance. Berbeda dengan fungsi kunci lainnya (seperti mint), fungsi donateToReserves tidak menjalankan langkah checkLiquidity. Kelalaian ini memungkinkan pengguna untuk memanipulasi status akun mereka agar memenuhi syarat untuk dilikuidasi, dan kemudian meraup keuntungan melalui likuidasi.
Dalam kondisi normal, fungsi checkLiquidity akan memanggil modul RiskManager untuk memastikan bahwa Etoken pengguna selalu lebih besar dari Dtoken, demi menjaga kesehatan sistem. Namun, karena fungsi donateToReserves tidak memiliki pemeriksaan penting ini, penyerang dapat melewati mekanisme keamanan sistem.
Saran Keamanan
Untuk serangan semacam ini, kami mengajukan saran keamanan berikut:
Audit keamanan yang komprehensif harus dilakukan sebelum kontrak pintar diluncurkan.
Proyek pinjaman harus sangat memperhatikan aspek penting seperti pengembalian dana, deteksi likuiditas, dan likuidasi utang.
Pastikan semua fungsi yang mungkin mempengaruhi status aset pengguna menyertakan pemeriksaan keamanan yang diperlukan.
Secara berkala melakukan review kode, memastikan fitur baru tidak akan memperkenalkan kerentanan potensial.
Membangun mekanisme respons darurat agar dapat merespons dengan cepat saat terjadi insiden keamanan.
Peristiwa ini sekali lagi menyoroti pentingnya keamanan kontrak pintar. Pihak proyek harus selalu mengutamakan keamanan, melindungi aset pengguna melalui praktik keamanan yang berkelanjutan dan audit.
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 sebesar 197 juta dolar AS, celah dalam smart contract menyebabkan kerugian besar.
Euler Finance mengalami serangan pinjaman flash, dengan kerugian mencapai 1,97 juta dolar AS
Pada 13 Maret 2023, proyek Euler Finance mengalami serangan pinjaman flash besar-besaran akibat celah dalam kontrak pintarnya. Penyerang memanfaatkan celah dalam fungsi donateToReserves di Etoken yang tidak memiliki pemeriksaan likuiditas, dengan melakukan banyak panggilan operasi untuk berbagai jenis koin untuk mendapatkan keuntungan yang besar. Total kerugian yang disebabkan oleh serangan ini mencapai 197 juta USD, melibatkan 6 jenis token yang berbeda.
Analisis Proses Serangan
Langkah-langkah yang diambil oleh penyerang adalah sebagai berikut:
Analisis Kerentanan
Kunci keberhasilan serangan terletak pada kurangnya pemeriksaan likuiditas yang diperlukan pada fungsi donateToReserves milik Euler Finance. Berbeda dengan fungsi kunci lainnya (seperti mint), fungsi donateToReserves tidak menjalankan langkah checkLiquidity. Kelalaian ini memungkinkan pengguna untuk memanipulasi status akun mereka agar memenuhi syarat untuk dilikuidasi, dan kemudian meraup keuntungan melalui likuidasi.
Dalam kondisi normal, fungsi checkLiquidity akan memanggil modul RiskManager untuk memastikan bahwa Etoken pengguna selalu lebih besar dari Dtoken, demi menjaga kesehatan sistem. Namun, karena fungsi donateToReserves tidak memiliki pemeriksaan penting ini, penyerang dapat melewati mekanisme keamanan sistem.
Saran Keamanan
Untuk serangan semacam ini, kami mengajukan saran keamanan berikut:
Peristiwa ini sekali lagi menyoroti pentingnya keamanan kontrak pintar. Pihak proyek harus selalu mengutamakan keamanan, melindungi aset pengguna melalui praktik keamanan yang berkelanjutan dan audit.