作者: CertiK

北京時間2022年2月6日,Meter Passport跨鏈橋項目被惡意利用,造成420萬美元的損失。

項目方發布的推特原文:

這是繼昨日CertiK發布的Solana跨鏈橋蟲洞項目被攻擊事件分析後的又一起黑客襲擊跨鏈橋項目事件。

漏洞利用交易

虛假存款:

https://bscscan.com/tx/0x63f37aff7e40b85b0a6b3fd414389f6011cc09b276dc8e13b6afa19061f7ed8e

https://etherscan.io/tx/0x2d3987963b77159cfe4f820532d729b0364c7f05511f23547765c75b110b629c

https://bscscan.com/tx/0xc7eb98e00d21ec2025fd97b8a84af141325531c0b54aacc37633514f2fd8ffdc

https://etherscan.io/tx/0xdfea6413c7eb3068093dcbbe65bcc9ba635e227c35e57fe482bb5923c89e31f7

https://bscscan.com/tx/0x5d7cd17bfeb944390667c76f4fc2786f748dc3eb363c01c24b92becaaf5690b4

鑄幣:

https://bscscan.com/tx/0xf70b4aa715c0a04079c56cd9036cc63cdb6101e400520a8f2c019ad2ced5358e

https://moonriver.moonscan.io/tx/0x689ff22ebf7f7aa6ecf0d60345979855442a09dfb7439c8553b2369e6e130409

https://etherscan.io/tx/0xd619ace8a8cca2f7eb72dbc0a896fc2d4d8b20aa11f4d747f1a5333305bbb875

https://moonriver.moonscan.io/tx/0xc7f764644e9af42714d98763b7e8dcf5e1de6b855b63e2c6ff2438e09b61ccc7

黑客

黑客鏈上轉賬記錄:

https://debank.com/profile/0x8d3d13cac607b7297ff61a5e1e71072758af4d01/history

轉賬地址:

0x8d3d13cac607b7297ff61a5e1e71072758af4d01

合約地址

Bridge

以太坊:

https://etherscan.io/address/0xa2a22b46b8df38cd7c55e6bf32ea5a32637cf2b1

幣安智能鏈:

https://bscscan.com/address/0xfd55ebc7bbde603a048648c6eab8775c997c1001

Moonriver (moonbream):

https://moonriver.moonscan.io/address/0xf41e7fc4ec990298d36f667b93951c9dba65224e

ERC20Handler

Ethereum:

https://etherscan.io/address/0xde4fc7c3c5e7be3f16506fcc790a8d93f8ca0b40

BSC:

https://bscscan.com/address/0x5945241bbb68b4454bb67bd2b069e74c09ac3d51

攻擊流程

步驟一:

攻擊者調用`Bridge.deposit()`函數,將0.008BNB存入連接到多個鏈的合約Bridge,包括幣安智能鏈、以太坊以及Moonriver(兩次)。

在函數調用`Bridge.deposit()中,攻擊者註入了以下惡意數據:

步驟二:

`Bridge.deposit()`調用了`ERC20Handler.deposit()`函數,輸入內容如下:

步驟三:

由於輸入的resourceID是'0x000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c01”,token地址將為`0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c`,這與`_wtokenAddress`相同。

步驟四:

這種情況下,一旦該指令通過,將導致攻擊者實際上不需要向合約轉移任何代幣即可獲得。

步驟五:

因此,攻擊者可以在其他鏈上鑄造'數據'中指定的任何相同數量的代幣。

合約漏洞分析

一般來說deposit()用於ERC20代幣的存款,depositETH()用於WETH/WBNB代幣的存款。

Bridge合約提供了兩個方法:deposit()和depositETH()。然而,這兩個方法造成了相同事件,並且deposit() 函數並沒有阻止WETH/WBNB的存款交易,因為deposit()沒有燒毀或鎖定WETH/WBNB。黑客通過使用deposit()來製作假的存款事件,在沒有任何真實存款的情況下,將WETH/WBNB存入。

資產追踪

黑客地址:

https://debank.com/profile/0x8d3d13cac607b7297ff61a5e1e71072758af4d01/history

幾乎所有的資產都已轉移到Tornado。

總結

這一事件與前不久發生的Qubit事件非常相似。一個黑客事件的發生往往會使更多別有用心之人關注類似項目中是否有類似的漏洞可以利用。

因此,項目方的技術團隊應及時關注已發生的安全事件,並且檢查自己的項目中是否存在類似問題。