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
BSC鏈上自動做市商BurgerSwap再遭閃電貸攻擊:6月5日凌晨消息,PeckShield派盾預警顯示,BSC鏈上自動做市商BurgerSwap再次遭到閃電貸攻擊,致使Dekbox ($DEK) 價格大幅下跌。[2021/6/5 23:14:01]
將0.1WETH通過Monoswap中兌換為79.98609431154262101MONO;
圖1WETH兌換MONORound2
移除Monoswap所有的流動性。這里利用了Monoswap合約中的任意地址流動性移除漏洞。漏洞1:Monoswap合約中未檢測流動性的所有者to是否為msg.sender。_removeLiquidity函數中,如圖2所示,第443行,獲取調用者(攻擊合約)最后一次添加流動性的時間戳,返回結果是0,因此第445行的檢測通過。第446行,topLPHolderOf如果不是調用者(攻擊合約)地址,第447行的檢測通過。此后移除流動性相關代碼中,再無msg.sender相關的操作。
自動做市商工具Saddle添加穩定幣資金池,支持 USDC、USDT 和 DAI:專為錨定價格的加密資產設計的自動做市商工具 Saddle 宣布推出新的兌換頁面,并升級資金池體系結構和添加穩定幣資金池,其中,穩定幣資金池目前支持 USDC、USDT 和 DAI。[2021/3/23 19:09:47]
圖2_removeLiquidity源碼
圖3第一次移除流動性內部調用細節
圖4移除Monoswap中MONO池所有的流動性Round3
自動做市商LINKSWAP流動性突破4100萬美元:YF Link官方發推稱,由社區管理的Chainlink生態系統自動做市商LINKSWAP的流動性創下新高,目前已經突破4100萬美元。[2021/1/16 16:20:12]
添加極少數量的MONO到Monoswap中,這一步是為了后面快速提升MONO的價格做準備。
圖5攻擊合約添加流動性Round4
利用Monoswap合約中的代幣兌換價格覆寫漏洞,反復進行同種代幣的兌換,拉升MONO的價格。第3步攻擊者將Monoswap合約中MONO的儲量控制到了一個極小的值,目的就是更快的以極低的MONO數量來拉升MONO的價格。漏洞2:Monoswap合約的代幣兌換過程為:檢查兌換參數是否正常,然后計算應輸入輸出代幣的數量以及代幣兌換后的價格,最后執行兌換操作并將新的代幣價格寫入賬本。以上邏輯在不同種代幣兌換的時候會正常運行。但是在同種代幣兌換時,將出現兩處問題:在_getNewPrice函數計算應輸入輸出代幣數量時,未考慮到兌換過程中交易池代幣儲量的變更,同種代幣是基于相同的初始價格進行兌換后價格的計算。在最后一步更新代幣過程中,未考慮到同種代幣進行兌換時,兌出代幣的價格更新操作會覆蓋兌入代幣更新的操作。該漏洞導致MONO代幣兌換MONO代幣時,MONO的價格異常增長。此外不止攻擊者使用的swapExactTokenForToken函數存在該問題,swapTokenForExactToken函數也存在該問題。
Uniswap將在2021年改善自動做市并探索擴容解決方案:12月31日,Uniswap在其《2020年度回顧》中發布2021年路線圖。具體內容包括:1.改善自動做市:團隊繼續研發AMM技術,在v3上取得長足進展。2.探索擴容解決方案以降低延遲交易、加快結算速度和降低交易成本。3.加強治理:Uniswap核心團隊成員計劃在2021年以個人身份更直接地參與治理,包括公開支持或反對提案。此外,核心團隊可以將投票權委托給他人或自己,治理工作將繼續由社區主導。[2021/1/1 16:12:02]
圖6swapIn函數源碼
圖7兌換過程參數計算
Messari前主管:無法相信自動做市商是一種范式轉變:8月17日,Messari前主管、股票及加密貨幣交易員Qiao Wang發推稱,Uniswap很酷,它是我們等待區塊鏈擴展時的絕佳臨時解決方案。但是我無法相信人們實際上是在說,像自動做市商(AMM)這樣的東西是一種范式轉變。[2020/8/17]
圖8兌換后價格計算
圖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事件復盤
這次攻擊事件中,攻擊者利用了合約中的兩個漏洞:任何地址都可以任意移除指定地址的流動性;特殊情況下的價格寫入操作覆蓋問題。建議項目方在進行合約開發過程中做好權限的檢查;在開發以及測試過程中將特殊情況納入考慮,例如同種代幣轉賬。
頭條 北京:建設法定數字貨幣試驗區和數字金融體系11月24日,北京市十五屆人大常委會第三十五次會議對《中國(北京)自由貿易試驗區條例(草案)》進行首次審議.
1900/1/1 0:00:00作者|秦曉峰編輯|郝方舟出品|Odaily星球日報 期權,作為風險對沖的重要手段之一,在加密市場的重要性愈發凸顯.
1900/1/1 0:00:00撰文:Footprint分析師Simon(simon@footprint.network)日期:2021年12月數據來源:FootprintAnalytics在DeFi的世界中用戶不論是參與DE.
1900/1/1 0:00:00頭條 北京:支持有關協會圍繞區塊鏈等優勢產業領域組建產業聯盟北京市商務局、北京市發展和改革委員會、北京市財政局聯合制定《關于北京市專業服務業助力“走出去”發展若干措施》.
1900/1/1 0:00:00作者:@meepoing編輯:DeFi之道開個thread,嘗試從U本位和幣本位的角度分析游戲出之前和打金期的價格走勢,涉及到女武神、扳手腕、godz、飛船、飛機、bnb英雄.
1900/1/1 0:00:00作者:PaulHarwood記得曾經一部老電影中的一個場景。我忘記電影叫什么名字了,但那個場景一直刻在我的記憶中.
1900/1/1 0:00:00