a16z:如何建立提高智能合约安全性的开发流程

许多发生在 Web3 项目上的黑客攻击都可以通过加强智能合约的安全性进行避免。

通常,攻击者会发现并利用整个软件开发环节中的一些缺陷 —— 从设计到部署和维护以及发布新代码等一系列步骤。如果拥有一套标准的智能合约开发和危险应对流程,我们相信安全事件会相应减少。

本篇文章的目的是概述 Web3 建设者、开发人员和安全团队在设计、开发和维护智能合约系统时必须考虑的核心安全因素。以下框架讨论了应在整个软件开发生命周期中实施的八种核心安全因素 —— 从威胁建模到应急响应准备。

在了解智能合约安全防护之前,要先了解软件的开发阶段。软件开发可以分为以下五个阶段:

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

开发:开发人员编写系统的代码。

测试和审查:开发人员将所有模块放在一个测试环境中运行,以此评估代码的准确性和稳定性。

部署:开发人员将系统投入实际环境。

维护:开发人员评估和修改系统以确保它执行预期的功能。

a16z未来将继续与硅谷银行合作:金色财经报道,Andreessen Horowitz向投资者表示,将在未来继续与硅谷银行合作,同时也在制定一项长期的多元化计划。(Business Insider)[2023/3/16 13:06:48]

有了这个基本开发周期的基础,现在我们可以深入了解每个步骤中影响智能合约安全的注意事项。下图将需要考虑的因素对应到相关的开发阶段。需要注意的是,环节中的某些步骤有多方面安全考虑: 

如上所示,软件开发生命周期不一定总是遵循线性路径。在实践中,可能出现重叠或延伸到其他阶段的情况。某些步骤可能在每个版本中都需要重复。一些任务 —— 例如测试和安全审查 —— 可能需要自始至终执行。

上述的软件生命周期和相应的安全注意事项为促进智能合约的安全性提供了有用的基础信息,但我们将在下文中对其进行更详细地研究,使得理解、应用和分享这些实践变得尽可能简单,并具体分析关键问题:What、Why 以及 How。

a16z合伙人Chris Dixon:因投资Coinbase而未投资FTX,离岸交易所不受监管本身就是隐患:12月19日消息,a16z 合伙人 Chris Dixon 近日在 The Block 的播客 The Scoop 中谈到为什么 a16z 从未投资过 FTX等话题。主持人问 Chris Dixon躲过 FTX 是技巧还是运气,对此,Chris Dixon 表示,自己只和 SBF 在线上会议上有过对谈,并无深交。之所以没有投资 FTX 主要是因为投资了 Coinbase,而和 Coinbase 合作的经验告诉他,合规、安全要比灵魂和创新更重要,所以,FTX 这种离岸加密交易所不受监管本身就是一种隐患。

为什么 FTX、Phoenix 等交易所会选择将总部设立在巴哈马群岛?谁来审计他们?Chris Dixon 说道,没有投资 FTX 并非完全出于运气,a16z 在投资领域积累了十多年的经验,会在投资前做大量的工作,并且认真思考什么是真正的技术创新。[2022/12/19 21:54:14]

What:从开发生命周期的一开始就实施识别系统的潜在威胁并确定其优先级的具体方案是很重要的 —— 智能合约开发人员应确定要在开发中实施的所有安全控制以及应在开发中检查的所有威胁测试、审计和监控。所有的安全假设,包括攻击的预期复杂程度和手段,都应在设计阶段明确定义和阐明。

区块链碳信用交易平台Flowcarbon完成7000万美元融资,a16z领投:5月24日消息,区块链碳信用交易平台Flowcarbon完成7000万美元融资,此轮融资由a16z领投,General Catalyst和Samsung Next参投。其中3200万美元通过股权融资形式进行,3800万美元通过Token销售形式进行。Flowcarbon由WeWork创始人Adam Neumann参与支持,该平台允许项目开发商使用区块链技术将其碳信用额度Token化,并进行存储和交易,从而使其获得更低成本的资金并更快地扩展项目。(路透社)[2022/5/24 3:38:33]

Why:虽然开发人员倾向于只关注智能合约或协议的预期用途,但这种关注的单一性可能会给他们留下被攻击者利用的盲点。

How:遵循已知的威胁建模实践。如果开发团队没有内部安全专业知识,那么它应该在设计阶段的早期与安全顾问合作。在设计系统时采用「攻击者」的心态,并假设任何个人、硬件或服务都可能受到攻击。

