北京時間2022年4月2日19時,CertiK安全技術團隊監(jiān)測到Inverse Finance被惡意利用,導致價值約1450萬美元的資產受到損失。
該事件發(fā)生的根本原因在于外部價格預言機依賴導致價格被操縱,因此攻擊者可通過操縱價格來借用資產。
攻擊流程
在發(fā)起攻擊之前,攻擊者做了如下準備:
1. 首先,攻擊者部署了一個惡意合約。該合約地址為:0xea0c959bbb7476ddd6cd4204bdee82b790aa1562
2. 其次,攻擊者在SushiSwap/Curve.fi中進行調換,以操縱交易中的價格,該交易地址為:0x20a6dcff06a791a7f8be9f423053ce8caee3f9eecc31df32445fc98d4ccd8365
由于SushiSwap:INV(INV-ETH Pair)的流動性非常低,用300ETH(價值約一百多萬美元)換取INV將大幅增加INV價格。
隨后,攻擊者正式發(fā)起攻擊:
1. 攻擊者把在準備階段獲得的INV存入,并鑄造(mint)了1746枚XINV代幣。
2. XINV的價格計算:根據SushiSwap:INV對中的INV價格所計算。如上所述,INV的價格被操縱,因此每XINV的價值為20926美元。
3. 隨著XINV的價格被修改,攻擊者能夠用鑄造的XINV代幣借用到如下資產:1588枚ETH,94枚WBTC,3999669枚DOLA與39枚YFI。
合約漏洞分析
該漏洞主要原因是對價格預言機具有依賴性,并且這中間有30分鐘的窗口期。而攻擊在準備階段完成后正式發(fā)生,僅僅用了15秒。
在這種情況下,因為timeElapsed == 15,預言機合約Keep3rV2Oracle的函數_update()中"timeElapsed > periodSize"的檢查將被繞過。這意味著最后的累積價格還沒有被更新。由此可見,函數_computeAmountOut()中的amoutOut會比預期的數額大,因為priceCumulative已經被操縱了,但_observation.priceCumulative沒有被更新。
一方面,XINV的價格依賴于SushiSwap:INV 對(INV-ETH對)的儲備,其流動性非常低。
另一方面,TWAP可以防止閃電貸攻擊。理論上,攻擊者能夠通過 "犧牲 "一些錢來操縱價格,也就是說,用他自己的錢來改變價格。在這個特殊的價格預言機設計中,如果經過的時間沒有超過30分鐘,當前的價格(來自儲備金)不應該被用來計算出金金額。
資產追蹤
據CertiK SkyTrace顯示,價值約1450萬美元的資產被盜后已被轉移到Tornado Cash。
熱門
關于我們| 廣告報價| 本站動態(tài)| 聯(lián)系我們| 版權所有| 信息舉報|
聯(lián)系郵箱:905 144 107@qq.com
Copyright©2011-2020 m.09115.cn All Rights Reserved