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

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

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

Cosmos生态L1网络Juno宣布主网重新上线:4月8日消息,4 月 8 日,据官方消息,Cosmos 生态 L1 网络 Juno 现已重新启动,补丁增添成功并达成共识,正在开始出块。同时 Lupercalia 升级已完成。

此前报道,Cosmos 生态 L1 网络 Juno 在社交媒体上发文表示,其主网已于区块高度 2578108 位置停止出块,目前团队正在调查并收集相关证据,将在得出结论后公布本次事件具体原因。[2022/4/8 14:12:06]

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

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

GMO Coin已上线Cosmos(ATOM):GMO Coin今日宣布,已开始支持Cosmos(ATOM)。(JP.Cointelegraph)[2021/7/14 0:51:50]

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

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

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

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

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

CosmoStation钱包支持OKT质押与节点投票:根据CosmoStation官方消息,作为OKExChain生态合作伙伴,CosmoStation已将OKExChain集成到钱包中,用户可创建和导入OKExChain主网钱包,除此以外,为了支持OKExChain节点发展,用户还可在CosmoStation钱包上进行OKT质押、提现和节点投票。

公开资料显示,Cosmostation是一家位于韩国首尔的企业级验证节点基础运营商和终端用户应用程序开发公司, Cosmostation 钱包是为使用Cosmos SDK构建的网络服务的非托管移动钱包。在OKExChain主网上线后,CosmoStation宣布与OKExChain正式达成生态合作伙伴关系。[2021/1/25 13:27:21]

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

动态 | Cocos-BCX首批捐助物资已送达湖北七家医院:金色财经报道,2月3日,Cocos-BCX首批捐助物资均已送达湖北省7家县级医院对接人手中。第二批捐助物资亦正筹备中,预计从海外采购5万个医用口罩,众志成城,团结一心,将抗疫进行到底。[2020/2/3]

用户一旦赎回委托订单,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的验证者及普通用户,在资产面前,我们都应该保有敬畏之心。

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

银河链

火币APP下载比特币回落反弹,假消息使BSV火箭飙升

过去24小时,加密货币市场整体表现平淡。市值最高的加密货币比特币在小幅回落后马上恢复至8700美元附近横盘整理。而表现最让人吃惊的加密货币无疑是从凌晨开始一路狂飙的BitcoinSV,其价格一路上涨在8小时内涨幅高达惊人的64%.

[0:15ms0-2:175ms