Euler Finans Olayı Otopsi

Mar 15 2023
Bu makale, 13 Mart 08:50 UTC civarında meydana gelen Euler Finance olayını tarafsız bir şekilde analiz etmek ve temel nedeni belirlemek içindir. Güvenlik Açığı Analizi Yararlanılan güvenlik açığı, Euler Finance'in bağışların uygun bir hesap sağlık kontrolü yapılmadan gerçekleştirilmesine nasıl izin verdiğinden kaynaklanmaktadır.
omniscia.io

Bu makale, 13 Mart 08:50 UTC civarında meydana gelen Euler Finance olayını tarafsız bir şekilde analiz etmek ve temel nedeni belirlemek içindir.

Güvenlik Açığı Analizi

İstismar edilen güvenlik açığı, Euler Finance'in bağışların uygun bir hesap sağlık kontrolü yapılmadan gerçekleştirilmesine nasıl izin verdiğinden kaynaklanmaktadır.

Güvenlik açığı bulunan kod , Euler Ekosistemi boyunca birden çok değişiklik getiren eIP-14 ¹'de tanıtıldı . Kusur, uygulamada gerçekleştirilen ilk değişiklikte yatmaktadır EToken( EToken::donateToReservesözellik ²).

Modül içindeki mantık, Liquidationihlal edenin tüm borcunu geri ödemeye çalışacaktır, ancak sahip oldukları teminat beklenen geri ödeme getirisini karşılamıyorsa, sistem kullanıcının sahip olduğu teminatı ³ olarak kabul eder.

Bu kod bloğunun varsayımı, bir borçlunun mevcut teminatının yalnızca aşağıdaki durumlarda yetersiz olacağını belirtir:

Bu durum, borçlunun birden fazla teminatı olduğu ve bunların tümüne el konulması, ihlal edeni ödeme gücüne geri getirmediği zaman gerçekleşebilir.

ETokenBu güvenlik garantisi, kullanıcının bakiyelerini⁴ etkilemeden birimlerini bağışlayarak teminatlandırılmayan kaldıraç şeklinde “kötü borç” oluşturmasına izin veren bağış mekanizması tarafından desteklenmez DToken.

Çekirdek Problem

Euler Finance protokolü, kullanıcılarının aynı işlemde varlıkları basıp yatırarak yapay kaldıraç oluşturmasına izin verir EToken::mint. Bu mekanizma, Euler Finance protokolünün kendisi tarafından tutulan teminatı aşan belirteçlerin basılmasına izin verir.

Euler Finance tarafından eIP-14 ¹ ( ) ile tanıtılan bağış mekanizması, EToken::donateToReservesbir kullanıcının bakiyesini reserveBalanceişlem yaptıkları jetona bağışlamasına izin verir. Buradaki kusur, bağışı yapan hesapta herhangi bir sağlık kontrolü yapmamasıdır.

Bağış, kullanıcının DTokenözkaynak ( ) bakiyesi azalırken borcunun ( ) değişmemesine neden olacağından EToken, hesabının tasfiyesi, DTokenbirimlerin bir kısmının kullanıcıda kalmasına ve dolayısıyla şüpheli alacak oluşmasına neden olacaktır.

Yukarıdaki kusur, saldırganın aşırı kaldıraçlı bir pozisyon oluşturmasına ve yapay olarak "su altına" girmesine neden olarak aynı blokta kendisini tasfiye etmesine izin verir.

Kendi kendilerini tasfiye ettiklerinde , birimlerin önemli bir kısmının iskontolu olarak tahakkuk etmesine violatorneden olacak , “su üstünde” olacaklarını ve yalnızca alacakları teminatla eşleşen borca ​​​​yüklenebileceklerini garanti eden yüzdeye dayalı bir indirim uygulanır. .liquidatorEToken

