慢雾:Transit Swap 因任意外部调用被黑,2500 BNB 已转移到 Tornado Cash_USD:DOD

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

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

慢雾:DOD合约中的BUSD代币被非预期取出,主要是DOD低价情况下与合约锁定的BUSD将产生套利空间:据慢雾区情报,2022 年 3 月 10 日, BSC 链上的 DOD 项目中锁定的 BUSD 代币被非预期的取出。慢雾安全团队进行分析原因如下:

1. DOD 项目使用了一种特定的锁仓机制,当 DOD 合约中 BUSD 数量大于 99,999,000 或 DOD 销毁数量超过 99,999,000,000,000 或 DOD 总供应量低于 1,000,000,000 时将触发 DOD 合约解锁,若不满足以上条件,DOD 合约也将在五年后自动解锁。DOD 合约解锁后的情况下,用户向 DOD 合约中转入指定数量的 DOD 代币后将获取该数量 1/10 的 BUSD 代币,即转入的 DOD 代币数量越多获得的 BUSD 也越多。

2. 但由于 DOD 代币价格较低,恶意用户使用了 2.8 个 BNB 即兑换出 99,990,000 个 DOD。

3. 随后从各个池子中闪电贷借出大量的 BUSD 转入 DOD 合约中,以满足合约中 BUSD 数量大于 99,999,000 的解锁条件。

4. 之后只需要调用 DOD 合约中的 swap 函数,将持有的 DOD 代币转入 DOD 合约中,既可取出 1/10 转入数量的 BUSD 代币。

5. 因此 DOD 合约中的 BUSD 代币被非预期的取出。

本次 DOD 合约中的 BUSD 代币被非预期取出的主要原因在于项目方并未考虑到 DOD 低价情况下与合约中锁定的 BUSD 将产生套利空间。慢雾安全团队建议在进行经济模型设计时应充分考虑各方面因素带来的影响。[2022/3/10 13:48:45]

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

慢雾:yearn攻击者利用闪电贷通过若干步骤完成获利:2021年02月05日,据慢雾区情报,知名的链上机池yearnfinance的DAI策略池遭受攻击,慢雾安全团队第一时间跟进分析,并以简讯的形式给大家分享细节,供大家参考:

1.攻击者首先从dYdX和AAVE中使用闪电贷借出大量的ETH;

2.攻击者使用从第一步借出的ETH在Compound中借出DAI和USDC;

3.攻击者将第二部中的所有USDC和大部分的DAI存入到CurveDAI/USDC/USDT池中,这个时候由于攻击者存入流动性巨大,其实已经控制CruveDAI/USDC/USDT的大部分流动性;

4.攻击者从Curve池中取出一定量的USDT,使DAI/USDT/USDC的比例失衡,及DAI/(USDT&USDC)贬值;

5.攻击者第三步将剩余的DAI充值进yearnDAI策略池中,接着调用yearnDAI策略池的earn函数,将充值的DAI以失衡的比例转入CurveDAI/USDT/USDC池中,同时yearnDAI策略池将获得一定量的3CRV代币;

6.攻击者将第4步取走的USDT重新存入CurveDAI/USDT/USDC池中,使DAI/USDT/USDC的比例恢复;

7.攻击者触发yearnDAI策略池的withdraw函数,由于yearnDAI策略池存入时用的是失衡的比例,现在使用正常的比例体现,DAI在池中的占比提升,导致同等数量的3CRV代币能取回的DAI的数量会变少。这部分少取回的代币留在了CurveDAI/USDC/USDT池中;

8.由于第三步中攻击者已经持有了CurveDAI/USDC/USDT池中大部分的流动性,导致yearnDAI策略池未能取回的DAI将大部分分给了攻击者9.重复上述3-8步骤5次,并归还闪电贷,完成获利。参考攻击交易见原文链接。[2021/2/5 18:58:47]

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

慢雾: 警惕比特币RBF风险:据BitMEX消息,比特币于区块高度666833出现陈腐区块,并产生了一笔 0.00062063 BTC 的双花交易。根据 BitMEX提供的交易内容来看,双花的两笔交易的nSequence字段的值都小于0xffffffff -1。慢雾安全团队初步认为此次双花交易有可能是比特币中的RBF交易。[2021/1/20 16:38:01]

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

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

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

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

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

水星链

[0:15ms0-0:888ms