最近小区出现了一些流浪狗,听说邻居家有孩子看到狗吓得就跑,结果反而被狗狂追咬了一口。
还好父母机智,给孩子上了个意外险,几针狂犬病疫苗下来没怎么花钱。
作为币民如果加密资产不幸被盗,但项目方或者你个人购买了保险,那么也大可放心让保险公司偿还损失的资产。
可还有最差的一种情况:但是如果连保险公司都出了安全事故,受到攻击了呢?
北京时间12月28日晚,CertiK安全技术团队发现CoverProtocol发生代币无限增发漏洞攻击。
攻击者通过反复对项目智能合约进行质押和取回操作,触发其中包含铸造代币的操作,对Cover代币进行无限增发,导致Cover代币价格崩盘。
技术分析?
主要攻击分为以下步骤:?
百度Apollo首发 “Apollo 001”系列纪念数字藏品:金色财经报道,据百度Apollo智能驾驶官方公众号,百度Apollo全网首发首款 “Apollo 001”系列纪念数字藏品,以百度汽车机器人为主体形象,每款对应一个百度Apollo自动驾驶重要里程碑事件。据悉,该数字藏品将于2022年7月8日 09:55发布汽车机器人家族全家福空投款。[2022/7/7 1:58:19]
1.攻击者设置攻击必要的假代币。
2.攻击者使用假代币,为BalancerPool提供流动性:
??①总计向BalancerPool提供了2,573个DAI的流动性
??②攻击者通过向BalancerPool提供流动性,获得了约132,688个Balancer流动性证明代币BPT
LBank蓝贝壳于4月9日16:50首发 BOSON:据官方公告,4月9日16:50,LBank蓝贝壳首发BOSON(Boson Protocol),开放USDT交易,4月9日16:00开放充值,4月12日16:00开放提现。上线同一时间开启充值交易BOSON瓜分10,000 USDT。
LBank蓝贝壳于4月9日16:50开启充值交易BOSON瓜分10,000 USDT。用户净充值数量不少于1枚BOSON ,可按净充值量获得等值1%的BOSON的USDT空投奖励;交易赛将根据用户的BOSON交易量进行排名,前30名可按个人交易量占比瓜分USDT。详情请点击官方公告。[2021/4/9 20:02:26]
3.攻击者向CoverProtocal中的Blacksmith.sol智能合约质押(stake)前一步中所得的所有Balancer流动性证明代币。
首发 | imKey正式支持Filecoin,成为首批Filecoin硬件钱包:12月1日,随着imToken2.7.2版本上线,imKey同步支持Filecoin,成为业内首批正式支持FIL的硬件钱包。Filecoin作为imKey多链支持的优先级项目之一,成为继BTC、ETH、EOS和COSMOS四条公链后的第五条公链。
据悉,imKey团队已在Q4全面启动多链支持计划,计划实现imToken已经支持的所有公链项目,本次imKey升级更新,无需更换硬件,不涉及固件升级,通过应用(Applet)自动升级,即可实现imKey对Filecoin的支持及FIL的代币管理。[2020/12/2 22:52:32]
质押时,攻击者调用位于0xe0b94a7bb45dd905c79bb1992c9879f40f1caed5的Blacksmith.sol智能合约中的deposit函数,如图一所示:
首发 | 欧科云链推出“天眼方案”推动链上安全系统再升级:8月28日,区块链产业集团欧科云链宣布推出区块链“天眼方案”,主要通过链上数据追踪系统研发、对外技术支持、凝聚企业众力等途径,全面助力区块链安全提升和产业平稳健康发展。
据了解,在“天眼方案”下,欧科云链集团将打造链上数据追踪系统,通过溯源数字资产、监控非法交易等手段,全力遏制等非法行为;协助执法机关办案,并为打造法务等区块链系统提供技术支持;为联盟链和基于各类业务的链上数据提供区块链+大数据的解决方案。[2020/8/28]
图一:Thedeposit()functioninblacksmith.sol
通过调用deposit函数,攻击者将得到的BPT流动性证明质押到coverprotocol中。
首先通过图一中118行将当前流动性证明代币的pool数据读取到memory,然后调用121行代码对当前pool的数据进行更新。
IMEOS首发 EOS Go公布新增两条复选条件 :据金色财经合作伙伴IMEOS报道:今日,EOS Go在 steemit上公布新增的两条复选条件为:
1. 保证安全的计划:候选节点是否在steemit上发布文章介绍该节点的安全方法和计划,“安全方法”标准是向EOS选民展示安全最佳实践知识和组织实施计划的机会;
2. 立场:描述该节点分享通胀奖励和/或向EOS代币持有人派发股息的立场(候选节点在steemit发布)。主要阐述以下两个问题:
该组织是否会出于任何原因向EOS令牌选民提供支付,包括BP选举和社区建议?
该组织是否有书面的无票付款政策?如果是这样,请提供一个链接。[2018/4/27]
图二: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声称对本次攻击负责,并表示已将所有的获利退回给了CoverProtocol。
安全建议
为了确保数字资产不因任何非技术原因遭受损失,项目方应及时为项目产品购买保险,增加项目方和投资者的安全保障方案,确保其因受到攻击所造成的损失可以被及时补偿。
作为世界顶尖的审计公司,CertiK目前已经进行了超过369次安全审计,审计了超过198,000行代码,并保护了价值超过100亿美元的加密资产。
近期,CeritK推出了CertiKShield去中心化资金保障计划。
CertiKShield不仅可以为项目及其社区成员提供保障,同时,CertiK作为主营业务为审计的安全公司,我们确保自己的保险项目拥有更高的安全性。
相比于纯粹的保险公司,安全技术的背书及团队对于安全的重视和一系列的保障,CertiKShield是安全领域内构建的保险,并且有着巨大的成长和发展空间。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。