事件背景
零时科技区块链安全情报平台监控到消息,北京时间2022年10月27日,TrustSwap项目遭受黑客攻击,影响金额至少约779万美元(880.2554ETH和6429327.65DAI)。此外,本次攻击还盗取了CAW和TSUKA代币,价值约550万美元。攻击者地址为 0x161cebb807ac181d5303a4ccec2fc580cc5899fd,漏洞合约为0x48D118C9185e4dBAFE7f3813F8F29EC8a6248359。零时科技安全团队及时对此安全事件进行分析。
漏洞核心
攻击者调用LockToken函数锁定令牌获得id用于后续攻击
攻击者通过调用LockToken合约中migrate函数迁移流动性,此时传入的id值为之前锁定令牌时获得的id,因此攻击者可以通过对于lockerc20地址的验证
进行资金迁移之后将剩余资金返回LockToken合约
由于新建池子的价格由用户自己控制,攻击者通过设置sqrtPricex96造成价格差
在V2中交易对的余额
在V3中计算获得的应添加的数量
将剩余的资金退还给攻击者
在这一步攻击中攻击者获利约601ETH
资金来源及流向
攻击者初始资金由FixedFloat转入
资金流向
攻击者将资金转移至地址 0xBa399a2580785A2dEd740F5e30EC89Fb3E617e6E 目前资金无进一步移动
总结及建议
本次攻击是由于攻击者能够通过执行锁定代币获得ID来绕过检测,将流动性转移至攻击者控制的V3交易对中,并且新的交易对创建的池子价格由攻击者控制,资金迁移后剩余资金转移给用户,因此攻击者能够设置池子价格在资金迁移后获得巨额剩余。
安全建议
- 建议对于转移流动性时添加对于新池子的初始价格的判断,避免在进行资金迁移时有巨额资金剩余。
- 建议项目方上线前进行多次审计,避免出现审计步骤缺失