当前位置:主页 > 列表页 > 正文

a16z:给Web3项目的智能合约安全指南

2022-06-08 19:39 | 出处: odaily

本文来自 a16zcrypto,原文作者:Andy Beal、Nassim Eddequiouaq、Riyaz Faizullabhoy & Christian Seifert,由 Odaily 星球日报译者 Katie 辜编译。

通常,黑客会发现并利用软件开发整个流程链条(从设计到部署再到维护)的缺陷,从而打破区块链项目的安全屏障。如果能够提前了解到相关经验,我相信安全事故会少很多。

本文概述了 Web3 开发人员和安全团队在设计、开发并维护智能合约时必须考虑的安全要素,覆盖了从威胁建模到应急响应准备的整个周期

开发一款安全的软件包括以下五个阶段:

  1. 设计:开发人员描述系统所需的功能和操作,包括重要的基准和固定属性;

  2. 开发:开发人员编写系统代码;

  3. 测试和评审:开发人员将所有模块聚集在一个测试环境中,并评估它们的正确性、规模和其他因素;

  4. 部署:开发人员将系统投入生产;

  5. 维护:开发人员评估和修改系统,确保其执行预期功能。

下图将需要考虑的安全因素与上述阶段对应起来。

需要注意的是,软件开发的生命周期并不一定总是遵循线性的路径:各类别可能重叠或扩展到其他阶段。对于每个版本,步骤可能会重复。有些安全任务(如测试和安全审查)可能需要贯彻执行。

上面描述的软件生命周期步骤和相应的安全考虑为促进智能合约安全性提供了基础。下面将从三个问题出发,进行更详细的研究。

1. 设计阶段的智能合约安全考虑——考虑威胁建模和安全设计

2. 发展阶段的保安考虑——管理考虑和访问控制

3. 考虑可重复使用的、经过实战测试的模板和集成

4. 测试和评审阶段的安全性考虑——考虑测试和文档

5. 考虑内部审查和安全审计

请查看 ConsenSys、Nassent、OpenZeppelin 和 Trail of Bits 的指南,这些指南为开发人员提供了考虑事项清单,包括时间安排,供任何准备审计的人参考。还要确保检查部署交易,确保它们使用经审核的代码版本并具有适当的参数,特别是在升级软件时。

6. 部署和维护阶段的安全考虑——激励白帽社区参与

注:文中的一些作者在 Forta 公司工作,该公司拥有一个网络,为去中心化创建高质量安全监控机器人提供了一个代币化激励结构。开发团队可以鼓励他们的协议社区利用传统和 Web3 原生的两种方法来激励漏洞奖励,并通过增强安全性来让参与者潜在地获利,实现双赢。

7. 实时监控安全考虑

8. 意外和紧急情况响应操作的安全考虑

安全考虑应该是成功开发的一个组成部分,而不只是事后考虑或补充。虽然这个框架分享了一些构建 Web3 协议和应用程序的快速指南,从而促进整个开发过程中的安全性,但没有任何简短的概述可以全方面讨论智能合约安全。缺乏内部安全专业知识的团队应该联系合格的 Web3 安全专家,他们可以指导并帮助应用于他们的特定情况。

请记住,安全性不是一个简单的问题。安全性将永远是一套永无止境、持续不断的最佳实践。我们仍然处于建立这些实践的初期阶段,现在是时候为所有开发人员协作创建和共享它们了。

您可能感兴趣的文章:

相关文章