Web3项目在开发生命周期的各个阶段都应考虑添加保障安全性的流程。
许多发生在Web3项目上的黑客攻击都可以通过加强智能合约的安全性进行避免。
通常,攻击者会发现并利用整个软件开发环节中的一些缺陷——从设计到部署和维护以及发布新代码等一系列步骤。如果拥有一套标准的智能合约开发和危险应对流程,我们相信安全事件会相应减少。
本篇文章的目的是概述Web3建设者、开发人员和安全团队在设计、开发和维护智能合约系统时必须考虑的核心安全因素。以下框架讨论了应在整个软件开发生命周期中实施的八种核心安全因素——从威胁建模到应急响应准备。
在了解智能合约安全防护之前,要先了解软件的开发阶段。软件开发可以分为以下五个阶段:
设计:开发人员描述系统所需的功能和操作,包括重要的基准和固定的属性。
开发:开发人员编写系统的代码。
测试和审查:开发人员将所有模块放在一个测试环境中运行,以此评估代码的准确性和稳定性。
部署:开发人员将系统投入实际环境。
维护:开发人员评估和修改系统以确保它执行预期的功能。
“Twitter替代品”Post News获a16z投资:11月29日消息,“两周前刚刚公开的“Twitter替代品”Post News宣布已获得a16z和纽约大学教授兼科技评论员Scott Galloway投资,具体投资金额暂未对外披露。
Post News表示将提供“无需订阅或广告的优质新闻内容”,目前已推出测试版,其中有类似于Twitter的基本功能,如发帖、点赞和转发。分析认为a16z投资Twitter竞争对手行为是个“奇怪的选择”,因为该风投在马斯克收购Twitter中贡献4亿美元。(TechCrunch)[2022/11/29 21:09:44]
有了这个基本开发周期的基础,现在我们可以深入了解每个步骤中影响智能合约安全的注意事项。下图将需要考虑的因素对应到相关的开发阶段。需要注意的是,环节中的某些步骤有多方面安全考虑:?
社交协议Farcaster完成3000万美元融资,a16z领投:7月13日消息,去中心化社交协议 Farcaster 完成 3000 万美元融资,本轮融资由 a16z 领投,Standard Crypto、Elad Gil、1confirmation、Scalar Capital、First Round Capital、Volt Capital、A Capital、Todd and Rahul's Angel Fund、Coinbase Ventures、Mischief、Ansa Capital、Haystack、Ribbit Capital、Chapter One、Multicoin Capital 、Offline Ventures、Archetype、Canonical Crypto、Proof Group、Floodgate、Balaji Srinivsasan、6529、Ray Tonsing 等参投。Farcaster 已发布协议和客户端初始版本,正在开发 Farcaster v2 中,并计划在今年晚些时候推出。[2022/7/13 2:09:14]
如上所示,软件开发生命周期不一定总是遵循线性路径。在实践中,可能出现重叠或延伸到其他阶段的情况。某些步骤可能在每个版本中都需要重复。一些任务——例如测试和安全审查——可能需要自始至终执行。
Web3身份验证公司Dynamic完成a16z领投的750万美元种子轮融资:6月29日消息,Web3身份验证初创公司Dynamic完成750万美元种子轮融资,a16z领投,Castle Island Ventures、Solana Ventures、Circle Ventures、Breyer Capital、Hypersphere、Chapter One等参投。新融资将用于扩充团队以及启动其平台。
据介绍,Dynamic于去年12月成立,并于今年4月完成种子轮融资,目前的员工人数为8人。Dynamic致力于为不同类型的公司提供身份验证服务,其客户包括Llama、Popartcats、Handstamp和Lunchclub。此外,Dynamic平台封闭测试版已开放,预计将于今年晚些时候全面推出。(The Block)[2022/6/29 1:37:46]
上述的软件生命周期和相应的安全注意事项为促进智能合约的安全性提供了有用的基础信息,但我们将在下文中对其进行更详细地研究,使得理解、应用和分享这些实践变得尽可能简单,并具体分析关键问题:What、Why以及How。
设计阶段的智能合约安全注意事项
Rally联合创始人成立加密风投工作室SuperLayer,a16z创始人等人承诺投资:10月30日消息,Rally联合创始人Kevin Chou和Mahesh Vellanki周五宣布成立SuperLayer。SuperLayer是一家加密风险投资工作室,帮助直接在Rally网络上构建Web 3项目。据悉,加密社交平台Rally允许创作者和艺术家发行自己的数字货币。在招聘产品经理以进一步发展业务之前,该风险投资工作室将在内部启动项目。
SuperLayer得到知名投资者的支持承诺,包括风险投资公司Andreessen Horowitz(a16z)联合创始人Marc Andreessen、Chris Dixon、Paris Hilton、Nas、Michael Ovitz、Carter Reum等。最初,SuperLayer将部署2500万美元的种子投资,并将继续持续筹集资金。(Cointelegraph)[2021/10/30 6:21:21]
考虑威胁建模和安全设计
What:从开发生命周期的一开始就实施识别系统的潜在威胁并确定其优先级的具体方案是很重要的——智能合约开发人员应确定要在开发中实施的所有安全控制以及应在开发中检查的所有威胁测试、审计和监控。所有的安全假设,包括攻击的预期复杂程度和手段,都应在设计阶段明确定义和阐明。
a16z、Coinbase Ventures等公司加入繁荣联盟:风险投资公司Andreessen Horowitz(a16z)、Coinbase Ventures、Polychain Capital和其他几家加密货币公司已加入“繁荣联盟”(Alliance for Prosperity),在Celo区块链上构建金融应用程序。Celo Foundation称该联盟的50个初始成员将致力于实现金融普惠性,并探讨多种使用案例,例如汇款、人道主义援助和小额贷款。(The Block)[2020/3/11]
Why:虽然开发人员倾向于只关注智能合约或协议的预期用途,但这种关注的单一性可能会给他们留下被攻击者利用的盲点。
How:遵循已知的威胁建模实践。如果开发团队没有内部安全专业知识,那么它应该在设计阶段的早期与安全顾问合作。在设计系统时采用「攻击者」的心态,并假设任何个人、硬件或服务都可能受到攻击。
开发阶段的安全考虑
考虑管理和访问控制
What:实施访问控制,限制特权账户的权限和智能合约调用执行管理任务的特殊功能。遵循「最低权限原则」:每个参与者应该只拥有所需的最低访问权限。
Why:通过升级和治理流程维护协议允许开发人员通过添加新功能、修补安全问题和优化不断变化的条件来改进协议。如果升级的能力没有得到适当的控制,这可能构成一个严重的安全漏洞。
How:建立一个多重签名钱包或DAO合约,将对协议的更改透明化,并且应通过彻底的审查流程以及时间锁,以确保可以验证它们的正确性并在发生治理攻击时回滚。确保特权密钥在自托管钱包或安全托管服务中,且可以被安全地存储和访问。
考虑集成可重复使用、久经考验的模板
What:尽可能利用现有的智能合约标准并评估您可能需要与现有协议进行集成中可能出现的安全问题。
Why:使用现有的经过实战检验、社区审核的标准在降低安全风险方面大有帮助。评估协议集成的风险有助于您进行安全检查,以防止针对外部组件的攻击,例如预言机操纵。
How:导入经过安全审计的可信合约库和接口,毕竟Crypto和Web3的重点是开源、重用和可组合性。请务必在代码库中记录您的合约依赖项及其版本,并尽可能减少您代码的资源占用量;例如,导入大型项目的特定子模块而不是所有内容;了解您的风险敞口,以便监控攻击;使用官方接口调用外部协议,并确保考虑到潜在的集成风险;监控您重复使用的合约的更新和安全信息披露。
测试和审查阶段的安全注意事项
考虑测试和项目文档
What:创建清晰、全面的代码文档,并设置快速、全面、易于运行的测试套件。在可能的情况下,在测试网上或通过主网模拟设置测试环境中进行更深入的实验。
Why:为预期行为编写假设不仅有助于确保威胁模型中的风险得到解决,也有助于用户和外部审计人员了解开发团队的意图。为代码创建测试套件有助于证明或反驳假设,并鼓励对威胁模型进行更深入的思考。该测试套件应包括在极端市场情景下检查项目代币经济学的机制设计测试,以及单元测试和集成测试。
How:通过已知的测试框架和安全检查应用进行测试——例如Hardhat、?Mythril、?Slither、Truffle等;提供不同的测试技术,例如模糊测试、属性检查,甚至形式验证;全面记录您的代码,使用NatSpec注释来指定预期的副作用、参数和返回值。使用文档生成工具和高级设计说明生成实时文档。?
考虑内部审查和安全审计
What:花时间通过内部和外部代码审计来发现错误。
Why:从功能开发转移到安全问题上,让开发人员有时间发现潜在的安全问题。外部审计在这方面可能特别有用,因为它们可以带来开发团队没有的外部观点和专业知识。
How:在项目开发的适当时刻,安排功能冻结,以便有时间进行内部审查,然后进行外部审计。这些动作应该在实时部署和升级之前进行,可以查看来自ConsenSys、Nascent、OpenZeppelin和TrailofBits的指南,这些指南为开发人员提供了考虑事项清单——包括时间安排——供任何准备审计的人使用。还要确保查看部署事务以确保它们使用经过审核的代码版本并具有适当的参数,尤其是在升级软件时。
部署和维护阶段的安全注意事项
考虑激励白帽社区参与
What:创建鼓励社区参与开源代码库安全改进的计划。一种方法是建立漏洞赏金。另一种方法是鼓励社区开发协议监控检测机器人。
Why:开发团队可以从更广泛的知识和经验中受益。值得注意的是,此类程序可以帮助激发开发者对项目的热情,实质上将社区和白帽黑客变成了传道者。它们还可以通过为黑客提供成为防御者的途径来帮助将潜在的攻击者转变为守护者。
How:使用漏洞赏金平台为赏金系统提供基于严重程度的奖励,以激励熟练的黑客披露漏洞。开发团队可以鼓励他们的协议社区利用传统和Web3原生的方法来激励对漏洞的寻找,并让参与者通过增强安全性来获得潜在奖励,从而为所有人带来双赢。
考虑实时监控
What:实施监控智能合约和关键运营组件的系统,并根据已知威胁模型向开发团队和社区报告可疑活动。
Why:早期发现问题使团队能够快速对漏洞和错误进行响应,从而可能阻止或减轻损害。这似乎很容易想到,但在规划中可能会被忽略。
How:使用监控平台或分布式节点运行实时监控智能合约事件的机器人。根据需要为开发团队和更广泛的社区建立仪表板和警报通知。
考虑事件应急响应流程
What:利用能够在出现任何安全问题时立即做出响应的工具和流程。
Why:即使有最好的部署前保护措施,智能合约和关键组件仍然可能存在临时问题。拥有专门的人员、清晰的流程和适当的自动化确保可以快速调查并尽快解决事件。
How:通过计划如何响应事件或紧急情况以及最大程度地使得响应能力自动化,为最坏的情况做准备。包括为有能力的人员分配调查和响应责任,这些人员可以通过分布式安全邮件列表、代码存储库中的说明或智能合约注册表公开联系与安全问题相关的人员。根据协议的威胁模型,开发一套流程,其中可能包括场景演习和采取紧急行动的预期响应时间。考虑将自动化集成到事件响应中:例如,工具可以接收来自Forta机器人的事件并对其采取行动。
对于安全的考虑应该是成功开发的一个组成部分,而不仅仅是事后的想法。?
尽管上述框架为构建Web3协议和应用的团队在整个开发过程中提高安全性方面提供了一些快速指南,但简短概述不足以提供对智能合约安全性各个方面的详尽讨论。缺乏内部安全专业知识的团队应该联系合格的Web3安全专家,他们可以帮助团队将上述的通用指导应用于他们的具体情况。但最重要的是,请记住,安全绝不仅仅是在简单的清单中打勾以管理复杂的问题,它始终是一套永无止境、持续不断的实践过程。我们仍处于建立这些实践的开始阶段,因此现在是为所有开发人员协作创建和共享安全实践的时候了。
1.金色观察|从链上数据看加密行情的新变化最新数据显示,“加密市场崩盘”词条正在全球范围内主导谷歌搜索趋势.
1900/1/1 0:00:00看跌的加密货币市场对NFT的热度产生了重大影响。在5月的最后几天,就Google数据而言,对NFT的兴趣达到了26的低点。这相当于在不到六个月的时间内下降了76%.
1900/1/1 0:00:00目前,国内数字藏品市场火热,是NFT技术主要应用落地的行业领域。在政府加大行业管控力度,三部委发“防范NFT金融炒作风险倡议”的背景下,NFT产业的商业化之路得以规范化发展,终端用户面对以往炒作.
1900/1/1 0:00:002022年,国内多地政府推动元宇宙产业前瞻性布局,并陆续出台相关配套政策。无论是政府,还是商业机构,都极其看中元宇宙重构社交模式、搭建模拟场景、提供交互平台,对行业变革和新经济发展、推动实体经济.
1900/1/1 0:00:00OpenSea带来的NFT狂热大潮在慢慢退去,其所带来的争议依然还在。近日,美国司法部对一名OpenSea的前员工提出NFT内幕交易指控.
1900/1/1 0:00:005月23日消息,全球电商巨头eBay宣布已经与NFT平台OneOf达成合作,首次发行NFT系列.
1900/1/1 0:00:00