COS:Cosmos安全漏洞解析:21天锁仓资金可提前赎回?

今晨,Cosmos团队表示在CosmosSDK发现严重安全漏洞。PeckShield安全人员分析发现,原本Cosmos抵押之后需要等待21天才能赎回,但合约代码里Validator状态变化时存在一种逻辑缺陷,使得用户可以减少21天固定赎回时间,从而提前赎回抵押的数字资产,进而破坏原本的POS共识可更短周期使用资金进行重复抵押赚取利息。

Cosmos是最新上线的基于Tendermint共识的区块链网络,提出IBC通迅协议,用于解决资产跨链的问题,其核心主链被称为CosmosHub,号称『万链之王』。其上的平台代币为Atom,用户通过验证者投票参与服务治理与维护,同时接收系统激励,史称『Staking模式』,为2019年区块链明星项目之一。

CosmosHub是基于Tendermint,它依靠一组验证者来保护网络,等同于Bitcoin、Ethereum等PoW网络中的矿工角色;

Lacoste为其UNDW3社区引入奖励和共同创造功能:金色财经报道,法国时尚品牌Lacoste周四扩展了其不可替代代币(NFT)生态系统,为其UNDW3社区引入了奖励和共同创造功能。Lacoste于2022年6月发布了包含11,212张个人资料图片(PFP??)NFT的UNDW3系列,向其社区提供“创世通行证”,同时该零售商还透露了Web3扩张计划。通过拥有NFT,社区能够获得限量版商品和IRL社区活动。[2023/6/30 22:09:44]

验证者运行一个完整的Cosmos节点,并通过广播包含由其私钥签署的加密投票参与共识,有一定的硬件投入成本;

验证者需要抵押定额的Atom作为保证金,且系统只有股权最高的100个节点会成为验证者;

验证者在区块链中打包交易提交新块并获得系统激励,这是验证者的收入,等同于挖矿收益;

数据:当前Cosmos生态总市值为668.5亿美元:金色财经报道,据CoinGecko最新数据显示,Cosmos生态总市值为668.5亿美元(本文撰写时为66,850,825,130美元),24小时交易额为2,851,024,184美元。目前按市值排名前三的项目分别是:Terra(34,118,093,708美元)、Cronos(10,184,667,283美元)和CosmosHub(8,115,288,674美元)。[2022/3/21 14:08:36]

另外,验证者在参与治理方面,他们还必须对网络中的提案进行投票,只有投票通过的提案才能发挥效应,投票权重根据每一位验证者存放的总权益进行加权;

安全稳定的验证者会产生稳定的收益,有问题的节点导致您损失本金,例如验证者节点掉线会损失0.01%本金。

B-Harvest提交两项关于Cosmos Hub的新治理提案:Cosmos信息提供商和节点验证者B-Harvest提交关于了两项关于Cosmos Hub的新治理提案,其中提案50提议提高每个区块的gas上限,以便Cosmos Hub可以为GravityDEX每个区块处理最多500笔交换交易。这将使GravityDEX在开始阶段拥有足够容量来处理新用户。提案51是提议在Cosmos Hub上添加GravityDEX的实际治理提案。网络将在7月12日停止,验证器将不得不更新状态机二进制文件以适应升级。两项提案的投票现已开启。[2021/6/30 0:17:00]

由此可知,运行一个Validator角色的难度不低于开一个PoW矿池,普通用户要想加入Cosmos主网,并获取收益是个门槛比较高的事情。

