本次攻击展示了一种高度精密的攻击方式:攻击者不直接攻击合约代码,而是根据 MEV Bot 的业务逻辑,通过构造对应的套利场景,从而误导 MEV Bot 做出看似无问题的授权,最后将其资产转移。
撰文:Beosin
6 月 21 日,以太坊网络上最活跃的 MEV Bot 之一 Jaredfromsubway.eth 遭遇了一次精心设计的「蜜罐攻击」(honeypot attack),损失超过 750 万美元的加密资产。以下是 Beosin 安全团队对此次攻击的分析与被盗资金流向追踪。
通过分析链上交易,攻击者构造了多组诱饵交易:
在小额交易中,机器人授权真实代币额度后,子合约会立即把真实代币转走,授权被消耗,看起来完全正常。
而大额交易中,子合约并不会调用 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 合约此前给子合约留下了额度授权,子合约就可以直接把对应真实代币转给攻击者。
最终结果:
攻击得手后,攻击者地址(0x3e37f4A10d771Ba9dE44b6d301410b1BEdeA65d0)收到 $2.87M USDC、$2.04M USDT 和 1,474 WETH。随后攻击者将稳定币兑换成 ETH 并转移至以下 4 个地址:
其中 0xe3Da3 已转移 1,000 个 ETH 至 Tornado Cash,其它三个地址的 ETH 未有进一步的转移。其资金流向图如下所示:

本次攻击展示了一种高度精密的攻击方式:攻击者不直接攻击合约代码,而是根据 MEV Bot 的业务逻辑,通过构造对应的套利场景,从而误导 MEV Bot 做出看似无问题的授权,最后将其资产转移。对于套利机器人和 MEV Bot 来说,不能只依赖模拟收益判断路线安全,尤其当套利路径中存在陌生合约、伪造 token 或自定义 wrapper 时,应当谨慎并且对交易后的 allowance 变化可考虑进行强制检查。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
