安全研究 | 一文读懂Cosmos生态安全解析
摘要: 然而,随着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生态整体的安全性。
评论(0)
Oh! no
您是否确认要删除该条评论吗?