Cocos-BCX发起人陈昊芝:DeFi对普通用户而言门槛相对较高:金色财经现场报道,9月20日,由金色财经主办,水桥区块链总冠名的“共为·创业者大会”在厦门举办。在主题为《DeFi沉思录:距离主流大众有多远?》的圆桌对话环节,Cocos-BCX发起人陈昊芝表示,DeFi对于普通用户而言相对复杂,用户需要了解每个钱包的特性,支持哪些币种,不同的挖矿池子如何分配,还要识别哪些项目是经过审计相对较为安全的,所以规则相对复杂。但好处也很明显,2017年的项目融资都是体外循环,很多项目都可以拿钱跑路,现在DeFi的项目有一部分经过了审计,用户可以通过合约或者白皮书,了解它的分配规则,团队占比等,对基础风险有前提认知。[2020/9/20]

由于普通用户持币但又不想参与验证,那么其手中的Atom会面临增发而贬值,但是直接参与Cosmos主网有一定的技术难度,因此出现了委托人Delegator角色。委托人是那些不能或不想自己运行验证节点的Atom持有者,普通用户可以将Atom委托给验证人并获得部分收入,例如星火矿池提供的委托服务。

用户一旦赎回委托订单,Cosmos将在赎回操作21天之后将委托抵押的Atom退回给委托人。

因此这21天为平台固定的锁仓时间,如果出现一种情况,Cosmos系统存在设计缺陷,导致委托人的赎回周期可变,这对平台上的其它用户来说,是不公平的,也破坏了Cosmos区块链的共识机制。

在了解这个漏洞之前,我们先来看下Cosmos网络之上的验证者状态变化图:

其中,一共有三个状态:

bonded

unbonded

unbonding

状态之间的变化关系如下:

验证者默认属于unbonded状态,当发起bondValidator之后,状态变更为bonded,

变更这一状态之后,验证者开始接收系统收益;

而当验证者发起beginUnbondingValidator以退出bonded状态时,其状态变更为unbonding,

同时系统不再给这一验证者发送任何收益,同时这一验证者的委托人可以发起赎回操作;

若委托人没有发起赎回操作,那么处于unbonding状态的验证者可以重新bondValidator回到bonded状态以接收系统收益;

处于unbonding状态的验证者,当用户赎回时间21天到期之后,将进入到unbonded状态,此时委托者接收到之前抵押的Atom及抵押期间的收益。

上面我们了解到验证者在帮助抵押赎回方面的整体流程,表面上没有什么问题,PeckShield安全人员在分析CosmosSDK代码的时候,发现了这一赎回流程中的致命设计缺陷,可导致委托者利用验证者unbonding状态,突破21天锁仓固定期而提前赎回。

我们先看旧版的赎回代码:

其大体流程如下,获取验证者的unbonding完成时间和区块高度;

将待赎回部分代币根据锁仓到期时间和区块高度生成一个锁币赎回记录;

将这一赎回记录保存到队列之中,等待时间到期之后,退还锁币资金给委托人。

细心的用户发现了这里的问题,一图以盖之:

简而言之,系统在计算锁仓到期时间的时候,误用Validator开始unbond状态时间和Delegator赎回发起时间,使得Delegator可以使用这一时间差赠取差异:

Validator正常发起beginUnbondingValidator操作;

Delegator在Validator发起unbond操作之后7天时发起Undelgate赎回操作,理论上赎回时间为21天,但是这里计算的时候使用的是Validator发起unbond操作的时间,

因此,这一个Deletagor『免费』缩减了7天的赎回时间,再经过14天时间就可以收到锁仓的资金。

此时,我们再来看修复之后的代码:

此时,无论Delegator何时发起Undelgate操作,都会确保从操作发起时开始计算21天,而与验证者无关。

Staking作为2019年新潮的区块链方向,获取了一定的瞩目,无论你是Staking的项目方,还是参与Staking的验证者及普通用户,在资产面前,我们都应该保有敬畏之心。

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

地球链

ADABTC:BTC多空双爆后 下一步怎么走?

BTC前几天高位缩量震荡3天后,凌晨迎来了大幅波动,币价先从8700美元短时快速拉高至9000美元上方后又强力下杀至8000美元,目前又小幅反弹至8300美元上方盘整.

[0:15ms0-0:531ms