Web3 项目安全实践要求

前言

慢雾安全团队开源--?Web3项目安全实践要求,提供了详细的实践要求和建议来帮助Web3项目研发团队识别和防范这些潜在的安全风险。Web3项目方可以参考本文提供的安全实践要求,掌握相应的安全技能,提高Web3项目的安全性,以便更好地保护项目和用户的资产安全。

Web3项目安全实践要求包含如下的内容:

0x00背景概述

现今针对Web3项目的攻击手法层出不穷,且项目之间的交互也越发复杂,在各个项目之间的交互经常会引入新的安全问题,而大部分Web3项目研发团队普遍缺少的一线的安全攻防经验,并且在进行Web3项目研发的时候重点关注的是项目整体的商业论证以及业务功能的实现,而没有更多的精力完成安全体系的建设,因此在缺失安全体系的情况下很难保证Web3项目在整个生命周期的安全性。

通常项目方团队为了确保Web3项目的安全会聘请优秀的区块链安全团队对其代码进行安全审计,在进行安全审计的时候,才能够更好地实现各种安全实践要求,但是区块链安全团队的审计仅仅是短期的引导,并不能让项目方团队建立属于自己的安全体系。

因此慢雾安全团队开源了Web3项目安全实践要求来持续性帮助区块链生态中的项目方团队掌握相应的Web3项目的安全技能,希望项目方团队能够基于Web3项目安全实践要求建立和完善属于自己的安全体系,在审计之后也能具备一定的安全能力。

0x01开发准备

需求分析文档要求

NEAR基金会与Kakao Games旗下Web3游戏METABORA SG达成合作:3月6日消息,NEAR基金会和Kakao Games旗下Web3游戏项目METABORA SINGAPORE(简称METABORA SG)签署了一份战略谅解备忘录。

根据协议条款,NEAR和METABORA SG将相互合作以发掘一个基于IP的全球Web3联合业务,通过跨链提高区块链生态系统的整体流动性,提高品牌知名度,通过赛事推动全球营销,建立一个积极的支持系统以加强核心网络。(PR Newswire)[2023/3/7 12:45:41]

1.?确保包含项目的详尽描述

2.?确保包含项目解决的问题

3.?确保包含安全/隐私风险评估

开发设计文档要求

1.?确保包含项目的架构设计图

2.?确保包含代码中函数的功能描述

3.?确保包含代码中合约之间的关联关系描述

4.确保安全/隐私的要求被正确实施

业务流程文档要求

1.?确保包含项目中每个业务流程的描述

2.?确保包含详尽的业务流程图

3.?确保包含详尽的资金链路图

0x02开发过程

智能合约安全编码要求

1.确保包含尽可能基于OpenZeppelin等知名library进行开发

2.确保包含使用SafeMath或0.8.x的编译器来避免绝大部分溢出问题

3.确保遵循函数命名规范,参考:soliditystyleguide