Nihai sonuç, Euler Protokolünün sahip olduğu yüzdeye dayalı tasfiye teşvikleri ⁵ nedeniyle, violatorönemli miktarda "kötü borç" ( DToken) ve liquidatorborçlarının aşırı teminatlandırılması ( DToken> ) ile a'dır. İşlemin kendisinde kanıtlandığı gibi⁶, saldırının tasfiyesi sırasında maksimum %20 indirim uygulandı.EToken

Saldırı Senaryosu

Saldırganın kendini tasfiye edebilmesi için, güvenlik açığından yararlanmak üzere en az iki sözleşme dağıtması gerekiyordu. Yaklaşık 2023–02–01 06:29:18 UTC'de gönderilen saldırı işlemi ⁶, daha önceki bir işlemde⁷ dağıtılan bir sözleşmeyi başlatır.

Bu sözleşme, saldırı işleminin yürütülmesi sırasında aşağıdaki adımları gerçekleştirir:

A. Birincil Sözleşme:

  • AAVE V2'den 30 milyon DAI flaş kredisi alın
  • Saldırı için iki sözleşmeyi ( violator⁸& ) devreye alınliquidator⁹
  • 30 milyon DAI kredi bakiyesinin tamamını şuraya aktarın:violator
  • ETokenEuler Finance DAI'sine 20 milyon DAI yatırın ve ~19,56 milyon eDAItoken alın
  • eDAI~195,68m eDAIve 200m dDAIbasan 200m yapay kaldıraç oluşturunviolator
  • violatorkonumunda 10 dakika DAI ödeyerek dDAIbakiyelerinin 190 metreye çıkmasına neden olun
  • eDAI~195,68m eDAIve 200m dDAIdarp ederek başka bir 200m yapay kaldıraç oluşturunviolator
  • eDAIRezervine 100m bağış yapınEToken
  • eDAI: ~310,93m
  • dDAI: 390m

Daha önce de belirtildiği gibi modül, kullanıcının teminat bakiyesine kadarLiquidation tasfiye edilecektir . Böylece , ~310,93m bakiyesinin tamamını , ancak bakiyesinin yalnızca bir kısmını alarak , Euler Finance⁵ tasfiye indirimi ile daha da kötüleşen .liquidatorviolatoreDAIdDAI

Sağlık seviyesinin ne kadar düşük olması nedeniyle bu pozisyona maksimum indirim uygulanacağından, token başına dönüşüm oranıyla liquidator~310,93 milyon bakiyeye tabi olacaktır . Bu sonuçta ~259,31 milyon sonrası ücret bakiyesi olarak değerlendirilecektir .eDAI1.25 eDAIdDAIdDAI

liquidatorSözleşme:

  • eDAI~310,93 milyon token ve ~259,31 milyon dDAItoken alarak pozisyonu tasfiye edin
  • İlgili belirteçleri DAIyakarak tüm belirteç rezervini geri çekineDAI

eDAIBu nedenle, itfa için kabaca başına 0,97'lik bir döviz kuru DAIkullanılır. Kullanıcı, tasfiye sırasında uygulanan maksimum %20 tasfiye indirimi nedeniyle zaten "su üstünde" olduğundan, sözleşme tarafından tutulan eDAI~38,9m'yi serbest bırakmak için gereken ~38m'yi "yakabilir".DAI

Sonuç olarak, saldırgan, işlemlerinin yürütülmesinden sonra aşağıdaki varlıkları elinde tutmayı başardı:

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

Varlığın mali etkisini değerlendirebilir ve kabaca 2023-03-13 12:42:00 UTC itibarıyla DAItahmini karı hesaplayabiliriz .~8,779,854.423 USD

Saldırı, diğer birçok varlığa kopyalandı. Bu nedenle, para yatırma uyarısı aşağıdaki ETokenvarlıklar için geçerlidir : DAI,WETH

Güvenlik Denetimi

