首页 / DeFi / Grim Finance被攻击者盗币超过3000万美元(DeFi平台攻击事件分析)

Grim Finance被攻击者盗币超过3000万美元(DeFi平台攻击事件分析)

0x1事件背景

GrimFinance是一个智能收益优化平台,允许用户将AMMs(自动做市商)发行的LP-Tokens押在GrimVaults中,这些LP-Tokens会自动收获并将其奖励重新押在LP-Tokens上,以获得复合效应,帮助用户收获更多的奖励。

零时科技区块链安全情报平台监控到消息,北京时间2021年12月19日,GrimFinance官方发推文称平台被外部攻击者利用,攻击者盗币价值超过3000万美元,零时科技安全团队及时对该安全事件进行复盘分析。

0x2攻击分析

以下将拆解攻击者交易,方便读者更清晰地了解攻击过程。

第一步:攻击者闪电贷借款30枚BTC和92万枚WFTM,并通过PancakePair将借款添加流动性获取0.0476枚SpiritLP。

第二步:将获取的SpiritLP质押后获得GB-BTC-FTM。

第三步:通过多次质押存款获取GB-BTC-FTM(攻击的主要部分,通过未验证的Token不断质押,提高质押奖励的差值)。

第四步:将获取的GB-BTC-FTM归还,获得0.0663枚SpiritLP(已通过多次质押差值盈利)。

步步:流通流通性获取41枚BTC和18万枚WFTM并并还算洗脑25个领域并争抢,成功将盈利的11枚BTC和3万枚WFTM转者钱包地址。

攻击者通过同样的攻击尝试继续进行了8次攻击如下图

至此

攻击者通过9笔攻击交易共获得累积获取,26万枚BTC1865万枚,75万枚DAI,75万枚USDC,13万枚BOO,价值约3000万美元。

下来通过契约代码了解发生的原因。

0x3 漏洞细节

通过查询交易详情可以找出本次攻击中使用的合约方法主要有两个:

GrimBoostVault.depositFor 方法,用户质押资金并返回相应的证明代币。

GrimBoostVault.withdrawAll 方法,用户归还代币获取对应的质押资金。

通过交易分析我们可以判断,该攻击者成功的第三步主要是由于多次操作存款为方法造成的,首先来分析,通读存款为方法流程,主要是判断用户将资金质押转入合同后,计算合同余额差值,如果将差值进行计算后发送给用户相应的质押证明代币。乍一看假装没有安全问题,但细心的同学会发现,这里的token地址并没有做固定限制,token地址是由用户订阅,由于depositFor 方法中会引入token 合约地址中的safeTransferFrom 方法,token 合约地址为用户可控后,safeTransferFrom 方法触发。

可明确提出攻击者路径,首先创建Token合约,并在合约中的安全转移方法中的调用调用GrimBoostVault.depositFor 注入的逻辑,在进行多次重入后最后一次注入正常的Token代币质押,之后虽然会进入正常流程,但由于之前的多次重入,导致获得了并发量的前后差值过大,最终铸造了大量的证明代币。

例如:攻击者进行了6次重入,最后一次收益为100,那么最终得到的差值就是100*6,铸币时的计算值也是600。

重入成功后,攻击者调用withdrawAll方法归还重入获取的大量证明代币获取对应的质押资金,完成盈利。

目前,GrimFinance 官方已暂停所有金库,并提醒用户尽快提取自己的所有资金,暂未声明合同修改方案和证明方案。

0x4 总结

通过攻击攻击事件浏览,主要者利用GrimBoostVault合约攻击方法未进行令牌地址检查,通过多次重入导致产生的并发余额差,大量资金,通过结果值撤回所有取走盈利的资金, DeFi项目中类似的攻击事件居多,经常发生频繁频频发生,对于DeFi项目而言,合约代码的安全,代币价格的相对稳定,方法传参的可控性,旧版本的及时更新都是保证项目安全极其重要的部分,任何细节的马虎都可能导致项目及用户引资受到损失。对于这样的极端犯罪事件,零时科技安全团队提出以下要求。

0x5安全建议

为了契约代码安全,可找时间安全审计公司进行审计。

对于涉及资金借贷的方法,应进行严格的权限控制。

对及时更新的代码,要及时更新完善。

本文来自网络,不代表本地资讯门户立场,转载请注明出处:https://www.gamecheng.com/qukuilian/defi/3334.html

雯华作者

上一篇
下一篇

为您推荐

发表评论

您的电子邮箱地址不会被公开。

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部