评估区块链安全成熟度
全面的安全审查应该揭示的远不止简单漏洞。通常,这些漏洞指向更深层次的问题,这些问题可能难以理解和解决。鉴于审查的时间限制性,安全工程师可能没有机会识别由这些问题引起的所有漏洞——即使初始漏洞修复后,它们仍可能在未来持续引发问题。
这就是为什么在开发安全产品时,更全面地思考安全至关重要。这种视角需要考虑软件开发生命周期以及软件的架构和设计。我们开发了一套代码库成熟度标准,用于评估代码库是否符合行业标准和最佳实践。我们的建议已经促进了客户代码库的实质性改进。例如,Balancer 根据我们对算术舍入的建议(附录 H)开发了更好的算术原语,而其他客户,包括 Optimism、Uniswap 和 Primitive,通过实施 Echidna 属性加强了他们的代码库。
我们分享这些指南,以帮助每个人评估和增强他们自己的智能合约代码库的成熟度。
我们如何评估成熟度
基于我们十多年来执行数百次安全审计的经验,我们确定了几个重要的控制家族。这些是我们通常识别安全漏洞的领域,也是经常需要改进以增强产品安全状况的地方。在这些领域实现更高的成熟度会在产品生命周期中减少漏洞(并且让安全工程师更开心)。
我们将每个类别评级为弱、中等、满意或强:
- 算术运算
- 审计
- 身份验证/访问控制
- 复杂度管理
- 去中心化
- 文档
- 低级操作
- 交易排序风险
- 测试和验证
(请注意,我们对所有客户都采用这种基于控制家族的方法,无论是区块链还是其他领域,并根据审查目标调整控制措施。我们的密码学和应用程序安全团队有自己的推荐控制措施。)
大多数团队需要付出大量努力才能达到满意的成熟度。例如,如果代码库不包含针对算术运算的自动化测试方法,它最多只能被认为是中等。这可能看起来很严格,但现实是,如果你在 2023 年还没有将模糊测试纳入开发过程,你就已经落后了。同样,如果你的系统报告事件,但缺乏监控它们或响应报告故障的策略,你应该重新考虑你的事件响应策略。
图 1:中等成熟度的算术标准
尽管我们基于广泛的经验制定了这些最佳实践,但我们欢迎反馈。随着我们与更多客户合作以及提供安全区块链解决方案所需的控制措施随时间变化,我们会定期更新此列表。
使用代码成熟度评估
根据这些具体指南评估项目有助于就区块链项目的软件安全风险进行深入和知情的对话。在新的威胁每天出现、信息安全 Twitter 无法在一个话题上停留超过一小时的环境中,这有助于团队专注于基本需求。它还有助于展示安全方面的积极进展,而不仅仅是漏洞检测(一个负面指标)。
我们的指南可用作软件开发中涉及的各种角色的自我评估协议:
- 开发人员应遵循指南。在整个开发过程中纳入它们将有助于识别潜在的盲点。一个力求在第一天在所有类别中达到满意或更高评级的项目将为成功定位,并减少安全问题的可能性。
- 安全工程师应根据指南衡量他们的目标。他们应使用从代码审查中收集的信息来丰富他们的评估,并为开发人员提供提高成熟度的指导。然而,他们应记住,这些标准旨在指导自我反思,而不是解决所有风险的全面清单。安全工程师的一个关键职责是将成熟度评估置于具体情境中。
- 公司领导应分配资源来解决缺陷。他们应审查成熟度评估以了解项目安全状况。这将帮助他们确定优先级,决定如何改善组织的安全状况,并将资源分配到薄弱环节。
迈向行业范围的最佳实践
我们鼓励安全行业专业人士采用这些指南作为最佳实践。随着最佳实践的发展和新风险的出现,我们将定期更新它们。如果你想增强整个安全状况——并超越简单地查找漏洞——请通过我们的网站或电子邮件联系我们。
如果你喜欢这篇文章,请分享:
- GitHub
- Mastodon
- Hacker News