QBridge 被黑简析:8000 万美元不翼而飞_Aavegotchi:CHI

据慢雾区情报,2022 年 01 月 28 日,Qubit 项目的 QBridge 遭受攻击,损失约 8000 万美金。慢雾安全团队进行分析后以简析的形式分享给大家。

简要分析

1. 攻击者通过 ETH 上的 QBridge 合约进行存款操作,存款时传入所要跨的目标链 destinationDomainID、所要跨链的资产 resourceID 以及跨链资金数量与接收地址等参数构成的 data。

公告 | QBTC交易所上线QC交易区 ?:据QBTC.INK官方消息,QBTC交易所于2020年02月20日上线QC交易区。目前在QBTC.INK、ZBG.COM、ZB.COM、BW.IO等交易所均已上线,可互相兑换。

QC,全称为Qcash,是基于量子链智能合约的数字货币,由Qcash基金会发行的独立数字货币。其价格为0.15美元(约1RMB?)。QC基金会根据数字货币抵押的形式使其中一部分可以变成流通。流通出的QC按照100%的价值抵押,抵押品可以为BTC、ETH、LTC、QTUM?等中的一种,所有用户参与抵押和公开展示。抵押品均匀分配,抵押统一由基金会掌握。[2020/2/20]

2. 攻击者指定传入的 resourceID 为跨 ETH 代币所需要的值,但其调用的是 QBridge 的 deposit 函数而非 depositETH 函数,因此首先绕过了跨链资金数量与 msg.value 的检查。deposit 函数会根据 resourceID 从映射中取出 handler 地址进行充值,由于攻击者传入的是真实的跨 ETH 代币所需要的值所以可以顺利调用 handler 合约的 deposit 函数。

行情 | 匿名币项目Sumo在QBTC平台成交量大幅增长:非小号数据显示,近期匿名币项目Sumo在QBTC平台成交量大幅增长,昨日Sumo总成交量达到111.81万元。分析师表示,匿名币项目成交量的增长或与近期国际局势的动荡有关。[2020/1/6]

3. handler 合约的 deposit 函数中会根据 resourceID 取出的所要充值的代币是否在白名单内进行检查,由于攻击者传入的 resourceID 对应 ETH,因此映射中取出的所要充值的代币为 0 地址,即会被认为是充值 ETH 而通过了白名单检查。但 deposit 函数中却并没有对所要充值的代币地址再次进行检查(充值 ETH 应该是要通过 depositETH 函数进行跨链),随后直接通过 safeTransferFrom 调用了所要充值的代币的 transferFrom 函数。

动态 | Bloqboard 及 LoanScan 团队推出集成银行服务的 Defi 应用 Linen:曾建立基于以太坊的借贷平台 Bloqboard 和借贷数据提供商 LoanScan 的团队正在推出一款集成银行服务的 Defi 应用 Linen。Bloqboard 兼 Linen 创始人 Vitaly Bahachuk 表示,Linen 旨在减少借贷过程对多个 DApp 的需求,精简贷款流程从而降低风险。Linen 将集成传统银行服务,例如存款、储蓄、借记卡功能和汇款,并引入基于以太坊的借贷协议(例如 Compound),目前借贷服务已经支持 USDC,并将计划支持 DAI。Linen 近期完成新一轮未公开的融资,新的投资者包括加密货币支付提供商 Wyre 和 Hashkey,此前 Linen 投资者包括 Polychain Capital 和 Coinbase 等机构。Bahachuk 表示 Hashkey 的投资具有战略意义,Linen 希望向亚洲敞开大门,Hashkey 是该地区的主要投资者之一。[2019/9/21]

4. 由于所要充值的代币地址为 0 地址,而 call 调用无 code size 的 EOA 地址时其执行结果都会为 true 且返回值为空,因此通过 transferFrom 的转账操作通过了 safeTransferFrom 的检查,最后触发了 Deposit 跨链充值事件。

交易平台QBTC宣布开启C2C服务:QBTC将在3月30日下午6点开启C2C服务,用户可以再网页登陆,点击“资产”找到“CNYT”。[2018/4/2]

5. 由于传入的 resourceID 为跨 ETH 所需要的值,因此触发的 Deposit 事件与真正充值 ETH 的事件相同,这让 QBridge 认为攻击者进行了 ETH 跨链,因此在 BSC 链上为攻击者铸造了大量的 qXETH 代币。攻击者利用此 qXETH 凭证耗尽了 Qubit 的借贷池。

MistTrack 分析

慢雾 AML 旗下 MistTrack 反追踪系统分析发现,攻击者地址(0xd01...5c7)首先从 Tornado.Cash 提币获取初始资金,随后部署了合约,且该攻击者地址交互的地址是 Qubit、PancakeSwap 和 Tornado.Cash 合约地址。目前资金未发生进一步转移。慢雾 AML 将持续监控被盗资金的转移,拉黑攻击者控制的钱包地址,提醒交易所、钱包注意加强地址监控,避免相关恶意资金流入平台。

总结

本次攻击的主要原因在于在充值普通代币与 native 代币分开实现的情况下,在对白名单内的代币进行转账操作时未对其是否为 0 地址再次进行检查,导致本该通过 native 充值函数进行充值的操作却能顺利走通普通代币充值逻辑。慢雾安全团队建议在对充值代币进行白名单检查后仍需对充值的是否为 native 代币进行检查。

参考交易:

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

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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-8:427ms