REWARD:慢雾:Grim Finance攻击者利用传入恶意代币地址对depositFor进行重入攻击

链捕手消息,Fantom链上GrimFinance项目遭遇闪电贷攻击,损失超3000万美元,慢雾团队对事件进行分析如下:

1.攻击者通过闪电贷借出WFTM与BTC代币,并在SpiritSwap中添加流动性获得SPIRIT-LP流动性凭证。

2.随后攻击者通过GrimFinance的GrimBoostVault合约中的depositFor函数进行流动性抵押操作,而depositFor允许用户指定转入的token并通过safeTransferFrom将用户指定的代币转入GrimBoostVault中,depositFor会根据用户转账前后本合约与策略池预期接收代币(预期接收want代币,本次攻击中应为SPIRIT-LP)的差值为用户铸造抵押凭证。

慢雾:昨日MEV机器人攻击者恶意构造无效区块,建议中继运营者及时升级:金色财经报道,慢雾分析显示,昨日MEV机器人被攻击的问题原因在于即使信标区块不正确,中继仍将有效载荷(payload)返回给提议者,导致了提议者在另一个区块被最终确定之前就能访问区块内容。攻击者利用此问题,恶意构造了无效的区块,使得该区块无法被验证,中继无法进行广播(状态码为202)从而提前获得交易内容。mev-boost-relay昨日已紧急发布新版本缓解此问题,建议中继运营者及时升级中继。

据此前报道,昨日夹击MEV机器人的恶意验证者已被Slash惩罚并踢出验证者队列。[2023/4/4 13:43:37]

3.但由于depositFor函数并未检查用户指定转入的token的合法性,攻击者在调用depositFor函数时传入了由攻击者恶意创建的代币合约地址。当GrimBoostVault通过safeTransferFrom函数调用恶意合约的transferFrom函数时,恶意合约再次重入调用了depositFor函数。

慢雾:Ribbon Finance遭遇DNS攻击,某用户损失16.5 WBTC:6月24日消息,Ribbon Finance 发推表示遭遇 DNS 攻击,慢雾MistTrack通过链上分析发现攻击者与今天早前的Convex Finance 攻击者是同一个,地址 0xb73261481064f717a63e6f295d917c28385af9aa 是攻击者共用的用来调用恶意合约的钱包地址。同时分析发现,Ribbon Finance某用户在攻击中损失了 16.5 WBTC,具体交易为:https://etherscan.io/tx/0xd09057f1fdb3fa97d0ed7e8ebd8fd31dd9a0b5b61a29a22b46985d6217510850。[2022/6/24 1:29:35]

攻击者进行了多次重入并在最后一次转入真正的SPIRIT-LP流动性凭证进行抵押,此操作确保了在重入前后GrimBoostVault预期接收代币的差值存在。随后depositFor函数根据此差值计算并为攻击者铸造对应的抵押凭证。

慢雾:Cover协议被黑问题出在rewardWriteoff具体计算参数变化导致差值:2020年12月29日,慢雾安全团队对整个Cover协议被攻击流程进行了简要分析。

1.在Cover协议的Blacksmith合约中,用户可以通过deposit函数抵押BPT代币;

2.攻击者在第一次进行deposit-withdraw后将通过updatePool函数来更新池子,并使用accRewardsPerToken来记录累计奖励;

3.之后将通过_claimCoverRewards函数来分配奖励并使用rewardWriteoff参数进行记录;

4.在攻击者第一次withdraw后还留有一小部分的BPT进行抵押;

5.此时攻击者将第二次进行deposit,并通过claimRewards提取奖励;

6.问题出在rewardWriteoff的具体计算,在攻击者第二次进行deposit-claimRewards时取的Pool值定义为memory,此时memory中获取的Pool是攻击者第一次withdraw进行updatePool时更新的值;

7.由于memory中获取的Pool值是旧的,其对应记录的accRewardsPerToken也是旧的会赋值到miner;

8.之后再进行新的一次updatePool时,由于攻击者在第一次进行withdraw后池子中的lpTotal已经变小,所以最后获得的accRewardsPerToken将变大;

9.此时攻击者被赋值的accRewardsPerToken是旧的是一个较小值,在进行rewardWriteoff计算时获得的值也将偏小,但攻击者在进行claimRewards时用的却是池子更新后的accRewardsPerToken值;

10.因此在进行具体奖励计算时由于这个新旧参数之前差值,会导致计算出一个偏大的数值;

11.所以最后在根据计算结果给攻击者铸造奖励时就会额外铸造出更多的COVER代币,导致COVER代币增发。具体accRewardsPerToken参数差值变化如图所示。[2020/12/29 15:58:07]

4.由于攻击者对GrimBoostVault合约重入了多次,因此GrimBoostVault合约为攻击者铸造了远多于预期的抵押凭证。攻击者使用此凭证在GrimBoostVault合约中取出了远多于之前抵押的SPIRIT-LP流动性凭证。随后攻击者使用此SPIRIT-LP流动性凭证移除流动性获得WFTM与BTC代币并归还闪电贷完成获利。

此次攻击是由于GrimBoostVault合约的depositFor函数未对用户传入的token的合法性进行检查且无防重入锁,导致恶意用户可以传入恶意代币地址对depositFor进行重入获得远多于预期的抵押凭证。慢雾团队建议:对于用户传入的参数应检查其是否符合预期,对于函数中的外部调用应控制好外部调用带来的重入攻击等风险。(来源链接)

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:31ms0-0:721ms