事件背景

零时科技区块链安全情报平台监控到消息,北京时间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交易对中,并且新的交易对创建的池子价格由攻击者控制,资金迁移后剩余资金转移给用户,因此攻击者能够设置池子价格在资金迁移后获得巨额剩余。

安全建议

  • 建议对于转移流动性时添加对于新池子的初始价格的判断,避免在进行资金迁移时有巨额资金剩余。
  • 建议项目方上线前进行多次审计,避免出现审计步骤缺失