被盜約330萬美元 跨鏈互操作協議Socket如何遭受黑客call注入攻擊?
來源:Beosin
2024年1月17日,據Beosin旗下EagleEye安全風險監控、預警與阻斷平臺監測顯示, Socket協議遭受攻擊者call注入攻擊,導致大量授權用戶資金被盜。目前攻擊者將被盜資金兌換為ETH,並保存在攻擊者地址上。
攻擊發生之後, Socket官方確認被攻擊,並第一時間暫停受影響的合約。
同時,MetaMask在X平臺發文稱, MetaMask Bridge用戶不受今天發生的Socket漏洞的影響。MetaMask稱設計跨鏈橋合約時採用了獨特的架構,旨在防範此類攻擊。
關於本次攻擊,Beosin安全團隊對本次漏洞進行了分析。
漏洞分析
該事件發生的主要原因是 Socket合約的performAction函數存在不安全的call調用。 如下圖,該函數的基本功能是將用戶的ETH和WETH進行轉換,如果調用者選擇fromToken為ETH,那么將會查詢合約的toToken(WETH)余額,隨後通過call調用toToken(正常邏輯下,此處必須調用WETH的deposit函數),並轉入用戶指定的ETH數量,接下來查詢合約的toToken(WETH)新余額,如果等於轉入用戶指定的ETH數量,那么通過,並將toToken轉給調用者指定地址。如果調用者選擇fromToken不為ETH,那么與上述同理,函數功能就是將調用者的WETH兌換成ETH(正常情況下,call調用必須是調用WETH的withdraw函數)並發送給用戶指定地址。
雖然函數中並沒有對fromToken與toToken進行任何檢查限制,但是除了傳入WETH地址,其他ERC20地址都將導致余額檢查失敗,從而無法僞造這兩個參數,間接將token地址限制為WETH。
雖然對token地址有所限制,但是該函數還存在一個問題,便是未對amount進行限制,如果調用者傳入的amount為0,則函數的檢查條件將恆通過,並不需要調用WETH的deposit與withdraw函數。 此時便可以在call中注入異常的數據,從而達到攻擊的目的。
攻擊流程
明白了函數問題點,我們來看看攻擊者是如何實施攻擊的。
1.攻擊者首先創建了一個攻擊合約。
2.隨後,攻擊者多次查詢不同地址的WETH余額,並且查詢該地址對於Socket: Gateway合約的授權數量,最後調用Socket: Gateway合約。
3.可以看到,這裏調用performAction函數的時候,swapExtraData參數傳入的是0x23b872dd...,該數據是transferfrom的函數籤名,說明這裏將直接調用token的transferfrom函數。
4.可以看到,攻擊者傳入fromToken為WETH,amount正是我們上述的0,合約將攻擊者的WETH轉入合約,但轉的是0,而在call調用中,攻擊者指定一個用戶地址向攻擊者轉了16枚WETH。
5.攻擊者通過大量操作,將無數用戶的WETH轉移給自己。
6.攻擊者使用相同的方式,將授權給該合約的USDT轉移給自己。
7.還包括WBTC、DAI以及MATIC三種代幣。
截止發稿,被盜的近330萬美元的資金,部分被攻擊者兌換為了ETH,並且一直存在黑客地址未移動,Beosin Trace將對被盜資金進行持續監控。
目前,互操作性協議Socket在X平臺發布安全事件更新:Socket現已恢復運營,受影響的合約已暫停,損害已得到完全控制。在Bungee的橋接以及其大多數合作夥伴前端的橋接已經恢復。詳細的事件分析和後續步驟將很快公布。
Socke提醒道: “小心回復中試圖對您進行網絡釣魚的虛假Socket帳戶。在採取任何行動之前,請務必仔細檢查帳戶。”
本次事件也再次提醒各位,安全不可掉以輕心。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
歐盟打響穩定幣战爭:21家發行商爭奪,Circle搶先登陸,Tether扶持“代理人”
作者:Weilin,PANews 歐盟《加密資產市場監管法案》(MiCA)對穩定幣發行方的監管規則...
Fractal Bitcoin分形比特幣深度研究報告:原生擴展的比特幣高速公路,重新定義比特幣的可能性
比特幣網絡擴展問題一直是區塊鏈領域的核心話題。從最初的隔離見證(SegWit)到閃電網絡(Ligh...
Stacks完成Nakamoto升級,BTC DeFi會是下一個關注點嗎?
當比特幣突破 9 萬美金,加密市場各個生態都开始了自己的狂歡。 AI 敘事持續火熱,Meme 持續...
Beosin
文章數量
65粉絲數
0