据慢雾区情报,2022年01月28日,Qubit项目的QBridge遭受攻击,损失约8000万美金。慢雾安全团队进行分析后以简析的形式分享给大家。
简要分析
1.攻击者通过ETH上的QBridge合约进行存款操作,存款时传入所要跨的目标链destinationDomainID、所要跨链的资产resourceID以及跨链资金数量与接收地址等参数构成的data。
2.攻击者指定传入的resourceID为跨ETHToken所需要的值,但其调用的是QBridge的deposit函数而非depositETH函数,因此首先绕过了跨链资金数量与msg.value的检查。deposit函数会根据resourceID从映射中取出handler地址进行充值,由于攻击者传入的是真实的跨ETHToken所需要的值所以可以顺利调用handler合约的deposit函数。
3.handler合约的deposit函数中会根据resourceID取出的所要充值的Token是否在白名单内进行检查,由于攻击者传入的resourceID对应ETH,因此映射中取出的所要充值的Token为0地址,即会被认为是充值ETH而通过了白名单检查。但deposit函数中却并没有对所要充值的Token地址再次进行检查,随后直接通过safeTransferFrom调用了所要充值的Token的transferFrom函数。
4.由于所要充值的Token地址为0地址,而call调用无codesize的EOA地址时其执行结果都会为true且返回值为空,因此通过transferFrom的转账操作通过了safeTransferFrom的检查,最后触发了Deposit跨链充值事件。
5.由于传入的resourceID为跨ETH所需要的值,因此触发的Deposit事件与真正充值ETH的事件相同,这让QBridge认为攻击者进行了ETH跨链,因此在BSC链上为攻击者铸造了大量的qXETHToken。攻击者利用此qXETH凭证耗尽了Qubit的借贷池。
MistTrack分析
慢雾AML旗下?MistTrack反追踪系统分析发现,攻击者地址(0xd01...5c7)首先从Tornado.Cash提币获取初始资金,随后部署了合约,且该攻击者地址交互的地址是Qubit、PancakeSwap和Tornado.Cash合约地址。目前资金未发生进一步转移。慢雾AML将持续监控被盗资金的转移,拉黑攻击者控制的钱包地址,提醒交易所、钱包注意加强地址监控,避免相关恶意资金流入平台。
总结
本次攻击的主要原因在于在充值普通Token与nativeToken分开实现的情况下,在对白名单内的Token进行转账操作时未对其是否为0地址再次进行检查,导致本该通过native充值函数进行充值的操作却能顺利走通普通Token充值逻辑。慢雾安全团队建议在对充值Token进行白名单检查后仍需对充值的是否为nativeToken进行检查。
参考交易:
https://etherscan.io/tx/0x478d83f2ad909c64a9a3d807b3d8399bb67a997f9721fc5580ae2c51fab92acf
https://bscscan.com/tx/0x33628dcc2ca6cd89a96d241bdf17cdc8785cf4322dcaf2c79766c990579aea02
原文链接
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。