我们检测到 Mode Chain 上针对 Ionic Money 的一系列攻击,本次攻击共损失约 8.5 MUSD 。
<!--StartFragment-->
近期,我们检测到 Mode Chain 上针对 Ionic Money 的一系列攻击:
https\://explorer.mode.network/tx/0x37e53b15cb7f298bd8c45fcbbd914ba90feb3946f5511fc55bc986b7472956df
Ionic Money 是一个 compound fork 的 DeFi 项目,其在 Base 、 Optimism 、 Bob 、 Fraxtal 、Lisk 、 Mode 上均提供服务。本次是在 Mode Chain 上遭受攻击者攻击,本次攻击共损失约 8.5 MUSD 。
<!--EndFragment--> <!--StartFragment-->
首先,攻击者通过 mint 使用 60 LBTC 兑换了 undelying assets , 300 ionLBTC 。
<!--EndFragment-->
<!--StartFragment-->
但是,当我们看攻击者 60 LBTC 来源时发现这 60 LBTC 是攻击者自己 mint 的,攻击者在发起攻击前,通过 mint 获得了 250 LBTC 。
<!--EndFragment-->
<!--StartFragment-->
随后,我们查看了 LBTC 的合约,发现合约中的 Bascule 为:
0x0000000000000000000000000000000000000000 。
<!--EndFragment-->
<!--StartFragment-->
在LBTC的实现中 mint 需要通过 Bascule 的验证,
<!--EndFragment-->
<!--StartFragment-->
其中, _confirmDeposit 的实现如下:
<!--EndFragment-->
<!--StartFragment-->
LBTC 官方文档中对 Bascule 的介绍如下,其主要功能为一个 on-chain 的合约和 off-chain 的系统,防止攻击者进行攻击。
<!--EndFragment-->
<!--StartFragment-->
因为,此 LBTC 的 Bascule 没有对应的合约,所以攻击者可以任意 mint 。随后,攻击者通过mint 的 LBTC 抵押到 IonicMoney 中,提取了所有池子的资金完成攻击。所以,造成此次攻击的根本原因是 IonicMoney 在创建借贷池时没有验证 LBTC 是否是官方创建的合约,导致借贷池的 unlying assets 为 fake token ,攻击者随意 mint 后通过 borrow 掏空所有资金。
<!--EndFragment-->
<!--StartFragment-->
本次漏洞成因主要是因为 IonicMoney 项目方在创建借贷池时没有验证资产对应的合约是否是官方部署的,导致借贷池的 undelying asset 为 fake token 。建议项目方在设计经济模型、价格计算机制和代码运行逻辑时要多方验证,合约上线前审计时尽量选择多个审计公司交叉审计,最后在上线前部署时检查对应的 token 是否是官方部署的。
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!