What:实施访问控制,限制特权账户的权限和智能合约调用执行管理任务的特殊功能(例如升级合约和设置特殊参数)。遵循「最低权限原则」:每个参与者应该只拥有所需的最低访问权限。

Nansen获得a16z领投的1200万美元融资:官方消息,链上数据分析工具Nansen获得1200万美元融资,a16z领投,其它参投机构包括SkyfallVentures、CoinbaseVentures、imTokenVentures、MechanismCapital和QCPCapital,所筹资金将用于1.人才招聘;2.继续发展数据平台以成为第一区块链分析平台;3.壮大加密投资者和交易员社区,包括顶级对冲基金和风险投资基金;4.将服务扩展到其它区块链及Layer2解决方案(Polygon、Optimism、Arbitrum或其它)等等。[2021/6/29 0:14:47]

Why:通过升级和治理流程维护协议允许开发人员通过添加新功能、修补安全问题和优化不断变化的条件来改进协议。如果升级的能力没有得到适当的控制,这可能构成一个严重的安全漏洞。

How:建立一个多重签名钱包或 DAO 合约,将对协议的更改透明化,并且应通过彻底的审查流程以及时间锁(故意延迟制定并具有取消能力),以确保可以验证它们的正确性并在发生治理攻击时回滚。确保特权密钥在自托管钱包或安全托管服务中,且可以被安全地存储和访问。

a16z合伙人:美国财长Mnuchin将加密监管决策讨论期缩减至15天不合适:a16z的普通合伙人,同时也是Coinbase的董事Kathryn Haun今日发推称:

“法规决策过程提供30-60天的通知和评论期是有原因的。这样,政府外的参与者——消费者、行业、相关公共组织、学术界等就有机会权衡和提供政府可能没有考虑到的观点。

事实上,很多人倡导给复杂的领域更长的讨论期。加密货币的全球和分布式本质很复杂,需要这么长时间的讨论期,原因很简单:这是正当程序,能提供被倾听的机会。

昨晚,美国财政部长姆努钦将加密监管决策评论期缩减为15天,a16z和其他加密领域的参与者都觉得不合适。

不仅仅加密领域的参与者这样认为。很多有数十年执法和国家安全经验的人士认为,这项提议的规则对于他们在阻止非法金融上没有帮助,而且更糟的是,只会让美国在加密创新中落后。”[2020/12/20 15:51:19]

What:尽可能利用现有的智能合约标准(例如 OpenZeppelin Contracts)并评估您可能需要与现有协议进行集成中可能出现的安全问题。

Why:使用现有的经过实战检验、社区审核的标准在降低安全风险方面大有帮助。评估协议集成的风险有助于您进行安全检查,以防止针对外部组件的攻击,例如预言机操纵。

How:导入经过安全审计的可信合约库和接口,毕竟 Crypto 和 Web3 的重点是开源、重用和可组合性。请务必在代码库中记录您的合约依赖项及其版本,并尽可能减少您代码的资源占用量;例如,导入大型项目的特定子模块而不是所有内容;了解您的风险敞口,以便监控攻击;使用官方接口调用外部协议,并确保考虑到潜在的集成风险;监控您重复使用的合约的更新和安全信息披露。

What:创建清晰、全面的代码文档,并设置快速、全面、易于运行的测试套件。在可能的情况下,在测试网上或通过主网模拟设置测试环境中进行更深入的实验。

Why:为预期行为编写假设不仅有助于确保威胁模型中的风险得到解决,也有助于用户和外部审计人员了解开发团队的意图。为代码创建测试套件有助于证明或反驳假设,并鼓励对威胁模型进行更深入的思考。该测试套件应包括在极端市场情景下检查项目代币经济学的机制设计测试,以及单元测试和集成测试。

How:通过已知的测试框架和安全检查应用进行测试 —— 例如 Hardhat、 Mythril、 Slither、 Truffle 等;提供不同的测试技术,例如模糊测试(fuzzing)、属性检查(property-checking),甚至形式验证(formal verification);全面记录您的代码,使用 NatSpec 注释来指定预期的副作用、参数和返回值。使用文档生成工具和高级设计说明生成实时文档。 

What:花时间通过内部和外部代码审计来发现错误。

