Cover Protocol漏洞分析

卖意外险的保险公司也遭受了意外?Cover Protocol漏洞分析

本文由CertiK安全验证团队撰稿。

最近小区出现了一些流浪狗,听说邻居家有孩子看到狗吓得就跑,结果反而被狗狂追咬了一口。

还好父母机智,给孩子上了个意外险,几针狂犬病疫苗下来没怎么花钱。

作为币民如果加密资产不幸被盗,但项目方或者你个人购买了保险,那么也大可放心让保险公司偿还损失的资产。

可还有最差的一种情况:但是如果连保险公司都出了安全事故,受到攻击了呢?

北京时间12月28日晚, CertiK安全技术团队发现Cover Protocol发生代币无限增发漏洞攻击。

攻击者通过反复对项目智能合约进行质押和取回操作,触发其中包含铸造代币的操作,对Cover代币进行无限增发,导致Cover代币价格崩盘。

技术分析

主要攻击分为以下步骤:

1. 攻击者设置攻击必要的假代币。

2. 攻击者使用假代币,为Balancer Pool提供流动性:

①总计向Balancer Pool提供了2,573个DAI的流动性

②攻击者通过向Balancer Pool提供流动性,获得了约132,688个Balancer流动性证明代币BPT

3. 攻击者向Cover Protocal中的Blacksmith.sol智能合约质押(stake)前一步中所得的所有Balancer流动性证明代币。

质押时,攻击者调用位于0xe0b94a7bb45dd905c79bb1992c9879f40f1caed5的Blacksmith.sol智能合约中的deposit函数,如图一所示:

图一:The deposit() function in blacksmith.sol

通过调用deposit函数,攻击者将得到的BPT流动性证明质押到cover protocol中。

首先通过图一中118行将当前流动性证明代币的pool数据读取到memory,然后调用121行代码对当前pool的数据进行更新。

图二:blacksmith.sol中的updatePool()函数

如图二第75行所示,在updatePool()函数中修改的当前流动性证明代币的pool数据是一份存储在storage中的数据,与在deposit()中存储在memory中当前流动性证明代币的pool数据是两份数据。

在图二第84行lpTotal的值代表当前合同中总共存入的流动性证明代币数目,由于该变量数值较小,因此通过84行公式pool.accRewardsPerToken的数值将会增大,更新过的accRewardsPerToken值存储在storage中。

图三:blacksmith.sol中的_claimCoverRewards()函数

接下来如图三中318行所示,deposit()通过调用_claimCoverRewards()函数,向函数调用者(msg.sender)铸造一定数目的cover代币。

铸造cover代币的数目与pool.accRewardsPerToken, CAL_MULTIPLIER以及miner.rewardWriteoff三个变量相关。

请注意这里pool.accRewardsPerToken的数值是使用了存放在memory中的pool数据,并非使用图二中update()函数更新之后的数值。

同时,通过图1中deposit函数得知,miner.rewardWriteoff的数值更新是在_claimCoverRewards()函数执行完成之后发生。

因此原本设计上应使用更新过的miner.rewardWriteoff的数值计算需要铸造cover代币的数目,这里错误的使用了未更新过的miner.rewardWriteoff的数据,导致实际铸造cover代币数目比应铸造代币数目增多,最终导致了代币增发。

质押成功之后,攻击者通过调用blacksmith.sol智能合约中的withdraw()函数,将质押的BPT取回,同时取得额外铸造的cover代币,完成攻击。

通过对比执行deposit()函数和执行withdraw()函数之后的代币结余表,我们可以发现通过这一组deposit和withdraw函数调用之后,攻击者可以获得约704个COVER代币。

deposit()之后:

withdraw()之后:

攻击者通过反复执行deposit和withdraw函数,可以使Blacksmith函数无限铸造代币,并将代币转到自己的地址中,由此获利。

攻击发生后,截止发稿时,cover官方已经将blacksmith迁移到安全版本:

有漏洞的blacksmith地址:

0xe0b94a7bb45dd905c79bb1992c9879f40f1caed5

临时修复后的blacksmith地址:

0x1d5fab8a0e88020309e52b77b9c8edf63c519a26

临时修复后的blacksmith合同临时禁止了一切质押和取回操作,以此阻止攻击者继续实行攻击。

本次攻击最初攻击者共获利440万美金,约合人民币2900万人民币

有其他攻击者利用该漏洞发动类似攻击,例如Grap.finance项目官方参与了利用该漏洞的攻击,获利4350个ETH代币。

