Nomad Bridge漏洞利用被竊取1.9億美元
Nomad Bridge漏洞利用事件分析,被竊取1.9億美元。
Nomad Bridge是一個區(qū)塊鏈加密貨幣跨鏈平臺,支持以太坊、Moonbeam、Avalanche、Evmos和Milkomeda等幣種的跨鏈資產(chǎn)轉(zhuǎn)移。2022年8月1日,Nomad bridge經(jīng)歷漏洞利用,引發(fā)價值1.9億美元資產(chǎn)損失。該漏洞是初始化過程中,“committedRoot”被設(shè)置為0引發(fā)的。因此,攻擊者可以繞過消息驗證過程,并從跨鏈合約中竊取token。
Nomad Bridge簡介
Nomad Bridge是一個區(qū)塊鏈加密貨幣跨鏈協(xié)議,允許用戶在不同區(qū)塊鏈之間實(shí)現(xiàn)資產(chǎn)的轉(zhuǎn)移。此外,資產(chǎn)發(fā)行者還可以跨鏈部署token,開發(fā)者還可以通過Nomad構(gòu)建原生跨鏈應(yīng)用。Nomad的目標(biāo)是使用戶和開發(fā)者能夠安全地交互。Nomad支持Avalanche (AVAX)、Ethereum (ETH)、Evmos (EVMOS)、Milkomeda C1和Moonbeam (GLMR)之間的token資產(chǎn)轉(zhuǎn)移。
漏洞利用事件分析
8月1日,Nomad bridge在升級過程中遭遇了漏洞利用。漏洞是初始化過程中,“committedRoot”被設(shè)置為0引發(fā)的,攻擊者可以繞過消息驗證過程,濫用copy/paste交易發(fā)起攻擊。具體來說,用戶通過復(fù)制原始黑客交易的calldata,并替換為個人的原始地址。然后該交易會被處理,并從Nomad bridge移除資金。在4個小時時間內(nèi),黑客、僵尸主機(jī)和其他社區(qū)成員不斷重復(fù)該攻擊,并成功竊取Nomad bridge幾乎所有資金,總計約1.9億美元。
漏洞利用交易
攻擊示例:
以太坊接收100 WBTC轉(zhuǎn)賬0xa5fe9
https://etherscan.io/tx/0xa5fe9d044e4f3e5aa5bc4c0709333cd2190cba0f4e7f16bcf73f49f83e4a5460
多個攻擊交易:
攻擊流
以交易0xa5fe9為例:
攻擊者調(diào)用函數(shù);
在process函數(shù)中,會調(diào)用acceptableRoot(messages[_messageHash]),這是用來檢查root是否提交,以及timeout是否過期的。本例中messages[_messageHash]是0x000。
函數(shù)acceptableRoot(messages[_messageHash])返回true,消息就被證明了。在初始化時設(shè)置為0x0000,因此是true(這也是部署時的錯誤所在)。
消息經(jīng)過證明后,攻擊者就可以向其他鏈轉(zhuǎn)賬。
漏洞
初始化階段
Replica合約在交易0x53fd9中被錯誤地初始化了,其中“committedRoot”被初始化為0。
攻擊階段
因此,攻擊者可以直接以任意“_message”調(diào)用“process(byte memory _message)”函數(shù),實(shí)現(xiàn)驗證繞過。
合約地址: 0x88a69
該函數(shù)處理確保消息哈希通過檢查得到證明。
該函數(shù)會檢查root是否經(jīng)過證明、處理和確認(rèn)。
在初始化交易0x53fd9中,所有者發(fā)送0,這些root會被設(shè)置為1。
因此,0會在0xb9233被檢查。
根據(jù)prove函數(shù)的實(shí)現(xiàn),未經(jīng)證明的消息的root也是0,因此0會被認(rèn)為是一個有效的經(jīng)過確認(rèn)的root,可以繞過檢查。攻擊者只需發(fā)送交易給Nomad Bridge,就可以獲得對應(yīng)token。
資產(chǎn)追蹤
累計有大約價值1.9億美元的token從Nomad Bridge被轉(zhuǎn)出。