買以太坊 買以太坊
Ctrl+D 買以太坊
ads

TOKEN:Uniswap的ERC777重入風險:詳解本次ETH-imBTC套利的攻擊手法及具體細節_NEU Token

Author:

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

編者注:原標題為《詳解Uniswap的ERC777重入風險》

前言

據媒體消息,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函數來控制和拒絕發送哪些token

某地址今日凌晨將100萬枚UNI轉入Coinbase,約合609萬美元:金色財經報道,據推特用戶Bit余燼監測,8小時前,一個Uniswap的團隊成員/投資人/顧問地址,將100萬枚UNI (約609萬美元)轉入了Coinbase。

這個地址是在2020年9月17日從團隊成員/投資人/顧問的分配里獲得了5,440,998枚UNI。按UNI解鎖規則,他目前已解鎖315萬枚UNI,其中215萬枚UNI已經轉入了 Coinbase。

該地址轉入Coinbase的215萬枚UNI,按轉入時價格計算的話,應該是可以換得資金1402萬美元。均價為6.52美元。該地址內目前還有329萬枚UNI(包括100萬已解鎖UNI和229萬未解鎖UNI)。[2023/3/13 13:00:09]

3、合約和普通地址都可以通過注冊tokensReceivedhook函數來控制和拒絕接受哪些token

4、tokensReceived可以通過hook函數可以做到在一個交易里完成發送代幣和通知合約接受代幣,而不像ERC20必須通過兩次調用來完成

5、持有者可以"授權"和"撤銷"操作員?這些操作員通常是交易所、支票處理機或自動支付系統

數據:BUSD在Uniswap的流動性觸及近1個月低點:金色財經報道,據Glassnode最新數據顯示,BUSD在Uniswap上的流動性達到624,229.12美元,觸及近1個月低點。

此前BUSD的流動性低點為629,842.50美元,發生在5天前的2023年2月14日。[2023/2/19 12:16:01]

6、每個代幣交易都包含data和operatorData字段,可以分別傳遞來自持有者和操作員的數據

7、可以通過部署實現tokensReceived的代理合約來兼容沒有實現tokensReceived函數的地址

在這里,我們需要特別關注的點是第二點,即ERC777標準中的tokenToSend函數,根據ERC777協議的定義,遵循該標準的token代幣在每一次發生代幣轉賬的時候都會去嘗試調用代幣發送者tokensToSend函數,而代幣持有者可以通過在ERC1820注冊合約注冊自己的合約并通過在這個hook函數中定義一些操作來處理代幣轉賬的過程中的某些流程,如拒絕代幣發送或其他操作。

了解這些關鍵點,有助于我們理解這次攻擊的具體攻擊手法。現在開始,我們可以稍微加速,看看對于Uniswap而言,這次到底發生了什么?

Kakao旗下區塊鏈公司Crust Universe被韓國國稅局罰款約1013萬美元:3月23日消息,根據韓國互聯網巨頭Kakao 23日提交的業務報告中稅務機關的制裁情況,其在新加坡成立的區塊鏈公司Crust Universe去年被韓國國稅局罰款約1013萬美元。這是去年首爾地方稅務廳對Kakao的區塊鏈附屬公司Ground X進行稅務調查的結果。此前,首爾地方稅務廳第四調查局在去年通過Crust Universe省略了Ground X在ICO過程中的銷售收入,并將代幣作為獎金支付給員工,且金額低于評估金額,因此稅務廳對相關公司的扣繳稅款展開了稅務調查。(news1)[2022/3/23 14:12:37]

細節分析

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

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

以太坊跨鏈橋Secret Ethereum Bridge宣布支持YFI和UNI:12月14日,以太坊跨鏈橋Secret Ethereum Bridge官方宣布支持YFI和UNI。Secret Ethereum Bridge支持的其他ERC20代幣還包括KNC和COMP。此外,Secret Ethereum Bridge已于日前宣布將支持TUSD和SNX。

