Web3项目在开发生命周期的各个阶段都应考虑添加保障安全性的流程。
许多发生在Web3项目上的黑客攻击都可以通过加强智能合约的安全性进行避免。
通常,攻击者会发现并利用整个软件开发环节中的一些缺陷——从设计到部署和维护以及发布新代码等一系列步骤。如果拥有一套标准的智能合约开发和危险应对流程,我们相信安全事件会相应减少。
本篇文章的目的是概述Web3建设者、开发人员和安全团队在设计、开发和维护智能合约系统时必须考虑的核心安全因素。以下框架讨论了应在整个软件开发生命周期中实施的八种核心安全因素——从威胁建模到应急响应准备。
在了解智能合约安全防护之前,要先了解软件的开发阶段。软件开发可以分为以下五个阶段:
设计:开发人员描述系统所需的功能和操作,包括重要的基准和固定的属性。
开发:开发人员编写系统的代码。
测试和审查:开发人员将所有模块放在一个测试环境中运行,以此评估代码的准确性和稳定性。
部署:开发人员将系统投入实际环境。
维护:开发人员评估和修改系统以确保它执行预期的功能。
链游开发商CCP Games完成4000万美元融资,a16z领投:金色财经报道,链游开发商 CCP Games 完成 4000 万美元融资,a16z 领投,Makers Fund、Bitkraft、Kingsway Capital、Nexon、Hashed 等参投。
据悉,CCP Games 本轮融资用于制作一款以 Eve Online 宇宙为背景的新的 3A 区块链游戏。[2023/3/21 13:17:43]
有了这个基本开发周期的基础,现在我们可以深入了解每个步骤中影响智能合约安全的注意事项。下图将需要考虑的因素对应到相关的开发阶段。需要注意的是,环节中的某些步骤有多方面安全考虑:?
如上所示,软件开发生命周期不一定总是遵循线性路径。在实践中,可能出现重叠或延伸到其他阶段的情况。某些步骤可能在每个版本中都需要重复。一些任务——例如测试和安全审查——可能需要自始至终执行。
a16z Crypto建议开发人员在部署ERC-4626前使用其编写的标准属性进行测试:10月28日消息,a16z Crypto编写了代币化资金库标准(ERC-4626)的标准属性,并针对约100个ERC-4626 Vault测试了该属性,发现许多Vault未能遵循标准要求。
a16z Crypto表示,ERC-4626的创建旨在使协议整合更加容易,但调整现有Vault并不简单,每一个ERC-4626 Vault都必须准确执行标准的描述要求,这种复杂性很可能导致安全漏洞。因此 a16z编写了ERC-4626标准属性以捕捉要求中容易被忽视的细节差异,建议开发人员在部署前进行测试以检查潜在问题,Vault集成商也可以在将集成前检查给定的Vault是否符合标准。
根据介绍,ERC-4626于3月正式推出,目前支持该标准的协议包括 Balancer、Maple Finance、Yearn Finance V3、Convex等。[2022/10/28 11:52:25]
上述的软件生命周期和相应的安全注意事项为促进智能合约的安全性提供了有用的基础信息,但我们将在下文中对其进行更详细地研究,使得理解、应用和分享这些实践变得尽可能简单,并具体分析关键问题:What、Why以及How。
a16z创始合伙人Chris Dixon取关Jack Dorsey:金色财经报道,就在Jack Dorsey五天前取消了对Chris Dixon的关注之后,这位a16z创始合伙人今天也在社交媒体上取消了对Jack Dorsey的关注。此外,Chris Dixon还提出在区块链之上构建社交网络需要三个关键要点,分别是:1、低交易费用(存储和计算);2、较短的确认时间;3、富有表现力的编程语言。[2022/5/18 3:25:14]
设计阶段的智能合约安全注意事项
考虑威胁建模和安全设计
What:从开发生命周期的一开始就实施识别系统的潜在威胁并确定其优先级的具体方案是很重要的——智能合约开发人员应确定要在开发中实施的所有安全控制以及应在开发中检查的所有威胁测试、审计和监控。所有的安全假设,包括攻击的预期复杂程度和手段,都应在设计阶段明确定义和阐明。
Why:虽然开发人员倾向于只关注智能合约或协议的预期用途,但这种关注的单一性可能会给他们留下被攻击者利用的盲点。
How:遵循已知的威胁建模实践。如果开发团队没有内部安全专业知识,那么它应该在设计阶段的早期与安全顾问合作。在设计系统时采用「攻击者」的心态,并假设任何个人、硬件或服务都可能受到攻击。
GameFi游戏公会A16完成100万美元种子轮融资:据官方消息,GameFi游戏公会A16公会获得100万美元种子轮融资,投资机构包括想象力基金、科银资本、红链资本、水木未名、DeFi七点钟资本、北方资本、天水资本、极豆资本等。
此外,Yohero与游戏公会A16达成合作协议。A16公会将在Yohero游戏上线后提供20万活跃用户,向Yohero核心社区用户提供账户租赁及代打服务,用户可在Yohero社区向A16公会运营人员提出租赁申请。[2021/9/24 17:03:06]
开发阶段的安全考虑
考虑管理和访问控制
What:实施访问控制,限制特权账户的权限和智能合约调用执行管理任务的特殊功能。遵循「最低权限原则」:每个参与者应该只拥有所需的最低访问权限。
Why:通过升级和治理流程维护协议允许开发人员通过添加新功能、修补安全问题和优化不断变化的条件来改进协议。如果升级的能力没有得到适当的控制,这可能构成一个严重的安全漏洞。
How:建立一个多重签名钱包或DAO合约,将对协议的更改透明化,并且应通过彻底的审查流程以及时间锁,以确保可以验证它们的正确性并在发生治理攻击时回滚。确保特权密钥在自托管钱包或安全托管服务中,且可以被安全地存储和访问。
a16z合伙人:若FinCEN拟议规则继续a16z将在法庭上提出异议:a16z合伙人、Coinbase董事Kathryn Haun今日发推表示,欢迎加密领域合理且经过审查的监管,但试图将监管改革挤进政府的最后阶段,不经过任何程序,这是一个糟糕的主意。FinCEN应该重新考虑,与加密行业进行有意义的磋商,以帮助打击金融犯罪。该规则更有可能阻碍对金融犯罪的起诉,因为它将金融犯罪推向海外,并使其更难追踪。Kathryn Haun还表示,如果这个不明智的规则继续下去,a16z打算和其他人一起在法庭上提出异议,但敦促行政机关做好自己的工作,在一审时评估合法性,而不是把它留给法院去解决无数的法律缺陷。[2021/1/5 16:28:43]
考虑集成可重复使用、久经考验的模板
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.金色观察|三箭资本之后下一个会是BlockFi吗?6月17日,DeFi分析师otteroooo发推表示,数字资产抵押借贷平台BlockFi将有99%的概率在2022年底发生流动性危机,并称,由于Celsius以及三箭资本事件.
1900/1/1 0:00:00“市场已经见底了吗?”这是一个价值亿万美元的问题。如果您在Web3社区中花费一点时间,您会发现麻醉式希望主义者的人数很多。加密集体意识希望相信过去几个月的下跌是“暂时的”,市场价格将很快反弹。诚然,这种乐观情绪难以维持.
1900/1/1 0:00:00金色财经现场报道 亚马逊云首席云计算技术顾问费良宏::金色财经现场报道,在2018FINWISE东京纷智峰会上,亚马逊云首席云计算技术顾问费良宏进行以《AWS上的区块链》为题的演讲.
1900/1/1 0:00:00背景 几周前因为知名媒体的一篇《300万人的第一双“虚拟鞋”》,StepN彻底在国内互联网圈火了一把,甚至引来了知名媒体大V刘润老师的撰文,可以说StepN作为Web3的又一款应用,顺利完成了出圈任务.
1900/1/1 0:00:00头条 ▌瑞典央行行长抨击比特币挖矿过度使用能源金色财经报道,瑞典央行(Riksbank)的一份报告指出,出于对工作量证明能源消耗的担忧,瑞典禁止比特币挖矿。瑞典央行行长抨击比特币挖矿,理由是能源消费猖獗.
1900/1/1 0:00:002017年,DapperLabs团队打造出第一个得到公开关注的NFT项目CryptoKitties,从那之后,NFT就开始成长之路,Rarible、OpenSea、Foundation、Sorare等平台纷纷涌现.
1900/1/1 0:00:00