(https://docs.soliditylang.org/en/v0.8.14/style-guide.html)

4.确保函数和变量可见性采用显性声明

5.确保函数返回值被显性赋值

6.确保函数功能和参数注释完备

日本IT巨头GMO Internet计划6月下旬成立Web3风投基金:6月9日消息,日本IT巨头GMO Internet计划于6月下旬成立新的企业风险投资基金(CVC),将专注于投资Web3领域。GMO的新风投基金将为Web3初创公司以及加密货币交易领域的Web3相关技术提供资金支持,但尚未透露投资规模和单笔投资金额。此外,GMO旗下加密资产交易所GMO Coin将负责审查目标初创公司的业务内容和资金使用情况。(Coinpost)[2022/6/9 4:13:41]

7.确保外部调用正确检查返回值,包含:transfer,transferFrom,send,call,delegatecall等

8.确保interface的参数类型返回值等实现是正确的

9.确保设置合约关键参数时有进行鉴权并使用事件进行记录

10.确保可升级模型的新的实现合约的数据结构与旧的实现合约的数据结构是兼容的

11.确保代码中涉及算数运算的逻辑充分考虑到精度问题,避免先除后乘导致可能的精度丢失的问题

12.确保call等lowlevel调用的目标地址和函数是预期内的

13.使用call等lowlevel调用的时候要根据业务需要限制Gas

14.编码规范进行约束,遵循:先判断,后写入变量,再进行外部调用(Checks-Effects-Interactions)

15.确保业务上交互的外部合约是互相兼容的,如:通缩/通胀型代币,ERC-777,ERC-677,ERC-721等可重入的代币,参考:重入漏洞案例

(https://medium.com/amber-group/preventing-re-entrancy-attacks-lessons-from-history-c2d96480fac3)

16.确保外部调用充分考虑了重入的风险

17.避免使用大量循环对合约的storage变量进行赋值/读取

奥斯汀市长提出新举措,支持Web3技术和加密支付:3月14日消息,德州奥斯汀市市长Steve Adler提出了两项新举措,以采用区块链技术和加密支付。

第一个计划旨在确保奥斯汀市促进区块链技术带来的好处,并在技术生态系统中“促进公平、多样性、可达性和包容性”。为此,May Adler指导城市经理探索如何在20个领域利用Web3和区块链,从智能合约、供应链管理、保险到艺术、媒体、筹款和身份验证。(Cointelegraph)[2022/3/14 13:55:15]

18.尽可能避免权限过度集中的问题,特别是修改合约关键参数部分的权限,要做权限分离,并尽可能采用治理,timelock合约或多签合约进行管理

19.合约的继承关系要保持线性继承,并确保继承的合约业务上确实需要

20.避免使用链上的区块数据作为随机数的种子来源

21.确保随机数的获取和使用充分考虑回滚攻击的可能

22.尽量使用Chainlink的VRF来获取可靠的随机数,参考:ChainlinkVRF

(https://docs.chain.link/vrf/v2/introduction)

23.避免使用第三方合约的token数量直接计算LPToken价格,参考:如何正确获取LP的价

(https://blog.alphaventuredao.io/fair-lp-token-pricing/)

24.通过第三方合约获取价格的时候避免单一的价格来源,建议采用至少3个价格来源

25.尽可能在关键的业务流程中使用事件记录执行的状态用于对项目运行时的数据分析

26.预留全局与核心业务紧急暂停的开关,便于发生黑天鹅事件的时候及时止损

测试用例代码要求

1.?确保包含业务流程/函数功能可用性测试

2.确保包含单元测试覆盖率95%以上,核心代码覆盖率要达到100%

Aave背后团队推出Web3社交媒体平台Lens Protocol:金色财经报道,去中心化金融(DeFi)借贷平台 Aave 背后团队周一宣布推出Lens Protocol,这是一个免许可、可组合、去中心化的社交媒体协议,允许任何人创建非托管社交媒体资料并构建新的社交媒体应用程序。互操作性和可组合性是该平台的关键特性。

团队表示,Lens Protocol 具有基本的社交媒体功能,例如个人资料、评论、转发帖子等, 但与过去的社交媒体不同,Lens Protocol 由 NFT 提供支持,因此用户拥有和控制个人的所有内容。Lens Protocol 是完全开源的,供社区使用,用户可以构建社交应用程序、分析平台、验证系统、DAO 工具等等。[2022/2/8 9:37:09]

基础安全配置要求

1.?确保官方邮箱使用知名服务商,如Gmail

2.确保官方邮箱账号强制开启MFA功能

3.确保使用知名域名服务商,如GoDaddy

4.确保域名服务商平台的账号开启MFA安全配置

5.确保使用优秀的CDN服务提供商,如Akamai、Cloudflare

6.确保DNS配置开启了DNSSec,在域名服务管理平台上为管理账号设置强口令并开启MFA认证

7.确保全员的手机和电脑设备使用杀软件,如卡巴斯基、AVG等

Web前端安全配置要求

1.?确保全站的HTTP通讯采用HTTPS

2.确保配置了HSTS,以防止中间人攻击,如:DNShijacking,BGPhijacking,参考:HSTS配置介绍

(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security)

3.确保配置了X-FRAME-OPTIONS,以防止Clickjacking攻击,参考:X-FRAME-OPTIONS配置介绍

Terra创始人发布2022年加密行业预测:向Web 3的认知转变已经开始:12月31日消息,Terra创始人Do Kwon在个人社交媒体平台发布了对2022年行业发展的预测,他表示,2021年对于Terra和加密行业来说是伟大的一年,加密行业从DeFi热潮延续到NFT热潮,Layer1也得到了迅猛发展,产生数十亿美元收益。虽然许多人批评说:DeFi是Token印钞机、「GameFi只是变相收益耕作」、NFT只是JPEG,但这种看法是不对的。对我来说,加密最令人兴奋的事情是促进人类活动从实体世界到互联网的大迁移,并创造一个不受性别、地理位置等物理定律约束,而仅受人类智慧约束的世界。DoKwon认为,Web3肯定不会只是融入Token的Minecraft(我的世界),DeFi也会发生转变,如今热门DeFi应用仍是一些Web2世界里的应用,比如交易平台、保险等,但现在,向Web3的认知转变已经开始。[2021/12/31 8:16:10]

(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options)

4.确保配置了X-Content-Type-Options,以对抗浏览器sniff?为导致的?险,参考:X-Content-Type-Options配置介绍

(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options)

5.确保配置了CSP策略,以防止XSS攻击,参考:CSP内容安全策略介绍

(https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)

6.确保与权限和用户凭证相关的Cookie配置了HttpOnly,Secure,Expires,SameSite标志,参考:Cookie配置介绍

(https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)

7.确保不同业务的子域严格划分开,避免子域的XSS问题互相影响

8.确保引用的第三方资源使用了integrity属性进行限制,避免第三方被黑导致项目方的站点受到影响,参考:SRI配置介绍

(https://developer.mozilla.org/zh-CN/docs/Web/Security/Subresource_Integrity)

9.确保正确配置CORS,仅允许指定origin域,协议和端口访问项目的资源,参考:CORS配置介绍

(https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS)

10.确保业务中实现的addEventListener/postMessage有检查消息的origin和target,参考:postMessage安全介绍?

(https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage)

后端环境安全配置要求

1.确保选用优秀的云服务器提供商,如:AWS、Google云等

2.确保项目使用到的云平台管理账号使用强口令并开启MFA认证

3.确保项目代码部署到服务器前对服务器进行安全加固,如:安装HIDS,采用SSHKey进行登录,设置SSH登录alert,设置SSH登录google-auth等

4.确保使用专业软件监控服务、服务器可用性,如APM、Zabbix

5.确保使用专业的机构定期测试项目安全性,如SlowMist、TrailofBits等

0x03发布过程

需要有完备的安全上线发布流程,可以参考如下的内容进行细化:

代码冻结要求

在预计的上线时间倒推2天,即上线2天前必须冻结代码不再做任何代码改动

单元测试要求

1.?确保单元测试覆盖率95%以上,核心代码覆盖率100%

2.确保输出单元测试的覆盖率报告

回归测试要求

在上线1天前执行单元测试并进行回归测试

测试报告要求

上线前0.5天由开发及测试共同完成测试报告,如果不通过,则推迟上线时间,开发完成修改后重新进入代码冻结阶段

安全审计要求

1.?安全审计人员在代码冻结后进入整体安全回归,如发现任一漏洞或安全隐患,则推迟上线时间,开发完成修改后重新进入代码冻结

2.安全审计需要至少三个团队进行独立的审计,可以采用1个内部团队+?2个外部团队

0x04运行期间

运行时安全监控

尽可能的通过关键业务流程中触发的事件来发现项目运行时的安全问题,如:

1.合约关键权限/参数变更:监控管理角色发生变更的事件,管理角色修改合约关键参数的事件,及时发现私钥可能被盗的情况

2.合约资金变化:监控价格变动及合约资金变动的情况,及时发现可能的闪电贷等攻击

3.周期性对账:周期性对链上的事件与交易进行对账,及时发现可能的业务逻辑上的问题

运行环境安全加固

1.确保实施前端代码所在服务器的安全加固,如:安装HIDS(https://www.aliyun.com/product/aegis),采用SSHKey?进行登录,设置SSH登录alert(https://medium.com/@alessandrocuda/ssh-login-alerts-with-sendmail-and-pam-3ef53aca1381),设置SSH登录google-auth(https://goteleport.com/blog/ssh-2fa-tutorial/)?等

2.确保DNS配置开启了DNSSec,在域名服务管理平台上为管理账号设置强口令并开启2次认证

3.确保项目使用到的云平台管理账号使用了强口令并开启了2次认证

发布漏洞赏金计划

发布漏洞赏金计划或入驻知名的漏洞赏金平台,?吸引社区白帽子为项目保驾护航;可以选择?BugRap?(https://bugrap.io/),?code4rena?(https://code4rena.com/),?immunefi?(https://immunefi.com/)

成立名义应急小组

成立名义应急小组并对外提供联系方式,由应急小组负责处理白帽子发现的问题或在黑天鹅事件爆发时主导团队成员进行应急处置

0x05应急处置

完备的应急处置流程

尽可能地制定完备地应急处置流程,有条不紊地根据应急处置流程来处置黑天鹅事件

止损处置要求

1.?根据问题影响的范围和危害程度,及时通过紧急暂停开关进行止损

2.通知社区成员发生黑天鹅事件,避免用户继续与项目进行交互导致亏损

黑客追踪要求

1.迅速分析黑客的获利地址,并留存PC/Web/服务器的访问日志

2.对服务器进行快照,及时保留被黑现场

3.联系专业的安全团队协助进行追踪,如:?MistTrack追踪分析平台?(https://misttrack.io/),?Chainalysis?(https://www.chainalysis.com/)

修复问题要求

1.与专业安全团队讨论问题的最佳修复方案

2.正确实施修复方案并请专业的安全团队进行验证

安全发布要求

执行发布过程要求,确保一切代码的变更均有经过测试和安全审计

复盘分析要求

1.?披露验尸报告并与社区成员同步修复方案及补救措施

2.验尸报告需要同步问题的本质原因,问题的影响范围,具体的损失,问题的修复情况,黑客的追踪等相关进展

总结

安全是动态管理的过程,仅依赖于第三方安全团队的短期审计并不能真正保障项目长期安全稳定地运行。因此,建立和完善Web3项目的安全体系是至关重要的,项目方团队自身具备一定的安全能力才能更好的保障Web3项目安全稳定地运行。

除此之外,我们建议项目方团队还应该积极参与安全社区,学习最新的安全攻防技术和经验,与其他项目方团队和安全专家进行交流和合作,共同提高整个生态的安全性。同时,加强内部安全培训和知识普及,提高全员的安全意识和能力,也是建立和完善安全体系的重要步骤。

最后,Web3项目安全实践要求目前属于v0.1版本,并且还在持续的完善,如果你有更好的建议,欢迎提交反馈。

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

银河链

Coinw金色早报 | 香港Web3Hub生态基金正式启动

头条 ▌以太坊基金会研究员披露质押以太坊或会泄露用户IP地址等信息4月14日消息,以太坊基金会研究员JustinDrake透露,ETH质押者的IP地址作为元数据集的一部分受到了监控,导致加密社区将此视为以太坊的隐私问题.

非小号三个原因浅谈为什么不看好Bitcoin Stamps?

近日,新比特币NFT协议BitcoinStamps因「更永久的存储」而受到一些关注。不同于Ordinals协议的将数据存放在「见证数据」,BitcoinStamps利用2014年就诞生、曾为「RarePepes」提供支持的Counte.

[0:15ms0-1:459ms