损失超750万美元:针对MEV Bot的蜜罐攻击分析与被盗资金追踪
6月21日,以太坊网络上最活跃的MEV Bot之一 Jaredfromsubway.eth 遭遇了一次精心设计的“蜜罐攻击”(honeypot attack),损失超过750万美元的加密资产。以下是Beosin安全团队对此次攻击的分析与被盗资金流向追踪。
攻击流程分析
攻击合约族
- 协调器合约(0xb84db016324e8f2bfdd8dd9c260338aee0a8df52):负责记录当前区块是否处于 armed 状态,并在最终阶段循环调用子合约提取资金。- 触发器合约(0x4de8c729a064ff6087cc84a4152969349e4feb98):负责在同一区块内设置伪造的交易对状态,使套利路径看起来可执行。- 子合约 / 假代币合约:伪装成正常的 ERC-20 代币,用于获得真实的授权- Hub合约:负责支付少量真实收益,让MEV Bot觉得有利可图。- Ring V2 pair:伪造的Uniswap v2交易对。- 假中间代币合约:用于构造多跳套利路径,如 fCAP、fUSDC。
攻击的关键:诱骗授权
通过分析链上交易,攻击者构造了多组诱饵交易:
- 大额 USDC:机器人盈利约 36.997120 USDC,但留下 20 个 USDC 授权。- 大额 USDT:机器人盈利约 37.053440 USDT,但留下 20 个 USDT 授权。- 大额 WETH:机器人盈利约 0.0179 WETH,但留下 16 个 WETH 授权。- 小额交易则表现正常,授权在同一交易内被消耗,用于降低怀疑。
在小额交易中,机器人授权真实代币额度后,子合约会立即把真实代币转走,授权被消耗,看起来完全正常。
而大额交易中,子合约并不会调用 transferFrom 转移真实的代币,而是直接通过伪造交易对铸造假的代币。机器人以为自己完成了正常的 swap 前置步骤,但真实的代币授权仍然被保留。
这就是整个攻击的核心:小额交易正常消耗授权,大额交易保留授权。
攻击流程
以针对 USDC 的攻击交易为例:
(1)攻击者调用协调器,将当前区块设为 armed(2)攻击者调用触发器,更新多个伪造 Ring V2 pair 的状态(3)MEV Bot发现套利机会并执行交易
MEV Bot 交易内部大致流程如下:
(1)MEV Bot合约向某个子合约授权了大额的USDC额度(2)MEV Bot调用子合约的wrapTo/wrap函数(3)子合约因为当前状态为 armed,不消耗真实 USDC,而是向 pair 铸造假代币,USDC授权被保留(4)MEV Bot继续调用伪造 pair 的 swap(5)第二跳 pair 将代币发给MEV Bot(6)hub 合约向MEV Bot支付少量真实 USDC 利润
approval example
tx hash: 0x0121e07a916c06eea3e7daf11893f3f0b95b9e1684124545ae14c32aee6029bb
MEV Bot看到的结果:一笔成功的套利交易,获得了真实的USDC利润。但USDC的授权被子合约保留了下来。这类流程分别针对 USDC、USDT、WETH 重复执行,最终形成大量授权。
攻击交易哈希为:
0x2be8704f5a59b69e0b71f64aefdb99eb0e8ae9fb3926147c581910d71bcf3e65
攻击者调用协调器合约的drain loop,calldata 中包含 66 个子合约地址,以及MEV Bot合约地址。只要MEV Bot合约此前给子合约留下了额度授权,子合约就可以直接把对应真实代币转给攻击者。
最终结果:
- 20 个 USDC 大额授权被全部消耗- 16 个 WETH 大额授权被全部消耗- USDT的部分授权额度仍存在,但USDT余额已不足
资金流向分析
攻击得手后,攻击者地址(0x3e37f4A10d771Ba9dE44b6d301410b1BEdeA65d0)收到$2.87M USDC、$2.04M USDT和1,474 WETH。随后攻击者将稳定币兑换成ETH并转移至以下4个地址:
- 0xe3Da36E4bd1a5738fa5D6Ef4F0e4dF40bDeB5f17(约1,000 ETH)- 0x74Dc5b93586D248D5Aec64b3586736FF0A0D0e65(1,001 ETH)- 0xd8C125efCBc99408eC8723E9BBd81d1E8D39D845 (1,001 ETH)- 0x71d4416A7A85e08a5Fe7227Ca3B44Fc639e94e97(1,423 ETH)
其中0xe3Da3已转移1,000个ETH至Tornado Cash,其它三个地址的ETH未有进一步的转移。其资金流向图如下所示:
结语
本次攻击展示了一种高度精密的攻击方式:攻击者不直接攻击合约代码,而是根据MEV Bot的业务逻辑,通过构造对应的套利场景,从而误导MEV Bot做出看似无问题的授权,最后将其资产转移。对于套利机器人和 MEV Bot来说,不能只依赖模拟收益判断路线安全,尤其当套利路径中存在陌生合约、伪造 token 或自定义 wrapper 时,应当谨慎并且对交易后的allowance变化可考虑进行强制检查。
查看原文