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

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

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

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

Cover及Ruler协议申请0x Polygon联合资助:据官方消息,DeFi保险协议Cover Protocol与DeFi借贷平台Ruler Protocol宣布申请0x Polygon的联合资助。根据申请,在当前的DeFi环境中,新协议很难仅仅通过产生的费用来吸引贷方和保险提供商。因此希望获得MATIC奖励和ZRX奖励,以提供给交易贷款的贷方和借方、承保提供者以及在Polygon上的Coverrules上交易保险的寻求者。此前消息,去中心化交换协议0x和以太坊可扩展性平台Polygon背后团队宣布,将斥资1050万美元以使更多用户使用Polygon网络。该资金旨在使开发人员更容易通过以太坊在Polygon上构建DeFi基础设施。[2021/7/6 0:29:10]

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

YFI创始人更新Pickle、Cream、Cover等四项全新版项目审计结果:1月7日消息,YFI创始人Andre Cronje(AC)发推更新Pickle、Cream、Cover等四项全新版项目审计结果。AC表示,Pickle(DILL boosts)需要做修改,预计15号前完成;Cream (v2 protocol lending)全部清除,重新开始;Cover (v1.1 perps)需要重新设计基础原理;第四项未公开项目已收到v1结果,需要重新设计,v4版本已提交,预计15号前完成。另外AC表示,Yearn v2的2/3已审计完毕,最后一项待审核。[2021/1/7 16:37:57]

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

Baseline项目为COVID-19联系人追踪系统提出改进方案:由微软、安永和康赛斯发起的开源区块链项目Github of Baseline Protocol的开发者最近为基于基准线协议(Baseline Protocol)的COVID-19联系人跟踪系统提出了改进方案。该项目旨在解决谷歌(Google)和苹果(Apple)提出的的联系人追踪系统提案中指出的安全缺陷,包括伪造记录和数据集中。该系统还将提供一键式按钮,以将联系方式报告给美国疾病控制与预防中心,并可用于验证测试结果。(Cointelegraph)[2020/4/20]

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:15ms0-0:898ms