11月30日,鏈必應-區塊鏈安全態勢感知平臺輿情監測顯示,自動做市商協議MonoX遭閃電貸攻擊,獲利約3100萬美元。關于本次攻擊,成都鏈安技術團隊第一時間進行了事件分析。#1事件概覽
攻擊發生之后,MonoX在官方推特確認其合約遭到攻擊,團隊正在調查并將盡最大努力追回被盜資金。
MonoX使用單邊代幣池模型,其使用vCASH穩定幣與AMM提供的代幣創建虛擬的交易對。簡單來說,MonoX創建的是代幣-vCASH交易對,添加流動性時,只需要添加代幣,進行任意代幣兌換時,兌換路徑為:代幣A->vCASH->代幣B,而不需要像Uniswap一樣經過多個交易對:代幣A->Pair1->Pair2->Pair3->TokenB。#2事件具體分析
攻擊者使用相同的地址0xEcbE385F78041895c311070F344b55BfAa953258對以太坊以及MATIC上的MonoX發起了攻擊,在兩個平臺進行攻擊所部署的合約一致。攻擊交易為:以太坊:0x9f14d093a2349de08f02fc0fb018dadb449351d0cdb7d0738ff69cc6fef5f299MATIC:0x5a03b9c03eedcb9ec6e70c6841eaa4976a732d050a6218969e39483bb3004d5d由于兩個平臺代碼完全一致,下面的分析將基于以太坊上的攻擊交易進行。Round1
多鏈DEX聚合器Rango已集成Terra自動做市商Astroport:1月30日消息,多鏈DEX聚合器Rango宣布已集成基于Terra的自動做市商(AMM)Astroport,從而增強Rango的智能路由系統。[2022/1/30 9:23:20]
將0.1WETH通過Monoswap中兌換為79.98609431154262101MONO;
圖1WETH兌換MONORound2
移除Monoswap所有的流動性。這里利用了Monoswap合約中的任意地址流動性移除漏洞。漏洞1:Monoswap合約中未檢測流動性的所有者to是否為msg.sender。_removeLiquidity函數中,如圖2所示,第443行,獲取調用者(攻擊合約)最后一次添加流動性的時間戳,返回結果是0,因此第445行的檢測通過。第446行,topLPHolderOf如果不是調用者(攻擊合約)地址,第447行的檢測通過。此后移除流動性相關代碼中,再無msg.sender相關的操作。
自動做市商協議MonoX確認其合約遭到攻擊:金色財經報道,自動做市商協議MonoX在官方推特確認其合約遭到攻擊。團隊正在調查并將盡最大努力追回被盜資金。MonoX表示,攻擊者利用互換合約,推高MONO價格,然后使用MONO購買池中的所有其他資產。此外,MonoX希望與黑客進行溝通。此前消息,自動做市商協議MonoX疑遭閃電貸攻擊,損失約3100萬美元。[2021/11/30 12:41:49]
圖2_removeLiquidity源碼
圖3第一次移除流動性內部調用細節
流動性挖礦項目Cream推出自動做市商CreamY:流動性挖礦項目Cream今日發推宣布,推出資本高效(Capital Efficient)的動態AMM(自動做市商)CreamY。creamY允許:動態池(Dynamic pool)更新;收益穩定的資產;整合流動性以避免分散的資金池;單面流動性。creamY將與穩定幣、BTC和ETH交易所一起推出,CREAMY LP獎勵也即將推出。[2020/9/20]
圖4移除Monoswap中MONO池所有的流動性Round3
添加極少數量的MONO到Monoswap中,這一步是為了后面快速提升MONO的價格做準備。
圖5攻擊合約添加流動性Round4
利用Monoswap合約中的代幣兌換價格覆寫漏洞,反復進行同種代幣的兌換,拉升MONO的價格。第3步攻擊者將Monoswap合約中MONO的儲量控制到了一個極小的值,目的就是更快的以極低的MONO數量來拉升MONO的價格。漏洞2:Monoswap合約的代幣兌換過程為:檢查兌換參數是否正常,然后計算應輸入輸出代幣的數量以及代幣兌換后的價格,最后執行兌換操作并將新的代幣價格寫入賬本。以上邏輯在不同種代幣兌換的時候會正常運行。但是在同種代幣兌換時,將出現兩處問題:在_getNewPrice函數計算應輸入輸出代幣數量時,未考慮到兌換過程中交易池代幣儲量的變更,同種代幣是基于相同的初始價格進行兌換后價格的計算。在最后一步更新代幣過程中,未考慮到同種代幣進行兌換時,兌出代幣的價格更新操作會覆蓋兌入代幣更新的操作。該漏洞導致MONO代幣兌換MONO代幣時,MONO的價格異常增長。此外不止攻擊者使用的swapExactTokenForToken函數存在該問題,swapTokenForExactToken函數也存在該問題。
BitShares Core 5.0版本正式發布 引入自動做市商機制:比特股(BitShares)官方剛剛發布推文宣布,正式推出BitShares Core 5.0版本。該版本引入自動做市商(AMM)機制,并從投票中移除Liquid BTS(僅股權鎖定)功能。[2020/9/17]
圖6swapIn函數源碼
圖7兌換過程參數計算
圖8兌換后價格計算
印度交易所WazirX將在Matic Network上推出自動做市商協議:以太坊側鏈擴容方案Matic Network發推稱,印度最大交易所WazirX將在Matic Network上推出自動做市商(AMM)DeFi協議。AMM DEX將允許用戶交換加密資產,并通過提供流動性賺取費用。WazirX選擇在Matic上構建,通過Matic的高速、低費用的基礎設施來克服DeFi領域當前的性能瓶頸。這僅僅是一個開始:DeFi項目很快認識到第二層的必要性,Matic看到了人們巨大的興趣。[2020/8/15]
圖9swapOut函數源碼現在看看攻擊者是如何利用漏洞2進行攻擊的:如圖10所示,初始MONO的價格為5.218vCASH/MONO。
圖10初始MONO價格然后攻擊者反復進行MONO->MONO的兌換,一共進行了55次兌換,如下圖所示:
圖11反復兌換,拉升MONO價格對其中一筆兌換交易進行分析,每次兌換的數量是交易池中MONO的總量減去1,這是能夠最大提升MONO價格的兌換數量(使圖8_getNewPrice第527行,分母為1)。另外由于交易池中MONO的總量較低,攻擊者已經通過第1步保證了有足夠的余額進行兌換操作。
圖12MONO兌換細節截止至兌換結束時,MONO的價格已經被拉升至843,741,636,512.366vCASH/MONO。攻擊合約中剩余51.92049285389317MONO。
圖13最終的MONO價格通過UniswapV2的USDC/WETH池借入了847.2066974335073WETH。然后攻擊者通過Monoswap將0.0709532091008681MONO兌換為4,029,106.880396USDC,然后將USDC歸還給USDC/WETH池。注意,這里實際上是攻擊者將從Monoswap中兌換的USDC到UniswapV2中兌換為WETH,而不是閃電貸攻擊。攻擊者所有轉出的資產如下:
所有被盜資產全部發送到0x8f6a86f3ab015f4d03ddb13abb02710e6d7ab31b地址。目前項目方已經和攻擊者進行了溝通,成都鏈安將持續對此事件進行監控。#3事件復盤
這次攻擊事件中,攻擊者利用了合約中的兩個漏洞:任何地址都可以任意移除指定地址的流動性;特殊情況下的價格寫入操作覆蓋問題。建議項目方在進行合約開發過程中做好權限的檢查;在開發以及測試過程中將特殊情況納入考慮,例如同種代幣轉賬。
在12月14日,MetaverseGames宣布,即將推出繼MetaverseMiner之后的第二款游戲——MetaKrypton.
1900/1/1 0:00:00我們目前還沒有觸及DeFi、DAO和現實世界生活的可能性。現在Web3中的興奮情緒和財富創造意味著DAO可以為傳統上難以籌集資金的項目籌集大量資金。CabinDAO就是一個很好的例子.
1900/1/1 0:00:00NFT數據日報是由Odaily星球日報與NFT數據整合平臺NFTGO合作的一檔欄目,旨在向NFT愛好者與投資者展示近24小時的NFT市場整體規模、交易活躍度、子領域市占比.
1900/1/1 0:00:00新加坡-12月2日-KyberNetwork宣布,KyberDMMDEX(dmm.exchange)現已完成beta階段,并更名為KyberSwap(kyberswap.com).
1900/1/1 0:00:00長期以來,少數大公司主宰著互聯網,導致用戶對自己的數據和創作的控制權越來越少。這些公司要求用戶提供個人的數據以換取訪問他們的平臺和服務,然后再將這些數據進行貨幣化出售給廣告商以獲取利潤.
1900/1/1 0:00:0011月21日,三箭資本創始人SuZhu在推特上發表關于“以太坊放棄用戶”的言論,引發以太坊鐵桿支持者的反擊,后又加倉ETH,在加密圈引起了不小的波瀾.
1900/1/1 0:00:00