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. 項目上线前,需要通過專業的第三方審計團隊進行智能合約審計。
SharkTeam的愿景是保護Web3世界的安全。團隊由來自世界各地的經驗豐富的安全專業人士和高級研究人員組成,精通區塊鏈和智能合約底層理論。提供包括鏈上大數據分析、鏈上風險預警、KYT/AML、智能合約審計、加密資產追討等服務,並打造了鏈上智能風險識別平台ChainAegis,平台支持無限層級的深度圖分析,能有效對抗Web3世界的高級持續性威脅(Advanced Persistent Threat,APT)。已與Web3生態各領域的關鍵參與者,如Polkadot、Moonbeam、polygon、Sui、OKX、imToken、Collab.Land等建立長期合作關系。
官網:https://www.sharkteam.org
Twitter:https://twitter.com/sharkteamorg
Discord:https://discord.gg/jGH9xXCjDZ
Telegram:https://t.me/sharkteamorg
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
標題:SharkTeam:MIM_SPELL被攻擊事件原理分析
地址:https://www.torrentbusiness.com/article/89464.html
標籤: