以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > DOGE > Info

慢霧:詳解Uniswap的ERC777重入風險_TOKEN:Mandi Token

Author:

Time:1900/1/1 0:00:00

編者按:本文來自慢霧科技,Odaily星球日報授權轉載。

前言

據鏈聞消息,4月18日,Tokenlon宣布暫停imBTC轉賬,因其發現有攻擊者通過ERC777在Uniswap流動性合約中的重入漏洞,對ETH-imBTC池循環套利。此次的攻擊手法是一個存在于Uniswapv1上的已知漏洞,該漏洞最早由Consensys于2019年4月發現,當時Consensys只是發現了該風險,還沒有發現可以利用這種手法進行攻擊的token。隨后,在imBTC上線Uniswap后,由于imBTC是基于ERC777實現的,通過組合ERC777的特性及Uniswap代碼上的問題,使攻擊者可以通過重入漏洞實現套利。下面,我們將來分析此次套利中的攻擊手法和具體的細節。知識準備

ERC777協議是以太坊上的代幣標準協議,該協議是以太坊上ERC20協議的改進版,主要的改進點如下:1、使用和發送以太相同的理念發送token,方法為:send(dest,value,data)2、合約和普通地址都可以通過注冊tokensToSendhook函數來控制和拒絕發送哪些token3、合約和普通地址都可以通過注冊tokensReceivedhook函數來控制和拒絕接受哪些token4、tokensReceived可以通過hook函數可以做到在一個交易里完成發送代幣和通知合約接受代幣,而不像ERC20必須通過兩次調用來完成5、持有者可以"授權"和"撤銷"操作員這些操作員通常是交易所、支票處理機或自動支付系統6、每個代幣交易都包含data和operatorData字段,可以分別傳遞來自持有者和操作員的數據7、可以通過部署實現tokensReceived的代理合約來兼容沒有實現tokensReceived函數的地址在這里,我們需要特別關注的點是第二點,即ERC777標準中的tokenToSend函數,根據ERC777協議的定義,遵循該標準的token代幣在每一次發生代幣轉賬的時候都會去嘗試調用代幣發送者tokensToSend函數,而代幣持有者可以通過在ERC1820注冊合約注冊自己的合約并通過在這個hook函數中定義一些操作來處理代幣轉賬的過程中的某些流程,如拒絕代幣發送或其他操作。了解這些關鍵點,有助于我們理解這次攻擊的具體攻擊手法。現在開始,我們可以稍微加速,看看對于Uniswap而言,這次到底發生了什么?細節分析

慢霧:V神相關地址近日于Uniswap賣出3000枚以太坊:11月14日消息,據慢霧監測顯示,以太坊創始人Vitalik Buterin地址(0xe692開頭)近日在Uniswap V3上分三筆將3000枚以太坊(約400萬美元)兌換成了USDC。[2022/11/14 13:03:22]

通過Etherscan查詢攻擊者的其中一筆交易0x32c83905db61047834f29385ff8ce8cb6f3d24f97e24e6101d8301619efee96e

可以發現,攻擊者兩度向Uniswap合約轉帳imBTC,金額同樣是0.00823084,然后從Uniswap收取了兩筆ETH,看上去似乎是十分正常的兩筆交易,實際上卻是暗流涌動,另有玄機。為了更好的了解整一筆交易的細節,我們需要通過bloxy.info來查看交易的具體細節。

慢霧:Transit Swap事件中轉移到Tornado Cash的資金超過600萬美元:金色財經報道,慢霧 MistTrack 對 Transit Swap 事件資金轉移進行跟進分析,以下將分析結論同步社區:

Hacker#1 攻擊黑客(盜取最大資金黑客),獲利金額:約 2410 萬美元

1: 0x75F2...FFD46

2: 0xfa71...90fb

已歸還超 1890 萬美元的被盜資金;12,500 BNB 存款到 Tornado Cash;約 1400 萬 MOONEY 代幣和 67,709 DAI 代幣轉入 ShibaSwap: BONE Token 合約地址。

Hacker#2 套利機器人-1,獲利金額:1,166,882.07 BUSD

0xcfb0...7ac7(BSC)

保留在獲利地址中,未進一步轉移。

Hacker#3 攻擊模仿者-1,獲利金額:356,690.71 USDT

0x87be...3c4c(BSC)

Hacker#4 套利機器人-2,獲利金額:246,757.31 USDT

0x0000...4922(BSC)

已全部追回。

Hacker#5 套利機器人-3,獲利金額:584,801.17 USDC

0xcc3d...ae7d(BSC)

USDC 全部轉移至新地址 0x8960...8525,后無進一步轉移。

Hacker#6 攻擊模仿者-2,獲利金額:2,348,967.9 USDT

0x6e60...c5ea(BSC)

Hacker#7 套利機器人-4,獲利金額:5,974.52 UNI、1,667.36 MANA

0x6C6B...364e(ETH)

通過 Uniswap 兌換為 30.17 ETH,其中 0.71 支付給 Flashbots,剩余 ETH 未進一步轉移。[2022/10/6 18:41:10]

通過查詢交易的細節,我們發現,攻擊者首先是通過ethToTokenSwapInput函數向Uniswap兌換了一些imBTC,然后再通過tokenToEthSwapInput函數開始第一次用imBTC換取ETH,然后Uniswap先將ETH轉給了攻擊者,再調用imBTC的transferFrom函數,由于imBTC實現了ERC777標準,所以在調用imBTC的trasferFrom函數的時候,imBTC會對攻擊者的tokensToSend函數進行調用。隨后,在攻擊者的tokensToSend函數中,攻擊者會進行第二次用imBTC換取ETH,然后流程結束。從交易細節上看,這里似乎還是沒有什么問題,我們繼續跟蹤UniSwap的代碼。

慢霧:Solana公鏈上發生大規模盜幣,建議用戶先將熱錢包代幣轉移到硬件錢包或知名交易所:8月3日消息,據慢霧區情報,Solana公鏈上發生大規模盜幣事件,大量用戶在不知情的情況下被轉移SOL和SPL代幣,慢霧安全團隊對此事件進行跟蹤分析:

已知攻擊者地址:

Htp9MGP8Tig923ZFY7Qf2zzbMUmYneFRAhSp7vSg4wxV、CEzN7mqP9xoxn2HdyW6fjEJ73t7qaX9Rp2zyS6hb3iEu、5WwBYgQG6BdErM2nNNyUmQXfcUnB68b6kesxBywh1J3n、GeEccGJ9BEzVbVor1njkBCCiqXJbXVeDHaXDCrBDbmuy

目前攻擊仍在進行,從交易特征上看,攻擊者在沒有使用攻擊合約的情況下,對賬號進行簽名轉賬,初步判斷是私鑰泄露。不少受害者反饋,他們使用過多種不同的錢包,以移動端錢包為主,我們推測可能問題出現在軟件供應鏈上。在新證據被發現前,我們建議用戶先將熱錢包代幣轉移到硬件錢包或知名交易所等相對安全的位置,等待事件分析結果。[2022/8/3 2:55:22]

慢霧:攻擊Ronin Network的黑客地址向火幣轉入3750枚 ETH:3月30日消息,慢霧發推稱,攻擊Axie Infinity側鏈Ronin Network的黑客地址向交易所火幣轉入3750枚ETH。此前金色財經報道,Ronin橋被攻擊,17.36萬枚ETH和2550萬USDC被盜。[2022/3/30 14:26:38]

上面是代碼是Uniswap的ethToTokenSwapInput函數的代碼,根據代碼分析,Uniswap的ethToTokenSwapInput函數會調用ethToTokenInput函數,然后會先通過getInputPrice獲取代幣能換取的eth數量,之后通過send函數將eth發給用戶,最后再通過transferFrom把代幣轉進合約。我們繼續跟進getInputPrice函數。

通過分析getInputPrice函數,我們能知道,ETH獲取量計算的公式為

聲音 | 慢霧:EOS假充值紅色預警后續:慢霧安全團隊今早發布了 EOS 假充值紅色預警后,聯合 EOSPark 的大數據分析系統持續跟蹤和分析發現:從昨日開始,存在十幾個帳號利用這類攻擊技巧對數字貨幣交易所、錢包等平臺進行持續性攻擊,并有被真實攻擊情況。慢霧安全團隊在此建議各大交易所、錢包、DApp 做好相關防御措施,嚴格校驗發送給自己的轉賬交易在不可逆的狀態下確認交易的執行狀態是否為 executed。除此之外,確保以下幾點防止其他類型的“假充值”攻擊: 1. 判斷 action 是否為 transfer 2. 判斷合約賬號是否為 eosio.token 或其它 token 的官方合約 3. 判斷代幣名稱及精度 4. 判斷金額 5. 判斷 to 是否是自己平臺的充幣賬號。[2019/3/12]

把該公式放到ethToTokenInput函數的上下文中,該公式就變成了

在該公式下,一次正常的imBTC兌換ETH的過程中,作為分母的imBTC儲備量在兌換過后應該要上升,對應的ETH儲備量會變小。

但是回顧攻擊者的操作方式,在攻擊者第一次發送imBTC兌換ETH的過程中,Uniswap會先發送ETH給攻擊者,這時候Uniswap中ETH儲備量減少,然后Uniswap調用transferFrom函數,(注意此時還未將攻擊者的imBTC扣除),緊接著在transferFrom函數中攻擊者調用的第二次的ethToTokenSwapInput時,通過getInputPrice獲取兌換的ETH數量的公式會變成這樣:

注意看,在第二次的兌換計算中,只有ETH的儲備量變少了,而imBTC的儲備量并未增加,這導致相比與單獨的調用ethToTokenSwapInput函數,攻擊者可以通過重入的方式,在第二次使用imBTC兌換ETH的過程中,使計算公式的分子發生了變化,而公式的分母不會發生變化。相比正常的兌換,攻擊者通過重入方式進行的第二次兌換會獲取微小的利潤,導致有利可圖。重復這樣的過程,就能通過等量的imBTC獲取更多的ETH,導致Uniswap做事商的損失。防御方法

在Uniswap的tokenToEthSwapInput函數中加入OpenZeppelin的ReentrancyGuard函數,防止重入問題。在進行代幣交換的時候,先扣除用戶的代幣,再將ETH發送給用戶。同時,針對本次攻擊事件慢霧安全團隊建議:在關鍵的業務操作方法中加入鎖機制,如:OpenZeppelin的ReentrancyGuard開發合約的時候采用先更改本合約的變量,再進行外部調用的編寫風格項目上線前請優秀的第三方安全團隊進行全面的安全審計,盡可能的發現潛在的安全問題多個合約進行對接的時候也需要對多方合約進行代碼安全和業務安全的把關,全面考慮各種業務場景相結合下的安全問題合約盡可能的設置暫停開關,在出現“黑天鵝”事件的時候能夠及時發現并止損安全是動態的,各個項目方也需要及時捕獲可能與自身項目相關的威脅情報,及時排查潛在的安全風險最后的思考

這兩天的DeFi世界被鬧得沸沸揚揚,imBTC作為ERC777代幣首當其沖,ERC777協議也飽受詬病,但是看完分析,造成此次的攻擊事件原因,真的是imBTC或者是ERC777協議的問題嗎?如果Uniswap做好了ERC777的兼容,使用ReentrancyGuard,并在代幣交換的時候先扣除用戶的代幣,再將ETH發送給用戶,這樣的問題是不是就不會發生?imBTC作為以太坊上token化的比特幣代幣協議,其安全性在自身單獨運行的時候并不存在問題,第三方DeFi平臺在接入的時候,應需要充分考慮平臺本身的業務邏輯與接入代幣之間的兼容性,才能避免因兼容性發生不必要的安全問題。而不是簡單的將問題歸咎于協議和代幣提供方。

Tags:ETHSWAPTOKTOKENDether幣圈swapKaaso TokenMandi Token

DOGE
以太坊2.0到底意味著什么?_ETH:Aetherius

編者按:本文來自頭等倉區塊鏈研究院,Odaily星球日報經授權轉載。以太坊2.0以太坊2.0經常被各大媒體提及,它代表著以太坊的未來。沒有一個區塊鏈像以太坊一樣,歷經如此多的磨難.

1900/1/1 0:00:00
分析人士:Eth2.0將帶來加密領域最大的經濟轉變_COC:CranberrySwap

編者按:本文來自Unitimes,作者:PriyeshuGarg,編譯:Unitimes_David,星球日報經授權發布.

1900/1/1 0:00:00
Openfinance:未續簽數字證券或臨集中退市,集中精力發展證券交易_NAN:PEN

今日上午,數字證券交易平臺Openfinance的首席執行官JuanHernandez對其機構投資人發出了一封郵件,對于平臺的近期的情況進行更新.

1900/1/1 0:00:00
央行數字貨幣DCEP在農行內測_BDC:BDC幣

編者按:本文來自幣新區塊,作者:Chaosmosreads,Odaily星球日報經授權轉載。 農業銀行開發的DCEP錢包圖片來源:幣新幣新消息,中國人民銀行主導開發的數字貨幣DCEP已在中國農業.

1900/1/1 0:00:00
Pantera Capital首席執行官:比特幣、以太坊等加密貨幣,將挑戰美元主導地位_PAN:BEST

編者按:本文來自巴比特資訊,譯者:夕雨,星球日報經授權發布。加密投資公司和對沖基金PanteraCapital首席執行官丹·莫爾黑德表示,從長遠來看,比特幣、以太坊和瑞波幣等領先的數字資產將挑戰.

1900/1/1 0:00:00
BCH、BSV不如人意,比特幣能否講好減半故事?_BCH:BSV

編者按:本文來自DeepChain深鏈,作者:不二做,Odaily星球日報經授權轉載。4月10日,BCH完成減半。然而,減半之后,BCH并沒有迎來預期中的上漲,反而出現了大跌.

1900/1/1 0:00:00
ads