Fantom链上收益协议Grim Finance遭遇闪电贷攻击
北京时间12月19日,Fantom链上收益协议Grim Finance遭遇闪电贷攻击,损失超过3000万美元,之后Grim Finance暂停了所有金库的功能,并提醒用户及时撤出个人资产。
SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。
整个攻击过程中,攻击者攻击了Grim Finance的多个LP金库合约和单币金库合约,包括以下交易:
最后将获得到token通过AnySwap跨链转账转移到其他公链,比如FTM跨链交易如下:
以交易0x19315e5b150d0a83e797203bb9c957ec1fa8a6f404f4f761d970cb29a74a5dd6为例,详细说明攻击工程,如下:
攻击合约通过GrimBoostVault合约中的depositFor函数将流动性通证质押到金库中,铸造得到316 GB-BTC-FTM的份额代币。
在该过程中,因为depositFor函数并没有对参数token进行校验,即可以传递任意的token来铸造份额代币,攻击者合约通过传递自定义的token合约(攻击合约地址)来铸造份额代币。
通过自定义token合约中的safeTransferFrom函数多次实现depositFor函数的重入。
在最后一次重入调用depositFor函数时传递正确的WFTM/BTC SPIRIT-LP交易对地址以及0.0476 SPIRIT-LP。
如此重复铸造份额代币,最终使得GrimBoostVault 合约为攻击者铸造了远多于预期的份额代币(316 GB-BTC-FTM)。
攻击合约根据铸造的远多于预期的份额代币(316 GB-BTC-FTM)提取到了0.0663 SPIRIT-LP,明显比实际质押的0.0476 SPIRIT-LP要多。
本次攻击的根本原因在于:因为Grim合约中的depositFor函数没有对参数token进行校验,即可以传递任意的token来铸造份额代币。攻击者通过传递自定义的token合约(攻击合约地址)来铸造份额代币,通过自定义token合约中的safeTransferFrom函数实现对depositFor函数的重入,最终造成GrimBoostVault 合约为攻击者铸造出远多于预期的份额代币(316 GB-BTC-FTM)
SharkTeam提醒您,在涉足区块链项目时请提高警惕,选择更稳定、更安全,且经过完备多轮审计的公链和项目,切不可将您的资产置于风险之中,沦为黑客的提款机。
SharkTeam作为领先的区块链安全服务团队,为开发者提供智能合约审计服务。智能合约审计服务由人工审计和自动化审计构成,满足不同客户需求,独家实现覆盖高级语言层、虚拟机层、区块链层、业务逻辑层四个方面近两百项审计内容,全面保障智能合约安全
Twitter:https://twitter.com/sharkteamorg
Telegram:https://t.me/sharkteamorg
更多区块链安全资讯与行业分析,点击下方链接查看 D查查|链上风险核查
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!