Beosin:zkSync生态DEX Merlin安全事件分析
原文来源: Beosin
2023 年 4 月 26 日,据 Beosin-Eagle Eye 态势感知平台消息,Merlin Dex 发生 安全 事件, USDC -WETH 流动性池的资金已全部被提取,攻击者获利共约 180 万美金。 据了解, Merlin Dex 是一个去中心化 交易所 ,关于本次安全事件, Beosin 安全团队第一时间对事件进行了分析,结果如下。
事件相关信息
我们以其中一笔交易为例进行分析
攻击交易
0xf21bedfb0e40bc4e98fd89d6b2bdaf82f0c452039452ca71f2cac9d8fea29ab2
攻击者地址
0xc0D6987d10430292A3ca994dd7A31E461eb28182
0x2744d62a1e9ab975f4d77fe52e16206464ea79b7
被攻击合约
0x82cf66e9a45Df1CD3837cF623F7E73C1Ae6DFf1e(USDC-WETH池子)
攻击流程
1.第一步,池子创建者( 0xc0D6987d10430292A3ca994dd7A31E461eb28182 )创建了工厂合约 ( 0x63E6fdAdb86Ea26f917496bEEEAEa4efb319229F ),在初始化时 Feeto 地址已经被设为 ( 0xc0D6987d10430292A3ca994dd7A31E461eb28182 ) 。
2.攻击者通过工厂合约部署 USDC-WETH 池子( 0x82cf66e9a45Df1CD3837cF623F7E73C1Ae6DFf1e ), 池子初始化时便将池子中的 USDC 和 WETH 最大化授权给了合约工厂的 Feeto 地址,可以看到这存在明显的中心化风险。
3. 于是在有了最大授权的情况下,攻击者转走了该池子中的所有代币。
4. 值得注意的是,在攻击发生之前,工厂合约的 Owner 和 Feeto 地址曾有过改动,但这一步并不是攻击所必须的,猜测可能是攻击者为了迷惑他人所做的操作。
最后可以看到 USDC-WETH 流动性池的资金已全部被提取,攻击者获利共约 180 万美金。
漏洞分析
Beosin 安全团队分析本次攻击主要利用了 pair 合约的中 心化问题,在初始化时最大化授权了工厂合约中的 Feeto 地址,而导致池子中的资金随时可能被初始化时设定的 Feeto 地址提取走。
资金追踪
攻击者调用了 transferFrom 函数从池子转出了 811 K 的 USDC 给攻击者地址 1 ( 0x2744d62a1e9ab975f4d77fe52e16206464ea79b7 )。攻击者 地址 2 ( 0xcE4ee0E01bb729C1c5d6D2327BB0F036fA2cE7E2 )从 token 1 合约(WETH)提取了 435.2 的 eth,通过 Anyswap 跨链后转到以太坊地址( 0xa7D481944730a88B862eB57248Cb1B2C8aa358Ad )和地址( 0x0b8a3ef6307049aa0ff215720ab1fc885007393d )上,共获利约 180 万美元。
截止发文时, Beosin KYT 反洗钱分析平台发现目前被盗资金仍存放在上述攻击者的两个以太坊主网地址上,Beosin 安全团队将持续对被盗资金进行监追踪。
总结
针对本次事件,Beosin 安全团队建议, 项目方应该使用多签 钱包 或 DAO 治理来管理具有重要权限的地址,用户在进行项目交互时也要多多了解此项目是否涉及风险。