在攻击发生后几个小时,Grap.finance项目官方通过Twitter声称对本次攻击负责,并表示已将所有的获利退回给了Cover Protocol。

安全建议

为了确保数字资产不因任何非技术原因遭受损失,项目方应及时为项目产品购买保险,增加项目方和投资者的安全保障方案,确保其因受到攻击所造成的损失可以被及时补偿。

作为世界顶尖的审计公司,CertiK目前已经进行了超过369次安全审计,审计了超过198,000行代码,并保护了价值超过100亿美元的加密资产。

近期,CeritK推出了CertiKShield去中心化资金保障计划。

CertiKShield不仅可以为项目及其社区成员提供保障,同时,CertiK作为主营业务为审计的安全公司,我们确保自己的保险项目拥有更高的安全性

相比于纯粹的保险公司,安全技术的背书及团队对于安全的重视和一系列的保障,CertiKShield是安全领域内构建的保险,并且有着巨大的成长和发展空间。

24小时热点

2019年打假总结:Pi Network项目的传销性质

曾经,号称“走路就能赚钱”拥有大量用户和广泛影响的国内APP ...

994521

区块链的作用

国家区块链相关政策汇总

据零壹智库不完全统计,截至2019年12月,国家层面共计出台 ...

190774

区块链是什么

什么是去中心化交易所(DEX)?

去中心化交易所是一个基于区块链的交易所,它不将用户资金和个人 ...

96917

bitFlyer交易所

数字人民币的推出,有何意义和影响?

数字人民币的出现与使用,离我们普通人越来越近。那么,为什么要 ...

110369

区块链是什么行业

中国检察网公开披露了Plus Token案件的最新进展

盐城市响水县检察院已经对案件主要成员的犯罪情况审查完毕,正式 ...

84726

区块链特征

韩文秀:数据可作为生产要素按贡献参与分配

“要鼓励勤劳致富,健全劳动、资本、土地、知识、技术、管理和数 ...

157236

Mobi钱包

减半后比特币挖矿的成本价大概是多少

四川不少水电丰富的地区比如雅安、凉山等地的地方政府今年已经公 ...

120661

区块链知识

比特大陆宣布推出两款新矿机:蚂蚁 S19和蚂蚁S19 Pro

当比特币区块奖励减半时,所有矿工产生的总收入也将减少一半。如 ...

324774

区块链的含义

微众银行2019年报

4月30日,微众银行发布2019年年报。年报显示,去年全年该 ...

144875

Colin科林

2019年打假总结:存活近3年 疯狂的“传销币”GEC是怎么苟延残喘至今?

币圈从来不缺乏资金盘或是传销币,但多数都不长久,一夜之间项目 ...

2639495

区块链的作用

热点专题

2019年打假总结:存活近3年 疯狂的“传销币”GEC是怎么苟延残喘至今?

币圈从来不缺乏资金盘或是传销币,但多数都不长久,一夜之间项目 ...

2639495

区块链的作用

2019年打假总结:Pi Network项目的传销性质

曾经,号称“走路就能赚钱”拥有大量用户和广泛影响的国内APP ...

994521

区块链的作用

骗走了中国人5000亿MBI集团的“易物币”长什么样的

人性终究还是舍弃不掉自己贪婪的一面! 今年10月 ...

535791

区块链的特点是什么

PlusToken正式跑路 你该怎么办?

今天中午,一则消息刷遍了币圈,但是伴随着消息一起传播的,是更 ...

481691

区块链的概念

POC共识机制挖矿必将引发下一轮的挖矿浪潮

随着行情的好转,技术与底层平台的不断更新与完善,区块链应用正 ...

470673

ViaBTC

美国计算机学会:区块链技术到底能做什么?

去年,中国央行区块链研究部门发布了《区块链能做什么,不能做什 ...

426805

啥是区块链

《新能源汽车产业发展规划(2021-2035年)》 咨询委员会会议在京召开

2020年4月7日,全国政协副主席、中国科协主席、规划咨询委 ...

351049

Tony托尼

国内十大骗子排行榜

曾自称是“未来世界首富”的张健在中国被捕后,五行币网站立刻进 ...

336363

区块链中国

比特大陆宣布推出两款新矿机:蚂蚁 S19和蚂蚁S19 Pro

当比特币区块奖励减半时,所有矿工产生的总收入也将减少一半。如 ...

324628

区块链的含义

最近央行提出的DC/EP是什么?

2019年8月10日,央行结算司副司长穆长春发表演讲,介绍了 ...

320052

网络资源