Omniscia, Euler Finance protokolünün birden çok güvenlik denetimini gerçekleştirdi. Ancak söz konusu değişiklikler eIP-14'te tanıtıldı . Mesaj panosunun kendisinde kanıtlandığı gibi, Omniscia yalnızca burada halka açık olan Chainlink entegrasyon bileşeninin denetimini gerçekleştirdi .

EToken::donateToReserveBu güvenlik açığının temelinde yer alan özellik, Omniscia tarafından gerçekleştirilen herhangi bir denetim kapsamında değildi . Bu nedenle, güvenlik açığına neden olan kod, ekibimiz tarafından gerçekleştirilen herhangi bir denetim kapsamında olmamıştır.

donateToReserves işlevi, Temmuz 2022'de Sherlock ekibi tarafından denetlendi . Euler Finance ve Sherlock, istismar anında Euler'in Sherlock ile aktif bir kapsama politikası olduğunu doğruladı.

Çözüm

Saldırı, nihayetinde yanlış bir bağış mekanizmasından kaynaklandı ve bağışçının borç sağlığını hesaba katmadı, bu da onların DTokenasla tasfiye edilmeyecek, karşılıksız bir borç yaratmalarına izin verdi.

kaynaklar

  1. Euler İyileştirme Önerisi 14:https://forum.euler.finance/t/eip-14-contract-upgrades/305
  2. Euler İyileştirme Önerisi 14 Delta:https://euler-xyz.github.io/euler-contracts-upgrade-diffs/eip14/EToken.html
  3. Euler LiquidatorTeminatı Varsayılan Mantığı:https://github.com/euler-xyz/euler-contracts/blob/fa9398728165676a5666939d8c34a7578d8e1919/contracts/modules/Liquidation.sol#L139-L151
  4. Euler ETokenHatalı Bağış Mekanizması:https://github.com/euler-xyz/euler-contracts/blob/fa9398728165676a5666939d8c34a7578d8e1919/contracts/modules/EToken.sol#L356-L386
  5. Euler Tasfiye İndirimi:https://docs.euler.finance/euler-protocol/eulers-default-parameters#maximum-liquidation-discount
  6. Etherscan Saldırısı İşlem Bağlantısı:https://etherscan.io/tx/0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d
  7. Birincil Sözleşmenin Etherscan Adresi:https://etherscan.io/address/0xebc29199c817dc47ba12e3f86102564d640cbf99
  8. İhlal Eden Sözleşmenin Etherscan Adresi:https://etherscan.io/address/0x583c21631c48d442b5c0e605d624f54a0b366c72
  9. Tasfiye Sözleşmesinin Etherscan Adresi:https://etherscan.io/address/0xa0b3ee897f233f385e5d61086c32685257d4f12b
  10. Euler BaseLogicDöviz Kuru Hesaplaması:https://github.com/euler-xyz/euler-contracts/blob/fa9398728165676a5666939d8c34a7578d8e1919/contracts/BaseLogic.sol#L292-L296

2021'in başında blockchain siber güvenlik uzmanları tarafından kurulan omniscia.io , akıllı sözleşmeleri ve karmaşık merkezi olmayan protokolleri güvence altına almak için yılların deneyimini kullanan, tescilli araçlar ve denenmiş ve test edilmiş bir yaklaşım geliştiren Web3 güvenliğinde bir öncüdür. Aave, YFI, Lien, 1inch, Fetch, Compound, Synthetix ve diğerlerini sever.

Müşterilerimiz, ortaklarımız ve destekçilerimiz arasında L'Oréal, Polygon, AvaLabs, Morpho, Euler, CLabs, Olympus DAO, Fetch.ai, LimitBreak ve çok daha fazlası gibi önde gelen ekosistem oyuncuları yer alır.

Sosyal medyalarımızı takip ettiğinizden ve daha fazla güncelleme için bültenimize abone olduğunuzdan emin olun:

Twitter / LinkedIn / Bülten