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

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

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

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

Cosmos跨链桥Gravity Bridge已启动,明年初将迁移至Cosmos Hub:12月16日消息,负责管理Cosmos(ATOM)生态系统的瑞士非营利组织Interchain Foundation周三宣布启动由去中心化互联网服务提供商Althea构建的跨链桥Gravity Bridge。

Gravity Bridge允许在以太坊和Cosmos区块链之间转移ERC-20代币。在最初阶段,Gravity Bridge将作为一个独立的链运行,然后在明年初迁移至Cosmos Hub。其关键技术特征包括跨两个链的可互换代币发行,以及对以太坊到Cosmos预言机的支持。(Cointelegraph)[2021/12/16 7:43:34]

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

新加坡银行对加密货币的抵押品要求由1:1调整为1.25:1:金色财经报道,对于加密货币等风险资产,新加坡银行不再需要持有 1:1 的抵押品,而是1.25:1。这意味着对于每 1 美元的加密货币,金融机构需要持有1.25美元的常规现金。新加坡金融管理局的高级部长Tharman Shanmugaratnam在最近的一份声明中解释说,在框架最终确定之前,MAS要求新加坡注册银行对风险较高的加密资产(如比特币和以太币)的敞口应用1250%的风险权重。根据 MAS 对在新加坡注册成立的具有系统重要性的银行的最低总资本充足率要求10%,这意味着在新加坡注册成立的银行必须持有 125 美元的资本,才能对比特币等加密资产持有 100 美元的风险敞口。

此外,对于风险较低的加密资产,例如满足一系列条件以确保其具有与传统公司债券相同水平的金融风险的代币化公司债券,审慎处理类似于适用于传统非代币化资产的审慎处理。[2023/1/8 11:00:38]

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

Magic Eden聘请Chris Akhavan担任公司首席游戏官:金色财经报道,基于Solana的NFT平台Magic Eden聘请Chris Akhavan担任公司的首席游戏官(Chief Game Officer),在Magic Eden,Akhavan将推动平台游戏合作伙伴关系的发展,并支持游戏开发、创作者和收藏家体验。Chris Akhavan此前担任区块链的游戏公司Forte首席商务官,该公司于 2021年筹集了 7.25 亿美元的B轮融资。[2022/12/9 21:32:15]

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

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

Bitrise Capital宣布推出1000万美元的生态投资基金用于支持ETHPOW,ETC和iPolloverse等POW公链建设:8月12日消息,Bitrise Capital宣布推出生态投资基金,共计1000万美元。官方推特显示,基金将用于支持ETHPOW,ETC和ipolloverse等POW公链生态发展。POW是ETH的过去和现在,Bitrise Capital会积极支持POW公链生态开发。若Ethereum硬分叉成功,Bitrise Capital将积极支持ETHPOW主网生态应用的开发和探索,丰富和推进ETHPOW网络整体的发展,给生态开发者提供更多支持。

此外,随着ETH转POS,部分算力也会流入到ETC,使得网络更安全,生态发展变得可能。[2022/8/12 12:21:20]

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

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

由于普通用户持币但又不想参与验证,那么其手中的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的验证者及普通用户,在资产面前,我们都应该保有敬畏之心。

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

链链资讯

[0:31ms0-3:421ms