By:小白@慢霧安全團隊

2022 年3 月21 日,據慢霧區消息,OneRing Finance 存在嚴重漏洞遭到攻擊,黑客獲利約1,454,672.244369 USDC(約146 萬美元),慢霧安全團隊第一時間介入分析,並將結果分享如下:

相關信息

OneRing Finance 是一個去中心化應用程序(DApp),它支持加密貨幣的質押挖礦。用戶可以存入代幣來獲取收益。

以下是本次攻擊涉及的相關地址:

攻擊者地址:

0x12efed3512ea7b76f79bcde4a387216c7bce905e

攻擊交易:https://ftmscan.com/tx/0xca8dd33850e29cf138c8382e17a19e77d7331b57c7a8451648788bbb26a70145

攻擊合約:

0x6a6d593ed7458b8213fa71f1adc4a9e5fd0b5a58

被攻擊合約:

OneRingVault:0xc06826f52f29b34c5d8b2c61abf844cebcf78abf

攻擊核心點

OneRing 直接使用了Pair 中的reserves 參與OShare 的價格計算,攻擊者利用OneRingVault 正常的業務邏輯進行巨額的Swap 操作產生的大滑點,使得Pair 中的reserves 非預期的增加,從而拉高了OShare 的價格,導致相同數量的OShare 可以取出更多的資金。

具體細節分析

1. 攻擊者構造了攻擊合約,利用閃電貸從Solidity 借出80000000 個USDC 到攻擊合約中

2. 接著通過swap 函數將1 個USDC 兌換成miMatic 代幣,這裡可以看到當前代幣兌換率是1:1.001109876698508218

3. 調用depositSafe 函數將79,999,997($80,079,997.00)個USDC 充值進合約

這裡depositSafe 函數會內部調用_deposit 函數,_deposit 函數會調用_doHardWorkAll 函數,在該函數中會使用for 循環將部分存入的USDC 全部兌換成其他的代幣

然後depositSafe 將約41,965,509.691846094312718922 個OShare 代幣mint 給攻擊者。此時我們可以看到OShare 的價格是1062758591235248117 這個值

從下面這張圖中可以看出在swap 後攻擊者使用兩個USDC 再次兌換miMATIC 代幣時此時的兌換率已經產生巨大變化:

4. 然後調用withdraw 函數。我們可以看到withdraw 函數也調用了getSharePrice 函數進行OShare 的價格計算

我們來看getSharePrice 函數:

這裡調用了balanceWithInvested 函數,繼續跟進發現調用了investedBalanceInUSD 函數:

這裡可以看到最終影響價格的是getUSDBalanceFromUnderlyingBalance 函數

在getUSDBalanceFromUnderlyingBalance 函數中我們可以看到,該函數使用合約中兩個代幣的數量_reserves0 和_reserves1 這兩個值進行計算,由於之前的swap 導致大量的USDC 留在池子中,所以導致池子中的USDC 數量變大,從而使_amount 變大,這就導致了getSharePrice 函數獲取到的當前OShare 的價格變大了

由下圖我們可以看到當前的OShare 的價格為1136563707735425848 這個值:

從下面的withdraw 函數中可以看出最終的提現數量是通過_withdraw 進行計算得出的

跟進去後發現_toWithdraw 也是由balanceWithInvested 計算得出的,這也就導致這個值變大

然後會在這一步將攻擊者持有的41965509 個OShare 兌換為81534750101089 個USDC

5. 攻擊者歸還閃電貸後獲利離場

MistTrack

據慢霧MistTrack 分析,攻擊者將獲利的部分USDC 換成FTM、ETH,最後將USDC、ETH 跨鏈到以太坊。同時,以太坊上黑客地址初始資金來自於Tornado.Cash 轉入的0.1 ETH,接著黑客將521 ETH 轉入Tornado.Cash。

截止目前,黑客以太坊地址仍有近4.5 萬美元,包括14.86 ETH 和100.29 USDC。慢霧MistTrack 將持續監控黑客地址。

總結

本次攻擊是由於在MasterChefBaseStrategy 合約中的getUSDBalanceFromUnderlyingBalance 函數實時儲備量進行計算導致攻擊者可以利用閃電貸製造巨大差值從而獲利。慢霧安全團隊建議在進行share 的價格計算時不要使用實時儲備量進行計算,避免再次出現此類事故。

往期回顧

往期回顧

鏈上追踪:洗幣手法科普之Tornado.Cash

故技重施—— Hundred Finance 被黑分析

大意失荊州—— Paraluni 被黑分析

“零元購” —— TreasureDAO NFT 交易市場漏洞分析

鏈上追踪:洗幣手法科普之Peel Chain

鏈上追踪:洗幣手法科普之Tornado.Cash故技重施—— Hundred Finance 被黑分析大意失荊州—— Paraluni 被黑分析“零元購” —— TreasureDAO NFT 交易市場漏洞分析鏈上追踪:洗幣手法科普之Peel Chain

慢霧導航

慢霧科技官網

https://www.slowmist.com/

慢霧區官網

https://slowmist.io/

慢霧GitHub

https://github.com/slowmist

Telegram

https://t.me/slowmistteam

Twitter

https://twitter.com/@slowmist_team

Medium

https://medium.com/@slowmist

知識星球

https://t.zsxq.com/Q3zNvvF