零时科技 || CloberDEX 攻击事件分析
2024-12-25 07:51
零时科技
2024-12-25 07:51
订阅此专栏
收藏此文章


背景介绍


近期,我们监控到一起针对 Base 上的项目 CloberDEX 的链上攻击事件,

https://basescan.org/tx/0x8fcdfcded45100437ff94801090355f2f689941dca75de9a702e01670f361c04


被攻击的项目为 CloberDEX ,攻击者通过此次攻击获利约为 133 ETH ,约为 500,000 USD 。该项目的主要功能如下:open 开一个新交易池包含 A 到 B 和 B 到 A 的交易对,同样每个交易对包含预设的交易策略;mint 为给交易对添加流动性并获得 LP Token ;burn 为销毁 LP Token 获得对应的货币。  



攻击及事件分析


首先,攻击者从 Morpho Blue 中利用 flashloan 借贷了 267 个 WETH,



接着,攻击者使用 open 在 CloberDEX 开了两个交易对分别是 Token/WETH 和 WETH/Token ,其中, Token 为攻击者自行部署的合约。



然后,攻击者利用 mint 分别向刚开的交易对中转入 267 WETH 和 267 Token ,用于添加流动性并获取 LP Token。



至此,都没问题。最后,攻击者利用 burn 销毁刚获得的 LP Token,我们看一下 burn 的具体实现; 



控制流走向了 lock 函数,同样,我们看一下 lock 的具体实现;



可以看到,lock 函数中又把 bytes caldata data 传向了 lockAcquired 函数,我们继续看该函数的实现;



我们发现这行代码 



我们可以看到,该代码调用的函数由 data 决定。那么 data 的前四字节此时为 _burn 的签名,所以本质上 burn 调用了 _burn 。 



我们可以看到, _burn 又调用了 pool.strategy.burnHook(msg.sender, key, burnAmount,supply) ,而且,针对 pool 的 reserver 的处理又在该代码之后。所以,问题出现在这里,交易对对应的 pool 的 strategy 合约的地址可以由攻击者控制。在此次攻击中,攻击者将该地址写为自己的攻击合约地址即:0x32fb1bedd95bf78ca2c6943ae5aeaeaafc0d97c1

当合约流程走到了攻击合约的 BurnHook 中后,又继续调用 burn 完成重入攻击。 



攻击者通过该漏洞取出了投入的 264 个 WETH 和 CloberDEX 合约中的 133 个 WETH ,在归还 flashloan 的贷款后获利 133.7 ETH ,约为 500,000 USD 。



总结


本次漏洞成因主要是因为 CloberDEX 项目方合约在获取销毁 LP Token 的代码中没有进行重入检测和防护,且更新状态变量在合约调用之后,最终导致攻击者利用该重入漏洞掏空项目方的 WETH 。建议项目方在设计经济模型、价格计算机制和代码运行逻辑时要多方验证,合约上线前审计时尽量选择多个审计公司交叉审计。 





若需了解更多产品信息或有相关业务需求,可扫码关注公众号或移步至官网:


微信号noneage

官方网址https://noneage.com/





推荐阅读

REVIEW




END





点击阅读全文 立刻直达官网

     /www.noneage.com/    


【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

在 App 打开
特朗普
空投
rwa
稳定币
babylon
以太坊
wayfinder
wct
morph
香港
hyperliquid
wal