Post-Mortem Insiden Keuangan Euler

Mar 15 2023
Artikel ini dimaksudkan untuk menganalisis insiden Euler Finance yang terjadi pada tanggal 13 Maret sekitar pukul 08:50 UTC secara tidak memihak dan mengidentifikasi akar penyebabnya. Analisis Kerentanan Kerentanan yang dieksploitasi berasal dari bagaimana Euler Finance mengizinkan donasi dilakukan tanpa pemeriksaan kesehatan akun yang tepat.
omniscia.io

Artikel ini dimaksudkan untuk menganalisis insiden Euler Finance yang terjadi pada tanggal 13 Maret sekitar pukul 08:50 UTC secara tidak memihak dan mengidentifikasi akar penyebabnya.

Analisis Kerentanan

Kerentanan yang dieksploitasi berasal dari bagaimana Euler Finance mengizinkan donasi dilakukan tanpa pemeriksaan kesehatan akun yang tepat.

Kode rentan diperkenalkan di eIP-14 ¹ yang memperkenalkan banyak perubahan di seluruh Ekosistem Euler. Kelemahannya terletak pada perubahan pertama yang dilakukan terhadap ETokenimplementasi ( EToken::donateToReservesfitur ²).

Logika di dalam Liquidationmodul akan mencoba untuk membayar kembali seluruh utang pelanggar, namun, jika agunan yang mereka miliki tidak akan memenuhi hasil pembayaran yang diharapkan, sistem default ke agunan apa pun yang dimiliki pengguna ³.

Asumsi blok kode ini menyatakan bahwa agunan yang tersedia milik peminjam tidak akan mencukupi hanya jika:

Hal ini dapat terjadi ketika peminjam memiliki banyak agunan dan menyita semua ini tidak akan membawa pelanggar kembali ke solvabilitas

Jaminan keamanan ini tidak didukung oleh mekanisme donasi yang memungkinkan pengguna untuk membuat "piutang buruk" dalam bentuk leverage yang tidak dijamin dengan menyumbangkan unitnya ETokentanpa mempengaruhi saldonya⁴ DToken.

Masalah Inti

Protokol Euler Finance mengizinkan penggunanya untuk membuat leverage buatan dengan mencetak dan menyimpan aset dalam transaksi yang sama melalui EToken::mint. Mekanisme ini memungkinkan pembuatan token yang melebihi agunan yang dimiliki oleh protokol Euler Finance itu sendiri.

Mekanisme donasi yang diperkenalkan oleh Euler Finance di eIP-14 ¹ ( EToken::donateToReserves) memungkinkan pengguna untuk menyumbangkan saldo mereka ke reserveBalancetoken yang mereka gunakan untuk bertransaksi. Cacatnya terletak pada tidak melakukan pemeriksaan kesehatan pada akun yang melakukan donasi.

Karena donasi akan menyebabkan utang pengguna ( DToken) tetap tidak berubah sementara ETokensaldo ekuitas ( ) mereka menurun, likuidasi akun mereka akan menyebabkan sebagian DTokenunit tetap berada di pengguna sehingga menimbulkan utang macet.

Cacat di atas memungkinkan penyerang untuk membuat posisi leverage berlebih dan melikuidasinya sendiri di blok yang sama dengan secara artifisial menyebabkannya "di bawah air".

Ketika violatormelikuidasi diri mereka sendiri, diskon berbasis persentase diterapkan yang akan menyebabkan liquidatorsebagian besar ETokenunit didiskon, menjamin bahwa mereka akan "di atas air" dan hanya menanggung hutang yang sesuai dengan agunan yang akan mereka peroleh. .

Hasil akhirnya adalah violatordengan jumlah “bad debt” ( DToken) yang signifikan dan a liquidatordengan jaminan berlebihan atas utangnya ( DToken> EToken) karena insentif likuidasi berbasis persentase yang dimiliki Protokol Euler ⁵. Sebagaimana dibuktikan dalam transaksi itu sendiri⁶, diskon maksimum 20% diterapkan selama likuidasi serangan.

Skenario Serangan

Agar penyerang dapat melikuidasi dirinya sendiri, mereka harus menggunakan setidaknya dua kontrak untuk mengeksploitasi kerentanan. Transaksi serangan ⁶ dikirim sekitar 2023–02–01 06:29:18 UTC meminta kontrak yang telah diterapkan dalam transaksi sebelumnya⁷.

Kontrak ini melakukan langkah-langkah berikut selama eksekusi transaksi serangan:

A. Kontrak Utama:

  • Dapatkan pinjaman kilat DAI 30 juta dari AAVE V2
  • Terapkan dua kontrak ( violator⁸& liquidator⁹) untuk serangan itu
  • Transfer saldo pinjaman DAI 30 juta penuh keviolator
  • Setor 20 juta DAI ke DAI ETokenEuler Finance, menerima ~19,56 juta eDAItoken
  • Buat eDAIpengungkit buatan 200m, cetak ~195,68m eDAIdan 200m dDAIkeviolator
  • Bayar 10m DAI pada violatorposisi, menyebabkan dDAIsaldo mereka menjadi 190m
  • Buat eDAIpengungkit buatan 200m lagi, cetak ~195,68m eDAIdan 200m dDAIkeviolator
  • Donasi 100m eDAIke cadanganEToken
  • eDAI: ~310,93m
  • dDAI: 390m