據此前報道,隱私公鏈Secret Network(隱秘網絡)宣布推出與以太坊的跨鏈橋Secret Ethereum Bridge,并擬于2020年12月14日在主網上啟用。[2020/12/14 15:08:41]

通過查詢交易的細節,我們發現,攻擊者首先是通過ethToTokenSwapInput函數向Uniswap兌換了一些imBTC,然后再通過tokenToEthSwapInput函數開始第一次用imBTC換取ETH,然后Uniswap先將ETH轉給了攻擊者,再調用imBTC的transferFrom函數,由于imBTC實現了ERC777標準,所以在調用imBTC的trasferFrom函數的時候,imBTC會對攻擊者的tokensToSend函數進行調用。隨后,在攻擊者的tokensToSend函數中,攻擊者會進行第二次用imBTC換取ETH,然后流程結束。

Coinbase加密研究員發起為Uniswap新增SNX/ETH流動性挖礦池的提案討論:Coinbase機構加密研究員MaxBronstein在Uniswap社區發起一項新增SNX/ETH流動性挖礦池的提案討論,該提案討論稱,作為DeFi生態系統中的重要抵押資產,SNX目前在以太坊上生成價值近1.5億美元的合成資產。如果SNX擁有更高的流動性,那么可使利益相關者更輕松地管理自己的債務,并使整個系統保持足夠的抵押品,這兩者反過來又使DeFi上最大的合成資產流動性池更加有效。[2020/9/20]

從交易細節上看,這里似乎還是沒有什么問題,我們繼續跟蹤UniSwap的代碼。

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

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

把該公式放到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:UNIETHSWAPTOKENUnibrightethnographyinbusinessSumSwapNEU Token

幣安下載
ROLL:當 DeFi 遇上 Rollup,將擦出怎樣的火花?_roll幣是什么意思

撰文:DanielGoldman,?OffchainLabs?工程師、研究員&作家編譯:Unitimes_Jhonny 來源:Unitimes 去年出現了兩個新的以太坊流行語.

1900/1/1 0:00:00
HEAD:觀點 | Pantera Capital首席執行官:BTC比黃金更好,如今是證明自己的重要時刻_杭州女子花300萬買比特幣暴漲

在COVID-19這場危機之下,對金融體系崩潰的擔憂已經席卷全球。現在很多城市已經封鎖了數周。在這次封鎖之后,很多企業停業,商店關閉,僅在美國,失業人數就增加到660萬.

1900/1/1 0:00:00
聯盟鏈:區塊鏈概念股集體漲停,咋回事?_區塊鏈的四大核心技術

作者:溫婷 來源:上海證券報 4月16日,螞蟻區塊鏈面向中小企業正式推出“開放聯盟鏈”,首次全面開放螞蟻區塊鏈的技術和應用能力.

1900/1/1 0:00:00
DAI:自動化做市商 AMM 正火,但是你需要了解提供流動性的風險所在_ethereal最美翻譯

撰文:AlfaBlok,CryptoEspa?ol頻道博主,前微軟員工編譯:PerryWang 來源:鏈聞 AMM是DeFi中最紅火的一個領域,其全稱是自動化做市商.

1900/1/1 0:00:00
BTC:觀點:比特幣不會取代黃金,相反會超越黃金2.0并成為從未見過的新型貨幣_比特幣

重要要點: 比特幣在地緣動蕩期間表現良好,這導致BTC朝著與股票相反的方向發展的說法。上個月,比特幣與股票之間的關聯度創下歷史新高,引起許多人質疑比特幣的“黃金2.0”說法.

1900/1/1 0:00:00
比特幣:BTC:傳統市場不相關資產VS避險資產_買賣比特幣會坐牢嗎

作者:NateMaddrey,CoinMetricsTeam 翻譯:子銘 來源:加密谷 BTC與傳統金融市場的相關性是在不斷變化的 這些年來,關于BTC價值的說法發生了太多的變化.

1900/1/1 0:00:00
ads