12月29日,针对Cover协议遭受攻击一事,慢雾安全团队对整个流程进行了简要分析,如下:
1.在Cover协议的Blacksmith合约中,用户可以通过deposit函数抵押BPT代币;
2.攻击者在第一次进行deposit-withdraw后将通过updatePool函数来更新池子,并使用accRewardsPerToken来记录累计奖励;
Vitalik:决定向COVID研究项目再投入1亿美元赠款:6月9日消息,以太坊联合创始人 Vitalik Buterin 在社交媒体发文表示,在与 Polygon 联合创始人 Sandeep Nailwal 讨论后得出结论,决定向 COVID 研究项目再投入 1 亿美元赠款。其中,CryptoRelief 基金会出资 9000 万枚 USDC,我本人出资 1000 万美元。期待我们的团队持续合作,长期 COVID 研究仍是主要关注点。[2023/6/9 21:24:45]
3.之后将通过_claimCoverRewards函数来分配奖励并使用rewardWriteoff参数进行记录;
PolkaCover宣布CVR/USDT池已在Orion Terminal上线:DeFi保险市场PolkaCover近日宣布,CVR/USDT池已在交易所聚合平台Orion Protocol的Orion Terminal上线。用户可以直接通过其钱包在该终端上提供流动性并交易CVR。这一集成使平台用户能够以一致的最佳价格访问多个中心化和去中心化的流动性来源。[2021/8/8 1:42:09]
4.在攻击者第一次withdraw后还留有一小部分的BPT进行抵押;
Nash联合创始人:COVID-19大流行之后,政府机构等将受益于区块链技术:加密交易所Nash exchange联合创始人Fabio Canesin表示,随着新冠肺炎疫情的爆发,区块链技术因其“无国界”的特性,为公众提供了独特机会。加密货币则为应对管理不善的国家货币提供了安全港。在COVID-19大流行之后,三个领域将受益于区块链技术:政府机构、非营利组织和中小型企业。(Cointelegraph)[2020/7/12]
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参数差值变化如下图:
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。