SharkTeam:MIM_SPELL被攻擊事件原理分析

2024-02-01 11:49 SharkTeam


免責聲明: 內容不構成买賣依據,投資有風險,入市需謹慎!

SharkTeam:MIM_SPELL被攻擊事件原理分析

SharkTeam 項目認證 剛剛 關注

來源:SharkTeam

2024年1月30日,MIM_SPELL遭受閃電貸攻擊,因爲精度計算漏洞,項目方損失650萬美元。

SharkTeam對此事件第一時間進行了技術分析,並總結了安全防範手段,希望後續項目可以引以爲戒,共築區塊鏈行業的安全防线。

一、攻擊交易分析

攻擊者地址:

0x87F585809Ce79aE39A5fa0C7C96d0d159eb678C9

攻擊合約:

0xe1091d17473b049cccd65c54f71677da85b77a45

0x13AF445F81B0DEcA5dCb2Be6A4C691F545c95912

0xe59b54a9e37ab69f6e9312a9b3f72539ee184e5a

被攻擊合約:

0x7259e152103756e1616A77Ae982353c3751A6a90

攻擊交易:

0x26a83db7e28838dd9fee6fb7314ae58dcc6aee9a20bf224c386ff5e80f7e4cf2

0xdb4616b89ad82062787a4e924d520639791302476484b9a6eca5126f79b6d877

攻擊流程:

1. 攻擊者(0x87F58580)通過閃電貸借取300000枚MIM代幣。

2. 隨後向被攻擊合約(0x7259e1520)發送了240000枚的MIM代幣,用於下一步償還用戶的借款。

3. 攻擊者(0x87F58580)隨後調用repayForAll函數償還其他用戶的借款,後續又依次調用repay函數償還其他用戶借款,目的是將elastic變量減小爲0.

4. elastic變量減小爲0後,攻擊者(0x87F58580)創建新的攻擊合約(0xe59b54a9)並不斷的進行borrow和repay函數的調用,直到將elastic =0,base = 120080183810681886665215049728時結束。

5. 隨後攻擊者(0x87F58580)調用borrow函數和DegenBox合約的withdraw函數借出了5000047枚MIM代幣。

6. 攻擊者(0x87F58580)歸還閃電貸函數,並將4400000枚MIM代幣兌換爲1807枚ETH,本交易獲利約450W。

二、漏洞分析

攻擊的本質是在進行借貸變量計算時精度出現了問題,使得關鍵變量elastic和base值被操縱後比例失衡,導致計算抵押物和借貸數量時出現問題,最終超額借出MIM代幣。

被攻擊合約(0x7259e1520)中borrow函數和repay函數在對elastic和base兩個變量進行計算時,都採用了向上取整的方式。

攻擊者(0x87F58580)首先通過償還其他用戶借款的方式,將elastic變量和base變量分別設置爲了0和97。

隨後不斷的調用borrow函數和repay函數並且參數amount都爲1,在第一次調用borrow函數時,由於elastic=0,會執行上述if邏輯並回到add函數中。這樣會導致elastic = 1,base = 98。

攻擊者(0x87F58580)再調用borrow函數並傳入1,由於elastic=1,會執行else邏輯,計算出的返回值爲98,這樣在回到add函數中時,elastic=2,base變量爲196.

但此時攻擊者(0x87F58580)調用repay函數並傳入1,由於elastic=2,會執行else邏輯,計算出的elastic變量本來爲 1*2/98 =0,但由於下面存在向上取整的步驟,導致計算出的返回值1,這樣在回到sub函數中時,elastic變量又變回1,而base變量爲195。

可以看到在經歷一次borrow-repay循環後,elastic變量不變而base變量近乎翻倍,利用這一漏洞,黑客頻繁進行borrow-repay函數循環,最後再調用一次repay,最終使得elastic=0 base = 120080183810681886665215049728。

當elastic和Base變量之間的比例嚴重失衡後,攻擊者(0x87F58580)添加了一點抵押物後即可通過solvent修飾符中的限制條件,從而借出大量MIM代幣。

三、安全建議

針對本次攻擊事件,我們在开發過程中應遵循以下注意事項:

1. 开發精度計算相關邏輯時,慎重考慮精度和取整情況。

2. 項目上线前,需要通過專業的第三方審計團隊進行智能合約審計。

1 好文章,需要你的鼓勵
了解更多區塊鏈一线報道,與作者、讀者更深入探討、交流,歡迎添加小助手QQ: 3150128700, 進入[金色財經讀者交流群]。
聲明:本文由入駐金色財經的作者撰寫,觀點僅代表作者本人,絕不代表金色財經贊同其觀點或證實其描述。
本文作者: SharkTeam
打开金色財經App 閱讀全文 打开金色財經,閱讀體驗更佳 金色財經 > SharkTeam > SharkTeam:MIM_SPELL被攻擊事件原理分析 免責聲明: 金色財經作爲开放的資訊分享平台,所提供的所有資訊僅代表作者個人觀點,與金色財經平台立場無關,且不構成任何投資理財建議。

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

標題:SharkTeam:MIM_SPELL被攻擊事件原理分析

地址:https://www.sgitmedia.com/article/22583.html

相關閱讀: