比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > 萊特幣 > Info

ETH:慢霧:詳解Uniswap的ERC777重入風險_TOKE

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而言,這次到底發生了什么?細節分析

慢霧:Uwerx遭受攻擊因為接收地址會多銷毀掉from地址轉賬金額1%的代幣:金色財經報道,Uwerx遭到攻擊,損失約174.78枚ETH,據慢霧分析,根本原因是當接收地址為 uniswapPoolAddress(0x01)時,將會多burn掉from地址的轉賬金額1%的代幣,因此攻擊者利用uniswapv2池的skim功能消耗大量WERX代幣,然后調用sync函數惡意抬高代幣價格,最后反向兌換手中剩余的WERX為ETH以獲得利潤。據MistTrack分析,黑客初始資金來自Tornadocash轉入的10 BNB,接著將10 BNB換成1.3 ETH,并通過Socket跨鏈到以太坊。目前,被盜資金仍停留在黑客地址0x605...Ce4。[2023/8/2 16:14:10]

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

慢霧:6月24日至28日Web3生態因安全問題損失近1.5億美元:7月3日消息,慢霧發推稱,自6月24日至6月28日,Web3生態因安全問題遭遇攻擊損失149,658,500美元,包括Shido、Ichioka Ventures、Blockchain for dog nose wrinkles、Chibi Finance、Biswap、Themis等。[2023/7/3 22:14:33]

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

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

慢霧:疑似Gemini相關地址在過去5小時內共轉出逾20萬枚ETH:金色財經消息,慢霧監測顯示,疑似加密交易所Gemini相關地址(0xea3ec2a08fee18ff4798c2d4725ded433d94151d)已在過去5小時內歸集并轉出逾20萬枚ETH(超3億美元)。[2022/7/19 2:22:08]

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

慢霧:警惕 Terra 鏈上項目被惡意廣告投放釣魚風險:據慢霧區情報,近期 Terra 鏈上部分用戶的資產被惡意轉出。慢霧安全團隊發現從 4 月 12 日開始至 4 月 21 日約有 52 個地址中的資金被惡意轉出至 terra1fz57nt6t3nnxel6q77wsmxxdesn7rgy0h27x30 中,當前總損失約 431 萬美金。

經過慢霧安全追蹤分析確認,此次攻擊為批量谷歌關鍵詞廣告投放釣魚,用戶在谷歌搜索如:astroport,nexus protocol,anchor protocol 等這些知名的 Terra 項目,谷歌結果頁第一條看似正常的廣告鏈接(顯示的域名甚至是一樣的)實為釣魚網站。 一旦用戶不注意訪問此釣魚網站,點擊連接錢包時,釣魚網站會提醒直接輸入助記詞,一旦用戶輸入并點擊提交,資產將會被攻擊者盜取。

慢霧安全團隊建議 Terra 鏈上用戶保持警惕不要隨便點擊谷歌搜索出來的鏈接或點擊來歷不明的鏈接,減少使用常用錢包進行非必要的操作,避免不必要的資損。[2022/4/21 14:37:55]

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

慢霧:Polkatrain 薅羊毛事故簡析:據慢霧區消息,波卡生態IDO平臺Polkatrain于今早發生事故,慢霧安全團隊第一時間介入分析,并定位到了具體問題。本次出現問題的合約為Polkatrain項目的POLT_LBP合約,該合約有一個swap函數,并存在一個返傭機制,當用戶通過swap函數購買PLOT代幣的時候獲得一定量的返傭,該筆返傭會通過合約里的_update函數調用transferFrom的形式轉發送給用戶。由于_update函數沒有設置一個池子的最多的返傭數量,也未在返傭的時候判斷總返傭金是否用完了,導致惡意的套利者可通過不斷調用swap函數進行代幣兌換來薅取合約的返傭獎勵。慢霧安全團隊提醒DApp項目方在設計AMM兌換機制的時候需充分考慮項目的業務場景及其經濟模型,防止意外情況發生。[2021/4/5 19:46:39]

把該公式放到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:ETHSWAPTOKEKENethicaldilemmaPEPESWAP價格OTM TokenDAPS Token

萊特幣
PAN:Pantera Capital首席執行官:比特幣、以太坊等加密貨幣,將挑戰美元主導地位_ANT

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

1900/1/1 0:00:00
LIB:Libra還能否實現其最初的雄心壯志?_穩定幣

編者按:本文來自加密谷Live,作者:Etienne&Jonas,翻譯:石凌杰,來源:BinanceResearch,Odaily星球日報經授權轉載.

1900/1/1 0:00:00
比特幣:吳說區塊鏈:比特大陸選擇繼續上訴,一審幣印三人需賠210萬_如何把泰達幣換成比特幣的錢

吳說區塊鏈獲悉,關于比特大陸訴幣印潘志彪等三人的案件,按照一審判決,幣印潘志彪、朱砝、李天昭應向比特大陸支付約210萬元的賠償款,比特大陸對該金額不滿,選擇繼續上訴.

1900/1/1 0:00:00
EFI:DeFi周報:黑客返還Lendf被盜資金,DeFi與CeFi融合或為趨勢_Rise of Defenders

本周主流資產俱有比較明顯的漲幅,除了各類原油差價合約,下圖表中也并未將WTI種類列入其中,相對漲跌幅會影響到其他主流資產的市場表現直觀感受程度.

1900/1/1 0:00:00
BNB:幣安一季度銷毀3.7億元BNB,為何屢創新高?_bnb是什么的縮寫

文|秦曉峰編輯|Mandy王夢蝶出品|Odaily星球日報 北京時間4月18日,幣安發布最新一期BNB銷毀公告,暨第十一次BNB銷毀.

1900/1/1 0:00:00
BTC:行情分析:原油期貨暴跌,數字貨幣市場遭殃_玩btc違法嗎

本文來自:哈希派,作者:哈希派分析團隊,星球日報經授權轉發。金色財經合約行情分析 | BTC下午放量上漲,市場情緒有所激活:據火幣BTC永續合約行情顯示,截至今日18:00(GMT+8),BTC.

1900/1/1 0:00:00
ads