Yearn.finance新專案Eminence攻擊事件漏洞分析

買賣虛擬貨幣
北京時間9月29日,CertiK安全研究團隊發現Yearn.finance的新專案Eminence.finance出現異常交易。有三筆共計價值約1.09億人民幣的資金,被從Eminence智慧合約中轉出,地址為:0x5ade7ae8660293f2ebfcefaba91d141d72d221e8。CertiK安全研究團隊認為該事件是攻擊者使用指令碼程式,透過閃電貸flashloan借得初始資金,利用Eminence專案中的聯合曲線(Bonding Curve)模型,反覆購買出售EMN和eAAVE來獲得收益。技術細節分析以下分析以:

https://etherscan.io/tx/0x3503253131644dd9f52802d071de74e456570374d586ddd640159cf6fb9b8ad8為例子,該筆交易流程圖如下:

在該筆交易中,攻擊者首先透過Uniswap中的閃電貸(Flash Loan)服務借得1500萬個DAI, 然後全部購買EMN代幣,共購得約1,383,650,487個EMN代幣。

其中一半EMN,共約691,825,243個EMN代幣, 透過OP0步驟用於購買eAAVE代幣,共獲得約572,431個eAAVE代幣。

到當前為止,攻擊者共持有1,383,650,487-691,825,243 = 691,825,244個EMN和572,431個eAAVE代幣。 

接下來攻擊者的指令碼繼續執行了OP0, OP1, OP2, OP3, OP4共5個內部交易(Internal Transactions),該5個內部交易產生的影響如下表:

從OP4售出的DAI總數目為16,673,637,比攻擊者透過閃電貸借得的DAI總數目1500萬個要多出近170萬。造成以上結果的原因是:在OP0使用EMN購買eAAVE的過程中,EminenceCurrency.sol 智慧合約第231行中claim函式被呼叫,隨後第233行的_burn函式將用於交易的691,825,243個EMN進行了燃燒:

然而在下圖_burn函式的定義中我們可以看到,僅僅只有EMN代幣的數目被燃燒掉,而其對應的DAI數目並沒有改變。這就造成了一個問題:EMN和DAI的比率由於EMN數目的減少,造成了DAI相對價格的降低,因此採用同樣數目的EMN去購買DAI,可以獲得的DAI數目更多。

因此,當OP0完成後,EMN數目對DAI數目比率下降。攻擊者透過OP1將剩餘的一般EMN兌換成DAI,由於此時DAI相對價格低,因此購入的DAI數目相比正常情況多。

完成OP1後,攻擊者將持有的eAAVE透過OP2,OP3兌換回EMN,然後兌換到DAI。最終,當進行OP4之前,攻擊者持有的DAI數目會高於從Uniswap中借得的數目。

至此,攻擊者透過漏洞完成一次獲利。

攻擊者在同一次交易中重複三次利用了該漏洞。每次到達OP4時,會將獲利後總共的DAI再次利用,進行攻擊行為。當完成全部三次後,攻擊者償還了Uniswap的借款,將該次交易獲利傳送至其地址:0x223034edbe95823c1160c16f26e3000315171ca9

攻擊者總計執行了3次交易,交易地址如下:

第一次:
0x3503253131644dd9f52802d071de74e456570374d586ddd640159cf6fb9b8ad8

第二次:
0x045b60411af18114f1986957a41296ba2a97ccff75a9b38af818800ea9da0b2a

第三次:
0x4f0f495dbcb58b452f268b9149a418524e43b13b55e780673c10b3b755340317

分析總結

該事件是一個典型的由於邏輯設計與實際智慧合約程式碼實現不符而造成安全漏洞的案例。而且專案上線前,尚未經過安全審計。對於該種型別漏洞,傳統的測試方法與測試工具均無法檢查出該種邏輯漏洞。

因此,CertiK安全研究團隊提出以下建議:

當前DeFi專案熱潮持續不減,很多專案為了抓住熱點與機遇,在未經嚴格測試和審計的情況下便匆忙上線。這些專案中,大部分的漏洞是無法透過常見的測試方法和工具來發現的。只有尋找專業的審計專家進行嚴謹的數學模型證明,才可以發現該漏洞。

安全審計現在已經是高質量DeFi專案的標配。若專案沒有被審計,對於使用者來說,投資行為則要格外慎重;對於專案方來說,則需要找專業並且聲譽好的審計公司進行審計。若專案被審計過,則需儘量瞭解審計公司背景以及其審計報告中的各項指標,其中包括但不限於:

· 安全審計的範圍,方法,及結論
· 合約是否有漏洞或者安全隱患?如果有,需要了解這些問題的嚴重程度及可能影響
· 合約整體的程式碼質量
· 審計公司的專業性和獨立性

CertiK是採用形式化驗證工具來證明智慧合約可靠性的業內頂尖公司。公司內部審計專家將利用包括形式化驗證在內的多種軟體測試方法,結合一流的白帽駭客團隊提供專業滲透測試,從而確保專案從前端到智慧合約整體的安全性。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;