編者按:本文來自慢霧科技,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而言,這次到底發生了什么?細節分析
慢霧:過去一周Web3生態系統因安全事件損失近160萬美元:6月26日消息,慢霧發推稱,過去一周Web3生態系統因安全事件損失近160萬美元,包括MidasCapital、Ara、VPANDADAO、Shido、Slingshot、IPO、Astaria。[2023/6/26 22:00:21]
通過Etherscan查詢攻擊者的其中一筆交易0x32c83905db61047834f29385ff8ce8cb6f3d24f97e24e6101d8301619efee96e
可以發現,攻擊者兩度向Uniswap合約轉帳imBTC,金額同樣是0.00823084,然后從Uniswap收取了兩筆ETH,看上去似乎是十分正常的兩筆交易,實際上卻是暗流涌動,另有玄機。為了更好的了解整一筆交易的細節,我們需要通過bloxy.info來查看交易的具體細節。
慢霧:Transit Swap黑客攻擊交易被搶跑,套利機器人獲利超100萬美元:10月1日消息,據慢霧安全團隊情報,Transit Swap 黑客轉移用戶 BSC 鏈 BUSD 資產時被套利機器人搶跑,區塊高度為21816885,獲利107萬BUSD。套利機器人相關地址列表如下:0xa957...70d2、0x90b5...8ff4、0xcfb0...7ac7、
截止到目前,在各方的共同努力下,黑客已將 70% 左右的被盜資產退還到Transit Swap開發者地址,建議套利機器人所屬人同樣通過service@transit.finance或鏈上地址與Transit Swap取得聯系,共同將此次被盜事件的受害用戶損失降低到最小。[2022/10/2 18:37:44]
通過查詢交易的細節,我們發現,攻擊者首先是通過ethToTokenSwapInput函數向Uniswap兌換了一些imBTC,然后再通過tokenToEthSwapInput函數開始第一次用imBTC換取ETH,然后Uniswap先將ETH轉給了攻擊者,再調用imBTC的transferFrom函數,由于imBTC實現了ERC777標準,所以在調用imBTC的trasferFrom函數的時候,imBTC會對攻擊者的tokensToSend函數進行調用。隨后,在攻擊者的tokensToSend函數中,攻擊者會進行第二次用imBTC換取ETH,然后流程結束。從交易細節上看,這里似乎還是沒有什么問題,我們繼續跟蹤UniSwap的代碼。
慢霧:ERC721R示例合約存在缺陷,本質上是由于owner權限過大問題:4月12日消息,據@BenWAGMI消息,ERC721R示例合約存在缺陷可導致項目方利用此問題進行RugPull。據慢霧安全團隊初步分析,此缺陷本質上是由于owner權限過大問題,在ERC721R示例合約中owner可以通過setRefund Address函數任意設置接收用戶退回的NFT地址。
當此退回地址持有目標NFT時,其可以通過調用refund函數不斷的進行退款操作從而耗盡用戶在合約中鎖定的購買資金。且示例合約中存在owner Mint函數,owner可在NFT mint未達總供應量的情況下進行mint。因此ERC721R的實現仍是防君子不防小人。慢霧安全團隊建議用戶在參與NFTmint時不管項目方是否使用ERC721R都需做好風險評估。[2022/4/12 14:19:58]
上面是代碼是Uniswap的ethToTokenSwapInput函數的代碼,根據代碼分析,Uniswap的ethToTokenSwapInput函數會調用ethToTokenInput函數,然后會先通過getInputPrice獲取代幣能換取的eth數量,之后通過send函數將eth發給用戶,最后再通過transferFrom把代幣轉進合約。我們繼續跟進getInputPrice函數。
慢霧:AToken錢包疑似遭受攻擊 用戶反饋錢包中資產被盜:據慢霧區情報,近期 AToken 錢包(atoken.com)疑似遭受到攻擊,用戶在使用 AToken 錢包后,幣被偷偷轉移走。目前已經有較多的用戶反饋錢包中的資產被盜。AToken 錢包官方推特在2021年12月20日發布了停止運營的聲明。官方 TG 頻道中也有多位用戶反饋使用 AToken 錢包資產被盜了,但是并沒有得到 AToken 團隊的回復和處理。
如果有使用 AToken 錢包的用戶請及時轉移資產到安全的錢包中。具體可以參考如下操作:
1. 立即將 AToken 錢包中的相關的資產轉移到新的錢包中。
2. 廢棄導入 AToken 或者使用 AToken 生成的助記詞或私鑰的錢包。
3. 參考慢霧安全團隊梳理的數字資產安全解決方案,對數字資產進行妥善的管理。
4. 留存相應有問題的 AToken 錢包 APP 的安裝包,用于后續可能需要的取證等操作。
5. 如果資產已經被盜,可以先梳理被盜事件的時間線,以及黑客的相關地址 MistTrack 可以協助挽回可能的一線希望。[2022/2/9 9:39:46]
慢霧:Avalanche鏈上Zabu Finance被黑簡析:據慢霧區情報,9月12日,Avalanche上Zabu Finance項目遭受閃電貸攻擊,慢霧安全團隊進行分析后以簡訊的形式分享給大家參考:
1.攻擊者首先創建兩個攻擊合約,隨后通過攻擊合約1在Pangolin將WAVAX兌換成SPORE代幣,并將獲得的SPORE代幣抵押至ZABUFarm合約中,為后續獲取ZABU代幣獎勵做準備。
2.攻擊者通過攻擊合約2從Pangolin閃電貸借出SPORE代幣,隨后開始不斷的使用SPORE代幣在ZABUFarm合約中進行`抵押/提現`操作。由于SPORE代幣在轉賬過程中需要收取一定的手續費(SPORE合約收取),而ZABUFarm合約實際接收到的SPORE代幣數量是小于攻擊者傳入的抵押數量的。分析中我們注意到ZABUFarm合約在用戶抵押時會直接記錄用戶傳入的抵押數量,而不是記錄合約實際收到的代幣數量,但ZABUFarm合約在用戶提現時允許用戶全部提取用戶抵押時合約記錄的抵押數量。這就導致了攻擊者在抵押時ZABUFarm合約實際接收到的SPORE代幣數量小于攻擊者在提現時ZABUFarm合約轉出給攻擊者的代幣數量。
3.攻擊者正是利用了ZABUFarm合約與SPORE代幣兼容性問題導致的記賬缺陷,從而不斷通過`抵押/提現`操作將ZABUFarm合約中的SPORE資金消耗至一個極低的數值。而ZABUFarm合約的抵押獎勵正是通過累積的區塊獎勵除合約中抵押的SPORE代幣總量參與計算的,因此當ZABUFarm合約中的SPORE代幣總量降低到一個極低的數值時無疑會計算出一個極大的獎勵數值。
4.攻擊者通過先前已在ZABUFarm中有進行抵押的攻擊合約1獲取了大量的ZABU代幣獎勵,隨后便對ZABU代幣進行了拋售。
此次攻擊是由于ZabuFinance的抵押模型與SPORE代幣不兼容導致的,此類問題導致的攻擊已經發生的多起,慢霧安全團隊建議:項目抵押模型在對接通縮型代幣時應記錄用戶在轉賬前后合約實際的代幣變化,而不是依賴于用戶傳入的抵押代幣數量。[2021/9/12 23:19:21]
通過分析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:TOKTOKEKENTOKENTrias Token (new)itoken錢包余額修改器itokenwallet轉trc20需要手續費嗎Chihua Mom Token
2020.4.13第16期本期關鍵字:比特幣減半、幣安集體訴訟、公鏈降格化、穩定幣簡史、N號房搜查令、分叉、防偽溯源國家標準、區塊鏈證照落地、工信部、DeFi、BCH減半、BSV減半.
1900/1/1 0:00:00編者按:本文來自以太坊愛好者,作者:GuillaumeBallet,翻譯&校對:裴奇&阿劍,Odaily星球日報經授權轉載。賬戶和合約存儲數據的方式是影響以太坊的眾多問題之一.
1900/1/1 0:00:00經過一周的震蕩,本周末比特幣和以太坊在幣價上都有了小的突破,回顧近幾天的加密貨幣市場和金融市場,有不少利好消息傳來.
1900/1/1 0:00:00頭條 接近監管人士:央行數字貨幣相關工作一直在做此前有媒體報道稱,央行數字貨幣在農行內測,深圳、雄安、成都、蘇州為試點城市。4月15日開盤后,數字貨幣概念股走強.
1900/1/1 0:00:00編者按:本文來自互鏈脈搏,作者:互鏈脈搏編輯部,Odaily星球日報經授權轉載。4月20日,國家發改委召開例行在線新聞發布會,國家發改委創新和高技術發展司司長伍浩回應外界對新基建的熱議,他表示,
1900/1/1 0:00:00本文來自:哈希派,作者:LucyCheng,星球日報經授權轉發。 2017年無疑是加密貨幣領域的高光時刻.
1900/1/1 0:00:00