Cover 协议攻击时间分析:黑客利用accRewardsPerToken实现代币增发_COV:COVER

12月29日,针对Cover协议遭受攻击一事,慢雾安全团队对整个流程进行了简要分析,如下:

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

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

欧易OKEx热门币种播报:COVER拉升,日内涨幅35.40%:据欧易OKEx平台数据显示,今日行情普涨,BTC今日小幅下挫,日内跌幅01%,现震荡于40000USDT;

据欧易OKEx行情显示,欧易OKEx日内涨幅榜中,涨幅前三的币种是:COVER、XSR、QUN;波卡生态类涨幅最大的是LINK;NFT生态类涨幅最大的是MEME;

截至6月15日15:00热门币种行情如下:[2021/6/15 23:38:02]

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

PrimeXBT和Covesting合作推出Covesting Yield Account模块:据cryptonews消息,交易平台PrimeXBT已与欧洲B2B软件许可开发商Covesting合作推出了一个新的Covesting Yield Account模块,以及该公司的旗舰Covesting复制交易模块。通过访问PrimeXBT仪表板的Covesting Yield Account部分,用户只需单击几下,就可以通过仪表板本身访问流行的DeFi协议。没有更多的钱包可以连接,无休止的混乱步骤或出现问题的可能性。只需选择要抵押的任何加密资产中的多少,估算当前的APY,然后开始进行抵押。该产品预计将于2021年第三季度上线[2021/5/1 21:15:22]

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

Cover Protocol开启CIP-03提案投票,提出删除COVER分发者铸币权:DeFi保险协议Cover Protocol发布了CIP-03草案,提出删除COVER分发者的铸币权,并设置为dev-multisig。目前该提案已经开启为期3天的投票。投票结束后,将进入Snapshot以最终确定治理决策。[2021/1/16 16:19:01]

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参数差值变化如下图:

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

水星链

[0:62ms0-1:18ms