原標題|千萬美元被盜——DeFi平臺MonoXFinance被黑分析
作者|九九@慢霧安全團隊
2021年11?30?,據慢霧區消息,DeFi平臺MonoXFinance遭遇攻擊,本次攻擊中約合1820萬美元的?WETH和1050萬美元的MATIC被盜,其他被盜Token包括WBTC、LINK、GHST、DUCK、MIM和IMX,損失共計約3100萬美元。慢霧安全團隊第?時間介?分析,并將簡要分析結果分享如下。
攻擊核心
本次攻擊的核?在于利?swap合約中沒有對池中傳?和傳出代幣是否相同作檢查,以此利?價格更新機制的缺陷,使得攻擊者傳?和傳出代幣相同時,價格被二次計算并覆蓋,導致代幣價格不斷被推?,并以此代幣換出池中的其他代幣來獲利。
相關信息
MonoX是?種新的DeFi協議,使?單?代幣設計?于流動性池。這是通過將存?的代幣與vCASH穩定幣組合成?個虛擬交易對來實現的。其中的單?代幣流動性池的第?個應?是?動做市商系統-Monoswap,它在2021年10?時推出。
數據:ETH已實現上限達到7個月高點:金色財經消息,據Glassnode數據顯示,ETH已實現上限剛剛達到7個月高點,數額為180,365,222,580.32美元。[2023/7/15 10:56:25]
攻擊者地址1:
0xecbe385f78041895c311070f344b55bfaa953258
攻擊者地址?2:
0x8f6a86f3ab015f4d03ddb13abb02710e6d7ab31b
攻擊合約?1:
0xf079d7911c13369e7fd85607970036d2883afcfd
攻擊合約2:
0x119914de3ae03256fd58b66cd6b8c6a12c70cfb2
流動質押協議StakeWise上ETH質押總量突破8萬枚:金色財經報道,據Dune Analytics數據顯示,流動質押協議StakeWise上ETH質押總量達88267枚。[2023/5/1 14:37:13]
攻擊交易1:
https://etherscan.io/tx/0x9f14d093a2349de08f02fc0fb018dadb449351d0cdb7d0738ff69cc6fef5f299
攻擊交易2:
https://polygonscan.com/tx/0x5a03b9c03eedcb9ec6e70c6841eaa4976a732d050a6218969e39483bb3004d5d
攻擊細節
1、首先攻擊者調用Monoswap.swapExactTokenForToken:0.1個WETH換出79.986094311542621010個MONO。
Connected 2023: Web3社交黑客馬拉松在DoraHacks.io正式啟動:據官方消息,Connected 2023: A Web3 Social Hackathon項目申請入口已在開發者激勵平臺DoraHacks.io開啟。本次活動由Web3社交圖譜協議CyberConnect和BNB Chain聯合舉辦,利用DoraHacks平臺支持的自由組織黑客馬拉松工具發起。活動贊助商來自Notifi、Lit、Livepeer和XMTP,總資助池超50,000美元,項目提交截止時間為3月10日。[2023/2/17 12:13:36]
2、接著攻擊者利用漏洞移除池子中其他用戶的流動性,并為添加攻擊合約的流動性以此來獲取最大的利益。
這里移除流動性處的漏洞在Monoswap.sol中的471-510行,移除池中流動性時通過removeLiquidity函數調用_removeLiquidityHelper函數,而這兩個函數都未做調用者和傳入的to參數的身份驗證,所以可直接移除任意用戶在池中的流動性。
安全團隊:一巨鯨從MakerDAO提取2000枚BTC:金色財經報道,據派盾監測,一巨鯨地址從MakerDAO提取2000枚BTC。[2022/11/25 8:06:37]
移除0x7b9aa6的流動性,把1670.7572297649224個MONO和6.862171986812230290個vCASH轉出給0x7b9aa6;移除cowrie.eth的流動性,把152.9745213857155個MONO和0.628300423692773565個vCASH轉出給cowrie.eth;移除0xab5167的流動性,把99940.7413658327個MONO和410.478879590637971405個vCASH轉出給0xab5167;為攻擊合約1在MONO代幣流動池創建流動性。
3、緊接著攻擊者調??55?次?Monoswap.swapExactTokenForToken以此來不斷堆?MONO的價格。
Michael Saylor:正為大企業加入比特幣閃電網絡研究解決方案:金色財經消息,MicroStrategy執行主席Michael Saylor表示,該公司的開發人員正在研究允許大量人員加入閃電網絡(Lightning)的解決方案,包括閃電網絡的企業應用:企業閃電錢包、企業閃電服務器、企業身份驗證。
據悉,閃電協議允許用戶在鏈上結算之前相互打開支付渠道并交換多筆交易,這有助于最大限度地減少費用和確認時間。在比特幣網絡中,交易通常需要 10 分鐘或更長時間才能被確認。(CoinDesk)[2022/9/5 13:09:15]
這里攻擊的核心是在Monoswap.sol中的swapExactTokenForToken函數,攻擊者傳入MONO代幣使得tokenIn和tokenOut是相同的代幣。
跟到swapIn函數中:
可以發現在swapIn函數中,調用了函數getAmountOut來計算價格。接著跟到getAmountOut函數中發現是利用了_getNewPrice函數來計算tokenInPrice和tokenOutPrice。
跟到_getNewprice函數中,發現當計算tokenInPrice時候傳入的txType參數為TxType.SELL,此時:
當計算tokenOutPrice時候傳入的txType參數為TxType.BUY,此時:
如果傳入和傳出為同一種代幣時,價格計算式中的四個變量都相同,所以很容易得出tokenOutPrice會比tokenInPrice要大。
由于tokenIn和tokenOut是同一個token,swapIn函數在計算完價格后會再次調用_updateTokenInfo函數,使得tokenOutPrice的更新會覆蓋tokenInPrice的更新,所以導致這個token的價格上漲。
4、最后攻擊者調用swapTokenForExactToken函數用MONO來換出池子中的其他代幣。
swapTokenForExactToken函數中調用了swapOut函數,而swapOut函數中計算價格是調用的getAmountIn函數。
在該函數中由于tokenInPoolPrice是取的MONO代幣在池中的價格,而此價格在之前已被推高,導致tokenInPrice變大,計算最后的amountIn變小,用更少的MONO換出了原來相同數量的WETH、WBTC、MONO、USDC、USDT、DUCK、MIM、IMX等池子中的代幣。
5、攻擊者最終把攻擊獲利轉入地址
0x8f6a86f3ab015f4d03ddb13abb02710e6d7ab31b。
以上為以太坊主鏈上的攻擊分析,此外,攻擊者除了在以太坊主鏈上進行攻擊外,還在Polygon上進行了同樣的攻擊,攻擊手法與以太坊主鏈上相同,此處不做過多重復的分析。
據慢霧AML統計,MonoXFinance最終損失約3400萬美元,包括約2.1K個WETH、1.9M個WMATIC、36.1個WBTC、143.4K個MONO、8.2M個USDC、9.1M個USDT、1.2K個LINK、3.1K個GHST、5.1M個DUCK、4.1K個MIM以及274.9個IMX。
總結
本次攻擊是利用了swap合約里沒有對池中傳入和傳出代幣作檢查,從而利用價格更新機制的問題,由于在swap合約中會對池中傳入和傳出的代幣的價格調用同一個函數_upTokenInfo來進行更新,而當傳入和傳出的代幣為同一種代幣時,第二次調用_upTokenInfo函數時,通過價格計算后的更高的tokenOutPrice會覆蓋掉價格更低的tokenInPrice,以此來不斷推高池中該代幣的價格,最后可以換出池中其他的所有代幣來獲利離場。
“一切都會出錯”是任何規劃都應該遵循的主要原則之一。 不穩定是事實 在解決密碼問題時,會出現不可抗力的情況。多年來,許多科學家都在考慮每一個細節,但現實往往會讓你感到驚訝.
1900/1/1 0:00:00近期的留言中,有讀者提到,現在的市場里幾乎沒有什么是便宜的了,買什么似乎都覺得高。把各個市場進行比較反倒是覺得A股市場似乎還有點機會。對此我基本上是認同的.
1900/1/1 0:00:00大家翹首以待的歡樂星期五來了!為回饋廣大用戶的長期支持,ZT于日前特意推出“歡樂星期五”,為用戶提供抽獎活動。該活動形式以盲盒為主,包含了當下熱門幣種以及ZT手辦等.
1900/1/1 0:00:00我們已經看到NFT今年在體育產業中取得了重大進展。跨國專業服務機構德勤則表示,體育NFT不會往其他的方向發展.
1900/1/1 0:00:00MeerToken系列-UTXO模型VS賬戶模型打開測試版的KAHF錢包,切換到Meer(Testnet)。朋友們一定看到除了Meer本幣之外,還有兩個名字萌萌的資產QITID和METID.
1900/1/1 0:00:002021年,元宇宙飛速發展,傳統科技巨頭Facebook宣布更名為Meta,正式進軍元宇宙市場;字節跳動50億收購PICO,持續布局元宇宙業務.
1900/1/1 0:00:00