據慢霧區情報,2022 年01 月28 日,Qubit 項目的QBridge 遭受攻擊,損失約8000 萬美金。慢霧安全團隊進行分析後以簡析的形式分享給大家。
簡要分析
1. 攻擊者通過ETH 上的QBridge 合約進行存款操作,存款時傳入所要跨的目標鏈destinationDomainID、所要跨鏈的資產resourceID 以及跨鏈資金數量與接收地址等參數構成的data。
2. 攻擊者指定傳入的resourceID 為跨ETH Token 所需要的值,但其調用的是QBridge 的deposit 函數而非depositETH 函數,因此首先繞過了跨鏈資金數量與msg.value 的檢查。 deposit 函數會根據resourceID 從映射中取出handler 地址進行充值,由於攻擊者傳入的是真實的跨ETH Token 所需要的值所以可以順利調用handler 合約的deposit 函數。
3. handler 合約的deposit 函數中會根據resourceID 取出的所要充值的Token 是否在白名單內進行檢查,由於攻擊者傳入的resourceID 對應ETH,因此映射中取出的所要充值的Token 為0 地址,即會被認為是充值ETH 而通過了白名單檢查。但deposit 函數中卻並沒有對所要充值的Token 地址再次進行檢查(充值ETH 應該是要通過depositETH 函數進行跨鏈),隨後直接通過safeTransferFrom 調用了所要充值的Token 的transferFrom 函數。
4. 由於所要充值的Token 地址為0 地址,而call 調用無code size 的EOA 地址時其執行結果都會為true 且返回值為空,因此通過transferFrom 的轉賬操作通過了safeTransferFrom 的檢查,最後觸發了Deposit跨鏈充值事件。
總結
MistTrack 分析
總結
總結
原文鏈接
原文鏈接
https://etherscan.io/tx/0x478d83f2ad909c64a9a3d807b3d8399bb67a997f9721fc5580ae2c51fab92acf
https://bscscan.com/tx/0x33628dcc2ca6cd89a96d241bdf17cdc8785cf4322dcaf2c79766c990579aea02