零時科技 || Zenterest 攻擊事件分析

背景介紹

近期,我們監控到一起針對 Ethereum 的鏈上攻擊事件,https://etherscan.io/tx/0xfe8bc757d87e97a5471378c90d390df47e1b29bb9fca918b94acd8ecfaadc598

被攻擊的項目爲 Mantra DAO 的 DeFi 項目 Zenterest

該項目是一個 Compound Fork 的項目,提供借貸等功能,不過該項目已經關閉。

攻擊及事件分析

首先,攻擊者利用 Uniswap V3 通過 flash ,借入了 85.0085 WHITE 

隨後,攻擊者將自己的2 000 MPH 轉給了Zenterest,並 mint 了 751,165,762,743 / 1e18zenMPH ,即 MPH Token 的 underlying Token (價值 21200 MPH )。

在 Compound 中, mintTokenAmount 爲 mintAmount 除以exchangeRate(爲underlying Token的價值) 

exchageRate 的計算方式爲

其中, totalCash 爲 2,130,237,755,166,997,669,234 ,

totalBorrows 爲377,279,871,321,643,951,514,656 ,

totalReserves 爲336,296,661,332,642,353,710,274 ,

totalSupply 爲 1,527,610,653,739 。

故 exchangeRate 爲 28,222,798,550.562313 。

所以, mintToken 爲 751,165,762,743 。

接着,攻擊者將從 Uniswap 中 flash 閃電貸獲得的 85 WHITE Token 轉給了 Zenterest。 

這裏,攻擊者是爲了操縱 zenWHITE 的 borrowRate ,否則導致 borrowRate 過高,導致攻擊失敗。

然後,攻擊者利用 cToken 的 borrow 借出 zenWHITE 的所有余額。

漏洞點就出現在 ZenterestPriceFeed 價格預言機上,

我們可以看到 ZenterestPriceFeed 的代碼如下:

其價格是通過 updatePrice 和 updatePriceBatch 來更新的。

我們可以看到,此價格預言機中的價格已經570天沒有更新,所有價格均已過期,我們找到最近一次更新 MPH Token 價格的交易如下:

最近的更新 MPH Token 價格的交易爲:https://etherscan.io/tx/0x8938ec223516e0f09d904ee6187032f2038f3f768d754eb19b4f19450e7d185d

其價格更新參數的數據結構爲:

所以,通過 Zenterest Price Oracle 獲取的 MPH Token 的價格爲 0x35b52f953f951 =944,836,858,607,953 ,而當前實際的價格爲 0.4677 USD 。

同時,我們可以看到獲取的 WHITE Token 的價格爲 66,570,137,662,599,764 ,而當前實際的價格爲 4200 USD 。

攻擊者投入 23200 MPH ,借貸 89.91 WHITE ,根據 Zenterest Price Oracle 獲取的價格計算,

所以,攻擊者可以借出 89.91 WHITE ,攻擊者歸還從 Uniswap 借到的 85 WHITE 和 0.0085 WHITE利息,最終獲利 4.9 WHITE ,價值 21000 USD 。 

總結

本次漏洞的成因是項目已經不再使用,但是 cToken 卻沒有暫停,且價格預言機的價格沒有更新,導致標的資產價格失真,攻擊者利用失真的價格來通過借貸進行獲利,最終導致攻擊者用極少的 MPH 掏空了項目方的 WHITE 代幣。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

相關文章