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 变化可考虑进行强制检查。
拓展阅读:
疯狂的 BOME 热潮,解析 Solana Meme 热背后的 MEV 问题
遭遇“黑吃黑”?MEV 机器人损失 2500 万美元攻击事件分析
Beosin 作为全球最早一批从事形式化验证的区块链安全公司,主打”安全 + 合规“全生态业务,在全球 10 多个国家和地区设立了分部,业务涵盖项目上线前的代码安全审计、项目运行时的安全风险监控与阻断、被盗追回、虚拟资产反洗钱(AML)以及符合各地监管要求的合规评估等“一站式”区块链合规产品 + 安全服务。欢迎点击公众号留言框,与我们联系。
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