Why:从功能开发转移到安全问题上,让开发人员有时间发现潜在的安全问题。外部审计在这方面可能特别有用,因为它们可以带来开发团队没有的外部观点和专业知识。

How:在项目开发的适当时刻,安排功能冻结,以便有时间进行内部审查,然后进行外部审计。这些动作应该在实时部署和升级之前进行,可以查看来自 ConsenSys、Nascent、OpenZeppelin 和 Trail of Bits 的指南,这些指南为开发人员提供了考虑事项清单 —— 包括时间安排 —— 供任何准备审计的人使用。还要确保查看部署事务以确保它们使用经过审核的代码版本并具有适当的参数,尤其是在升级软件时。

What:创建鼓励社区参与开源代码库安全改进的计划。一种方法是建立漏洞赏金。另一种方法是鼓励社区开发协议监控检测机器人。

Why:开发团队可以从更广泛的知识和经验中受益(同样,开源也有助于 Crypto 发展)。值得注意的是,此类程序可以帮助激发开发者对项目的热情,实质上将社区和白帽黑客变成了传道者。它们还可以通过为黑客提供成为防御者的途径来帮助将潜在的攻击者转变为守护者。

How:使用漏洞赏金平台(例如 Code4rena、HackenProof、 Immunefi 或 Secureum)为赏金系统提供基于严重程度的奖励,以激励熟练的黑客披露漏洞。(披露:本文的一些共同作者为 Forta 工作,该网络有一个为创建去中心化高质量安全监控机器人提供代币激励结构的网络。)开发团队可以鼓励他们的协议社区利用传统和 Web3 原生的方法来激励对漏洞的寻找,并让参与者通过增强安全性来获得潜在奖励,从而为所有人带来双赢。

What:实施监控智能合约和关键运营组件(如预言机和跨链桥)的系统,并根据已知威胁模型向开发团队和社区报告可疑活动。

Why:早期发现问题使团队能够快速对漏洞和错误进行响应,从而可能阻止或减轻损害。这似乎很容易想到,但在规划中可能会被忽略。

How:使用监控平台或分布式节点运行实时监控智能合约事件的机器人。根据需要为开发团队和更广泛的社区建立仪表板和警报通知。

What:利用能够在出现任何安全问题时立即做出响应的工具和流程。

Why:即使有最好的部署前保护措施,智能合约和关键组件(例如预言机和跨链桥)仍然可能存在临时问题。拥有专门的人员、清晰的流程和适当的自动化确保可以快速调查并尽快解决事件。

How:通过计划如何响应事件或紧急情况以及最大程度地使得响应能力自动化,为最坏的情况做准备。包括为有能力的人员分配调查和响应责任,这些人员可以通过分布式安全邮件列表、代码存储库中的说明或智能合约注册表公开联系与安全问题相关的人员。根据协议的威胁模型,开发一套流程,其中可能包括场景演习和采取紧急行动的预期响应时间。考虑将自动化集成到事件响应中:例如,工具可以接收来自 Forta 机器人的事件并对其采取行动。

对于安全的考虑应该是成功开发的一个组成部分,而不仅仅是事后的想法。 

尽管上述框架为构建 Web3 协议和应用的团队在整个开发过程中提高安全性方面提供了一些快速指南,但简短概述不足以提供对智能合约安全性各个方面的详尽讨论。缺乏内部安全专业知识的团队应该联系合格的 Web3 安全专家,他们可以帮助团队将上述的通用指导应用于他们的具体情况。但最重要的是,请记住,安全绝不仅仅是在简单的清单中打勾以管理复杂的问题,它始终是一套永无止境、持续不断的实践过程。我们仍处于建立这些实践的开始阶段,因此现在是为所有开发人员协作创建和共享安全实践的时候了。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

比特币行情Web3在遥远的未来?不 它已经来了

FaceBook更名MeTa,让元宇宙一词火爆出圈,一时风头无两。在确定了元宇宙未来方向的同时,也同时给目前人类互联网时代的发展方向确定了目标。而究竟如何才能到达人们对于元宇宙的愿景,人们需要找到一条新的道路,于是web3.0被提及.

ICP慢雾:NFT 项目 verb 钓鱼网站分析

据慢雾区情报,发现 NFT 项目 verb 钓鱼网站如下:钓鱼网站 1:https://mint-here.xyz/verblabs.html钓鱼网站 2:https://verb-mint.netlify.app我们先来分析钓鱼网站.

[0:15ms0-1:452ms