安全研究 | 一文读懂Cosmos生态安全解析

Beosin
Beosin 机构得得号

May 21 Beosin是总部位于新加坡的全球知名区块链安全公司,为区块链生态提供代码安全审计,安全风险监控、预警与阻断,虚拟资产被盗追回,KYT/AML等“一站式”安全产品+服务,已为全球2000多个区块链企业服务,保护客户资产5000多亿美元。

摘要: 然而,随着Cosmos生态的不断扩展和发展,如何确保网络的安全性也成为了亟待解决的重要课题。今天,我们将对Cosmos生态进行安全解析。

作为最为活跃的区块链生态之一,Cosmos以其优秀的区块链互操作性实现了多链之间高效、安全的交互。目前,Celestia,dYdX Appchain,Injective,Sei等明星项目都基于Cosmos SDK构建,拥抱Cosmos生态。

然而,随着Cosmos生态的不断扩展和发展,如何确保网络的安全性也成为了亟待解决的重要课题。今天,我们将对Cosmos生态进行安全解析。

Cosmos生态安全解析

随着Cosmos相关开发组件被越来越多的开发者使用,Cosmos生态的安全问题也变得更加重要。此前,Cosmos生态项目Juno因开发人员的失误,导致价值3600万美元的$JUNO被发送到无法访问的错误地址;Cosmos SDK也因潜在安全问题进行多次升级。以下Beosin将针对Cosmos生态常见的、危害大的安全风险进行分析,并提供安全建议:

  • Cosmos SDK旧版本的安全漏洞

开发者可能会使用旧版本的Cosmos SDK进行项目开发。如果开发者没有及时关注Cosmos SDK的漏洞和升级,可能会在项目中引入安全风险。以Self Chain为例,Self Chain使用Cosmos SDK v0.46.7进行开发。在这个版本中,PeriodVestingAccount函数对于代币释放周期没有正确的验证,用户可以存入资产但无法取出。

如果使用Cosmos SDK v0.46.13或更高的版本则不会出现此类问题。

  • 地址相关的问题

开发者在进行智能合约开发时,可能会设置白名单/黑名单功能。而任何有效的Cosmos SDK地址都有两种有效的表示形式:全小写和全大写,如cosmos1uzwqa88hcqe5gs7u7lgjxekz7xc6sm0f7xwp6a和COSMOS1UZWQA88HCQE5GS7U7LGJXEKZ7XC6SM0F7XWP6A是同一个地址。

如上面代码所示,由于dest没有经过标准化,通常使用的地址为小写地址,则任何人可以通过提供大写地址绕过BLACKLIST进行操作。

  • 计算精度问题

在计算代币数量等涉及数学运算的部分,开发者需要处理计算结果的精度问题。通常精度问题是由整数进行除法运算、不同位数的数字进行运算而产生的,如果开发者没有处理好精度问题,在涉及借贷、清算等业务时,可能会导致协议产生严重的损失。为避免此类安全事件发生,开发者可以采取以下措施:

(1)在数学运算中,先进行乘法运算,最后进行除法运算

(2)可以将小数放大进行运算,以获得更精准的结果

(3)如果无法避免精度损失,开发者应从对协议本身有利的角度去舍弃精度,这可以帮助避免协议产生坏账等一系列导致协议停止运行的问题。

  • 访问控制问题

访问控制是程序安全的主要问题之一,由于访问控制问题引起的安全事件数不胜数,在Cosmwasm合约中同样存在相关问题。以下是一个典型案例:

上述代码因为缺失对调用者地址的检查和限制,允许任何人都可以调用update_config(),将自己的地址设置为金库地址,接收合约产生的所有奖励。

在针对Cosmos生态安全的研究过程中,Beosin已积累丰富的安全审计经验,对相关安全风险进行了汇总和分类工作。Beosin将继续分析不断出现的安全问题,总结通用的安全场景,帮助开发者更安全地进行Cosmwasm合约开发,进一步提高Cosmos生态整体的安全性。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 Beosin 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信