Seperti yang dinyatakan sebelumnya, Liquidationmodul akan dilikuidasi hingga saldo agunan pengguna. Dengan demikian, mereka liquidatordapat melikuidasi violator, yang menimbulkan eDAIsaldo ~310,93 juta penuh mereka tetapi hanya sebagian dari dDAIsaldo mereka, yang selanjutnya diperburuk oleh diskon likuidasi Euler Finance⁵.

Karena diskon maksimum akan diterapkan pada posisi ini karena tingkat kesehatannya yang rendah, akan liquidatordikenakan eDAIsaldo ~310,93 juta dengan tingkat konversi 1.25 eDAItoken per dDAI. Ini pada akhirnya akan dievaluasi menjadi dDAIsaldo pasca-biaya ~259,31 juta.

liquidatorKontrak:

  • Likuidasi posisi, dapatkan ~310,93 juta eDAItoken dan ~259,31 juta dDAItoken
  • Tarik cadangan penuh DAItoken dengan membakar eDAItoken yang sesuai

Dengan demikian, nilai tukar sekitar 0,97 eDAIper DAIdigunakan untuk penebusan. Karena pengguna sudah "di atas air" karena diskon likuidasi maksimum 20% yang diterapkan selama likuidasi mereka, mereka dapat "membakar" ~38 juta yang diperlukan eDAIuntuk melepaskan ~38,9 juta DAIyang dipegang oleh kontrak.

Pada akhirnya, penyerang dapat mempertahankan aset berikut pasca eksekusi transaksi mereka:

  • +~8,877,507 DAI=~8,779,854.423 USD

Kami dapat menilai dampak finansial dari DAIaset dan menghitung estimasi laba kira-kira ~8,779,854.423 USDpada 13-03-2023 12:42:00 UTC.

Serangan itu telah direplikasi ke beberapa aset lainnya. Dengan demikian, peringatan setoran berlaku untuk ETokenaset berikut : DAI,WETH

Audit Keamanan

Omniscia telah melakukan beberapa audit keamanan terhadap protokol Euler Finance. Namun, perubahan tersebut diperkenalkan di eIP-14 . Sebagaimana dibuktikan di papan pesan itu sendiri, Omniscia hanya melakukan audit terhadap komponen integrasi Chainlink yang tersedia untuk umum di sini .

Fitur EToken::donateToReserveyang menjadi inti dari kerentanan ini tidak termasuk dalam cakupan audit apa pun yang dilakukan oleh Omniscia. Dengan demikian, kode yang menyebabkan kerentanan tidak pernah tercakup dalam audit apa pun yang dilakukan oleh tim kami.

Fungsi donateToReserves diaudit oleh tim Sherlock pada Juli 2022. Euler Finance dan Sherlock telah mengonfirmasi bahwa Euler memiliki kebijakan cakupan aktif dengan Sherlock pada saat eksploitasi.

Kesimpulan

Serangan tersebut pada akhirnya muncul dari mekanisme donasi yang salah dan tidak memperhitungkan kesehatan utang donatur, memungkinkan mereka membuat utang yang tidak dapat dikembalikan DTokenyang tidak akan pernah dilikuidasi.

Sumber

  1. Proposal Perbaikan Euler 14:https://forum.euler.finance/t/eip-14-contract-upgrades/305
  2. Proposal Peningkatan Euler 14 Delta:https://euler-xyz.github.io/euler-contracts-upgrade-diffs/eip14/EToken.html
  3. LiquidatorLogika Default Agunan Euler :https://github.com/euler-xyz/euler-contracts/blob/fa9398728165676a5666939d8c34a7578d8e1919/contracts/modules/Liquidation.sol#L139-L151
  4. ETokenMekanisme Donasi Euler yang Rusak:https://github.com/euler-xyz/euler-contracts/blob/fa9398728165676a5666939d8c34a7578d8e1919/contracts/modules/EToken.sol#L356-L386
  5. Diskon Likuidasi Euler:https://docs.euler.finance/euler-protocol/eulers-default-parameters#maximum-liquidation-discount
  6. Tautan Transaksi Serangan Etherscan:https://etherscan.io/tx/0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d
  7. Alamat Etherscan dari Kontrak Utama:https://etherscan.io/address/0xebc29199c817dc47ba12e3f86102564d640cbf99
  8. Alamat Etherscan dari Kontrak Pelanggar:https://etherscan.io/address/0x583c21631c48d442b5c0e605d624f54a0b366c72
  9. Alamat Etherscan dari Kontrak Likuidator:https://etherscan.io/address/0xa0b3ee897f233f385e5d61086c32685257d4f12b
  10. BaseLogicPerhitungan Nilai Tukar Euler :https://github.com/euler-xyz/euler-contracts/blob/fa9398728165676a5666939d8c34a7578d8e1919/contracts/BaseLogic.sol#L292-L296

Didirikan pada awal tahun 2021 oleh veteran keamanan siber blockchain, omniscia.io adalah pelopor dalam keamanan Web3, memanfaatkan pengalaman bertahun-tahun, mengembangkan alat berpemilik dan pendekatan yang telah dicoba dan diuji untuk mengamankan kontrak cerdas dan protokol terdesentralisasi yang rumit di luar sana — termasuk suka Aave, YFI, lien, 1inch, fetch, compound, synthetix, dan banyak lainnya.

Klien, mitra, dan pendukung kami meliputi pemain ekosistem terkemuka seperti L'Oréal, Polygon, AvaLabs, Morpho, Euler, CLabs, Olympus DAO, Fetch.ai, LimitBreak, dan banyak lagi.

Pastikan untuk mengikuti media sosial kami dan berlangganan buletin kami untuk pembaruan lebih lanjut:

Twitter / LinkedIn / Buletin