本文深入探讨了Cosmos SDK开发中常见的安全问题,包括无限循环、Map的非确定性、AnteHandler的误用、以及存储键冲突等,并提供了实际案例和可操作的建议,旨在帮助开发者构建更安全的基于Cosmos的项目。文章强调了在Cosmos开发中需要开发者对安全问题有充分的认识,并详细介绍了开发者容易忽略的各种安全漏洞,以及相应的防范措施。
Provenance Blockchain团队在Cosmos SDK升级后发现测试网存在奇怪行为,节点从旧数据快照或创世区块初始化时无法同步,出现应用哈希不匹配错误。经调查发现是authz.MsgGrant中的time.Now()调用导致验证时的非确定性问题,可能导致验证器网络暂停。该团队已与Cosmos SDK团队沟通,并修复了此问题。
authz.MsgGrant
time.Now()
本文介绍了确定性和非确定性密钥交换的概念,以及如何在 ECDH 密钥交换方法中使用 libsodium.js 实现这两种方式。确定性密钥交换使用已知的种子值生成密钥,每次都得到相同的结果,而非确定性密钥交换则随机生成密钥,每次结果都不同。文章通过代码示例展示了这两种方法的实现,并提供了在线演示。
RISC Zero正与Veridise合作,使用Picus工具对zkVM的组件进行形式化验证,以提升ZK安全性。通过数学方法证明电路的确定性,从而消除约束不足的错误,已成功验证Keccak加速器电路的确定性,并正在验证RISC-V电路。此举旨在创建一个既快速又安全zkVM,使开发者无需在性能和安全性之间妥协。
Veridise 与 Succinct 合作,使用 Veridise 的工具 Picus 来验证 Succinct 的 RISC-V zkVM,SP1 电路的确定性。通过将 Plonky3 电路转换为 LLZK,成功验证了多个 SP1 电路的确定性。同时,也发现了 Plonky3 到 LLZK 转换管道的局限性,并提出了改进方向,未来计划扩展 Picus 以验证 SP1 中的所有电路。