Proyek Euler Finance mengalami serangan pinjaman flash, dengan kerugian hampir 200 juta USD
Pada 13 Maret 2023, proyek Euler Finance mengalami serangan flash loan akibat kerentanan kontrak, dengan kerugian mencapai 197 juta dolar AS. Penyerang memanfaatkan celah pada fungsi donateToReserves dalam kontrak proyek yang tidak memiliki pemeriksaan likuiditas, dan melalui beberapa operasi berhasil mendapatkan keuntungan besar.
Analisis Proses Serangan
Penyerang pertama-tama meminjam 30 juta DAI dari platform pinjaman tertentu melalui Pinjaman Flash, dan menerapkan dua kontrak: kontrak pinjaman dan kontrak likuidasi.
Penyerang mengunci 20 juta DAI yang dipinjam ke dalam kontrak Euler Protocol, mendapatkan 195.000 eDAI.
Dengan memanfaatkan fitur leverage 10x dari Euler Protocol, penyerang meminjam 1.956.000 eDAI dan 2.000.000 dDAI.
Penyerang menggunakan sisa 10 juta DAI untuk melunasi sebagian utang, menghancurkan dDAI yang sesuai, dan kemudian meminjam kembali jumlah eDAI dan dDAI yang sama.
Langkah Kunci: Penyerang memanggil fungsi donateToReserves, menyumbangkan 1 juta eDAI, kemudian melakukan likuidasi melalui fungsi liquidate, memperoleh 3,1 juta dDAI dan 2,5 juta eDAI.
Terakhir, penyerang menarik 389.000 DAI, mengembalikan 300.000 DAI dari Pinjaman Flash, dan akhirnya mendapatkan keuntungan 88.700 DAI.
Penyebab Kerentanan
Kerentanan inti dari serangan ini terletak pada fungsi donateToReserves dalam kontrak Euler Finance yang tidak memiliki pemeriksaan likuiditas yang diperlukan. Berbeda dengan fungsi penting lainnya seperti mint, fungsi donateToReserves tidak melakukan operasi checkLiquidity. Hal ini memungkinkan penyerang untuk menghindari pemeriksaan likuiditas normal, menciptakan keadaan yang dapat dilikuidasi secara buatan, dan kemudian menyelesaikan likuidasi untuk mendapatkan keuntungan.
Dalam keadaan normal, fungsi checkLiquidity akan memanggil modul RiskManager untuk memastikan jumlah Etoken pengguna lebih besar dari jumlah Dtoken, demi menjaga keamanan kontrak. Namun, karena fungsi donateToReserves tidak memiliki langkah kunci ini, penyerang dapat memanfaatkan celah ini untuk melakukan serangan.
Saran Keamanan
Untuk serangan semacam ini, kami menyarankan kepada pihak proyek blockchain:
Melakukan audit keamanan menyeluruh sebelum kontrak diluncurkan, untuk memastikan keamanan kontrak.
Untuk proyek pinjaman, perlu memperhatikan secara khusus tahap kunci seperti pengembalian dana, pemeriksaan likuiditas, dan penyelesaian utang.
Pastikan semua fungsi yang mungkin memengaruhi status aset pengguna mencakup pemeriksaan keamanan yang diperlukan, seperti pemeriksaan likuiditas.
Secara berkala melakukan audit dan pembaruan kode, serta segera memperbaiki kerentanan yang ditemukan.
Membangun mekanisme respons darurat agar dapat merespons dan menangani dengan cepat saat terjadi insiden keamanan.
Dengan mengambil langkah-langkah ini, pengembang proyek dapat secara signifikan mengurangi risiko terkena serangan serupa dan meningkatkan keamanan keseluruhan kontrak.
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.
9 Suka
Hadiah
9
5
Posting ulang
Bagikan
Komentar
0/400
WhaleWatcher
· 08-11 16:40
Sekali lagi ada yang masuk sebagai suckers.
Lihat AsliBalas0
Lonely_Validator
· 08-10 08:22
Blockchain keamanan sekarang begitu buruk? Tidak bisa berkata-kata.
Lihat AsliBalas0
StakeWhisperer
· 08-10 08:10
又一个 jebakan koin
Lihat AsliBalas0
GweiWatcher
· 08-10 07:58
Apakah lagi-lagi diluncurkan tanpa memeriksa kontrak?
Euler Finance遭flash loan attack 近2亿美元损失
Proyek Euler Finance mengalami serangan pinjaman flash, dengan kerugian hampir 200 juta USD
Pada 13 Maret 2023, proyek Euler Finance mengalami serangan flash loan akibat kerentanan kontrak, dengan kerugian mencapai 197 juta dolar AS. Penyerang memanfaatkan celah pada fungsi donateToReserves dalam kontrak proyek yang tidak memiliki pemeriksaan likuiditas, dan melalui beberapa operasi berhasil mendapatkan keuntungan besar.
Analisis Proses Serangan
Penyerang pertama-tama meminjam 30 juta DAI dari platform pinjaman tertentu melalui Pinjaman Flash, dan menerapkan dua kontrak: kontrak pinjaman dan kontrak likuidasi.
Penyerang mengunci 20 juta DAI yang dipinjam ke dalam kontrak Euler Protocol, mendapatkan 195.000 eDAI.
Dengan memanfaatkan fitur leverage 10x dari Euler Protocol, penyerang meminjam 1.956.000 eDAI dan 2.000.000 dDAI.
Penyerang menggunakan sisa 10 juta DAI untuk melunasi sebagian utang, menghancurkan dDAI yang sesuai, dan kemudian meminjam kembali jumlah eDAI dan dDAI yang sama.
Langkah Kunci: Penyerang memanggil fungsi donateToReserves, menyumbangkan 1 juta eDAI, kemudian melakukan likuidasi melalui fungsi liquidate, memperoleh 3,1 juta dDAI dan 2,5 juta eDAI.
Terakhir, penyerang menarik 389.000 DAI, mengembalikan 300.000 DAI dari Pinjaman Flash, dan akhirnya mendapatkan keuntungan 88.700 DAI.
Penyebab Kerentanan
Kerentanan inti dari serangan ini terletak pada fungsi donateToReserves dalam kontrak Euler Finance yang tidak memiliki pemeriksaan likuiditas yang diperlukan. Berbeda dengan fungsi penting lainnya seperti mint, fungsi donateToReserves tidak melakukan operasi checkLiquidity. Hal ini memungkinkan penyerang untuk menghindari pemeriksaan likuiditas normal, menciptakan keadaan yang dapat dilikuidasi secara buatan, dan kemudian menyelesaikan likuidasi untuk mendapatkan keuntungan.
Dalam keadaan normal, fungsi checkLiquidity akan memanggil modul RiskManager untuk memastikan jumlah Etoken pengguna lebih besar dari jumlah Dtoken, demi menjaga keamanan kontrak. Namun, karena fungsi donateToReserves tidak memiliki langkah kunci ini, penyerang dapat memanfaatkan celah ini untuk melakukan serangan.
Saran Keamanan
Untuk serangan semacam ini, kami menyarankan kepada pihak proyek blockchain:
Melakukan audit keamanan menyeluruh sebelum kontrak diluncurkan, untuk memastikan keamanan kontrak.
Untuk proyek pinjaman, perlu memperhatikan secara khusus tahap kunci seperti pengembalian dana, pemeriksaan likuiditas, dan penyelesaian utang.
Pastikan semua fungsi yang mungkin memengaruhi status aset pengguna mencakup pemeriksaan keamanan yang diperlukan, seperti pemeriksaan likuiditas.
Secara berkala melakukan audit dan pembaruan kode, serta segera memperbaiki kerentanan yang ditemukan.
Membangun mekanisme respons darurat agar dapat merespons dan menangani dengan cepat saat terjadi insiden keamanan.
Dengan mengambil langkah-langkah ini, pengembang proyek dapat secara signifikan mengurangi risiko terkena serangan serupa dan meningkatkan keamanan keseluruhan kontrak.