時(shí)間:2023-06-12|瀏覽:238
2022年9月18日,在以太幣合拼結(jié)束后,PoW鏈遭受PoS鏈上交易的重放攻擊。攻擊者利用Gnosis鏈的Omni跨鏈橋控制200WETH,并在PoW鏈上重放了同樣的信息,贏得了200ETHW。
根源在于網(wǎng)橋未正確載入并認(rèn)證區(qū)塊鏈的chainid。
SharkTeam對(duì)此展開技術(shù)指標(biāo)分析并總結(jié)安全防護(hù)方式,希望其他新項(xiàng)目能夠以此為戒,共同維護(hù)區(qū)塊鏈行業(yè)的安全防線。
該事件涉及兩種不同鏈的交易hash及其攻擊者詳細(xì)地址:
(1) PoS鏈交易hash:0xbddb0cc8bc9949321e1748f03503ed1a20dd618fbf0a51dc5734c975b1f8bdf5
(2) PoW鏈交易hash:0x9c072551861ce384203516f4d705176a2d2e262d5b571d853467425f1a861fb4
(3) 攻擊者詳細(xì)地址:0x82FaEd2dA812D2E5CCed3C12b3baeB1a522DC677
最初,大家發(fā)現(xiàn)幾筆交易瀏覽的合約相同,inputdata完全一致,即啟用了同一個(gè)合約的同一個(gè)函數(shù)公式且主要參數(shù)相同。依據(jù)同樣的方法簽名ID0x23caab49得知,攻擊者調(diào)用safeExecuteSignaturesWithAutoGasLimit函數(shù)。
因此,攻擊者利用OmniBridge遷移了200WETH,并在PoW鏈上重放了同樣的Inputdata,贏得了額外200ETHW。
但對(duì)于此事,有人持懷疑態(tài)度。因?yàn)橐蕴痪W(wǎng)絡(luò)在硬分叉以前就強(qiáng)制實(shí)行EIP-155,導(dǎo)致ETHPoS鏈上交易不可在PwO鏈上重復(fù)交易。在正常交易中,可通過nonce進(jìn)行篩選交易,防止重復(fù)交易。在跨鏈中,我們可依據(jù)chianid開展鑒別鏈的種類,例如以太幣主網(wǎng)上線的chainid是1,ETHW主網(wǎng)上線的chainid是10001。
SharkTeam闡述了OmniBridge對(duì)應(yīng)的源代碼,也查看了OmniBridge認(rèn)證chainid的邏輯性。發(fā)現(xiàn),chainid來源于unitStorage中儲(chǔ)存數(shù)值,而非根據(jù)操作碼CHAINID(0x46)立即載入的鏈上chainid。
unitStorage是合約EternalStorage里的初始條件,sourceChainId函數(shù)公式所屬的合約BasicAMB繼承BasicBridge和VersionableAMB。其中,BasicBridge相繼繼承合約EternalStorage。這兒儲(chǔ)存的chainid是事先儲(chǔ)存好的,如果出現(xiàn)區(qū)塊鏈的硬分叉且chainid未重設(shè)或chainid人為因素設(shè)定不正確,沒有根據(jù)操作碼獲得的chainid將無法恰當(dāng)認(rèn)證跨鏈信息的具體chainid。攻擊者可利用這種系統(tǒng)漏洞進(jìn)行攻擊。
難題梳理總結(jié):Omni應(yīng)用的solidity版原是0.4.24,使用的是手動(dòng)式儲(chǔ)存和更新chainid的方法,并沒有根據(jù)EIP-1344所規(guī)定的CHAINID(0x46)操作碼開展具體chainid獲得。
引起此次安全性事件的原因是因?yàn)樵赑oW更新PoS環(huán)節(jié)中,OmniBridge對(duì)chainid未妥善處理。過舊的solidity版本里,存有歷史遺留問題。建議在后期新項(xiàng)目迭代更新中,采用必要的代碼設(shè)計(jì)對(duì)策以解決新情況。盡管Gnosis鏈上OmniBridge有每天最大遷移貨幣數(shù)量限制250個(gè)WETH,但仍需提高警惕,以避免積少成多,導(dǎo)致更多的損害。
SharkTeam旨在全方位維護(hù)Web3全球的安全性。團(tuán)隊(duì)由遍布北京、南京、蘇州、美國(guó)硅谷的安全性專業(yè)人員和研究人員構(gòu)成,熟悉區(qū)塊鏈和智能合約的最底層基礎(chǔ)理論,提供專業(yè)的智能合約審計(jì)、鏈上剖析和應(yīng)急處置等服務(wù)。已與OKC、polygon、HuobiGlobal、Polkadot、imToken、ChainIDE等區(qū)塊鏈生態(tài)體系的重要參與者建立了合作關(guān)系。
聯(lián)系方式:
Telegram:https://t.me/sharkteamorg
Twitter:https://twitter.com/sharkteamorg
了解更多區(qū)塊鏈安全咨詢和分析,請(qǐng)?jiān)L問:
鏈上風(fēng)險(xiǎn)性審查https://m.chainaegis.com
轉(zhuǎn)載:駝鳥區(qū)塊鏈