慢雾:3分钟了解 Transit Swap 被盗过程

1年前
标签:Transit Swap、钱包、被盗021073
文章来源: AICoin信息君

10月2日,CertiK监测跨链DEX聚合器Transit Swap遭受攻击,导致用户的资金从钱包中被取出,损失估计约为2000万美元(约49815枚BNB和约5182枚ETH)。该项目目前已暂停运营。

 

随后,Transit Swap官方发布公告称,此前黑客攻击事件原因系代码错误,目前已确定黑客 IP、电子邮件地址,以及相关的链上地址。Transit Swap 团队表示将尽力追踪黑客,并尝试与黑客沟通,帮助用户挽回损失。 

 

据慢雾安全团队情报,跨链 DEX 聚合器 Transit Swap 项目遭到攻击导致用户资产被非预期的转出。慢雾安全团队分析评估此次被盗资金规模超过 2300 万美元,黑客地址为 0x75F2...FD46 和 0xfa71...90fb。接着对此次攻击过程进行了分析:

 

1. 当用户在 Transit Swap 进行 swap 时,会先通过路由代理合约 (0x8785bb...) 根据不同的兑换类型选择不同的路由桥合约。随后路由桥合约 (0x0B4727...) 会通过权限管理合约 (0xeD1afC...) 的 claimTokens 函数将用户待兑换的 Token 转入路由桥合约中。因此在 Token 兑换前用户需要先对权限管理合约 (0xeD1afC...) 进行授权。

 

2. 而 claimTokens 函数是通过调用指定 Token 合约的 transferFrom 函数进行转账的。其接收的参数都由上层路由桥合约 (0x0B4727...) 传入,本身没有对这些参数进行任何限制只检查了调用者必须为路由代理合约或路由桥合约。

 

3. 路由桥合约 (0x0B4727...) 在接收到用户待兑换的 Token 后会调用兑换合约进行具体的兑换操作,但兑换合约的地址与具体的函数调用数据都由上层路由代理合约 (0x8785bb...) 传入,路由桥合约并未对解析后的兑换合约地址与调用数据进行检查。

 

4. 而代理合约 (0x8785bb...) 对路由桥合约 (0x0B4727...) 传入的参数也都来自于用户传入的参数。且代理合约 (0x8785bb...) 仅是确保了用户传入的 calldata 内各数据长度是否符合预期与所调用的路由桥合约是在白名单映射中的地址,未对 calldata 数据进行具体检查。

 

5. 因此攻击者利用路由代理合约、路由桥合约与权限管理合约均未对传入的数据进行检查的缺陷。通过路由代理合约传入构造后的数据调用路由桥合约的 callBytes 函数。callBytes 函数解析出攻击者指定的兑换合约与兑换数据,此时兑换合约被指定为权限管理合约地址,兑换数据被指定为调用 claimTokens 函数将指定用户的 Token 转入攻击者指定的地址中。实现了窃取所有对权限管理合约进行授权的用户的 Token。

 

此次攻击的主要原因在于 Transit Swap 协议在进行 Token 兑换时并未对用户传入的数据进行严格检查,导致了任意外部调用的问题。攻击者利用此任意外部调用问题窃取了用户对 Transit Swap 授权的 Token。

 

截止到目前,黑客已将 2,500 BNB 转移到 Tornado Cash,剩余资金分散保留在黑客地址中。经过黑客痕迹分析发现,黑客存在从 LATOKEN 等平台存提款的痕迹。慢雾 MistTrack 将持续跟进被盗资金的转移以及黑客痕迹的分析。

免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

评论

暂时没有评论,赶紧抢沙发吧!