#1 事件概覽
簡單來說,MonoX創建的是代幣-vCASH交易對,添加流動性時,只需要添加代幣,進行任意代幣兌換時,兌換路徑為:代幣A -> vCASH -> 代幣B,而不需要像Uniswap一樣經過多個交易對:代幣A -> Pair1-> Pair2-> Pair3-> Token B。
#2 事件具體分析
由於兩個平台代碼完全一致,下面的分析將基於以太坊上的攻擊交易進行。
Round 1
Round 2
漏洞1:
Round 3
Round 4
利用Monoswap合約中的代幣兌換價格覆寫漏洞,反覆進行同種代幣的兌換,拉升MONO的價格。
漏洞2:
(1) 在_getNewPrice函數計算應輸入輸出代幣數量時,未考慮到兌換過程中交易池代幣儲量的變更,同種代幣是基於相同的初始價格進行兌換後價格的計算。
(2)在最後一步更新代幣過程中,未考慮到同種代幣進行兌換時,兌出代幣的價格更新操作(圖6 第841行)會覆蓋兌入代幣更新的操作(圖6 第830行)。該漏洞導致MONO代幣兌換MONO代幣時,MONO的價格異常增長。此外不止攻擊者使用的swapExactTokenForToken函數存在該問題,swapTokenForExactToken函數也存在該問題。
幣種數量USDC4,029,106.880396 (兌換為847.2066974335073 WETH)USDT4,525,120.098829 (兌換為949.0325798508261 WETH)WETH452.9120530334938WBTC21.42797145DUCK5,155,863.718616853MIM4,125.858256772IMX274.9390440877583
#3 事件復盤
(1)任何地址都可以任意移除指定地址的流動性;(2)特殊情況下的價格寫入操作覆蓋問題。
冷萃財經原創,作者:awing,轉載請註明出處:https://www.lccjd.top/2021/12/02/%e4%b8%8d%e5%ae%89%e5%88%86%e7%9a%84%e9%bb%91%e5%ae%a2%e5%8f%88%e5%81%b7%e8%a2%ad%ef%bc%9fmonox%e8%a2%ab%e6%94%bb%e5%87%bb%e4%ba%8b%e4%bb%b6%e5%85%a8%e8%a7%a3%e6%9e%90/?variant=zh-tw
文章評論