火星链 火星链
Ctrl+D收藏火星链
首页 > 莱特币 > 正文

WEB:Web3 项目安全实践要求

作者:

时间:1900/1/1 0:00:00

前言

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

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

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

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

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

0x01 开发准备

需求分析文档要求

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

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

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

开发设计文档要求

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

Web3教育公司Upstream推出“Learn and Earn”DAO课程:金色财经报道,Web3 教育公司 Upstream 宣布将很快发布My First DAO ,这是一门在线课程,教学生构建去中心化自治组织 (?DAO?)所需的工具。My First DAO 将使用“learn and earn”模式,这意味着它将奖励参与该计划的学生。学生必须铸造一个“DAOphin”,这是一种以海豚为主题的NFT,由流行Goblintown系列背后的艺术家Process Gray设计。

在 24 周结束时,学生将能够燃烧他们的DAOphin NFT以获得具有内置稀有特征的生成艺术等价物。学生可以通过参加课程来增加获得具有稀有特征的 NFT 的机会。[2023/5/23 15:19:57]

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

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

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

业务流程文档要求

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

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

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

智能合约安全编码要求

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

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

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

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

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

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

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

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

Web3游戏工作室Unagi完成500万美元种子轮融资:金色财经报道,Web3 游戏工作室 Unagi 完成500 万美元种子轮融资,Sisu Game Ventures 领投,Sfermion、Signum Capital 和 2B Ventures 等公司参投。此次融资于今年年初结束,距离这家初创公司从 Binance Labs 获得 420 万美元仅几个月的时间。Unagi 筹集的总金额为 1230 万美元。该公司表示,新的融资使这家初创公司的估值翻了一番,但没有透露。[2023/2/17 12:13:17]

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

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

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

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

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

13. 使用 call 等 low level 调用的时候要根据业务需要限制 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 变量进行赋值/读取

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

Paradigm 位居加密研究组织 GCR推出 的Web3 VC 排行榜第一:9月28日消息,加密研究组织 GCR 联合咨询工作室 Clearblock 推出 2022 年Web3 VC 排行榜 50 强,衡量因素包括投资组合、竞争优势、平台战略、社区和声誉、2022 年交易数量等。

根据排行榜,分数排名前 20 的 Web3 VC 分别是 Paradigm、a16z Crypto、Panetera Capital、Coinbase Ventures、Polychain Capital、Dragonfly Capital、Sequoia、Variant Fund、Electric Capital、Multicoin Capital、ParaFi Capital、Digital Currency Group、Blockchain Capital、Union Square Ventures、Spartan Group、Alameda Research、Binance Labs、Animoca Brands、CoinFund。[2022/9/28 5:55:47]

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

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

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

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

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

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

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

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

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

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

DTCP将以软银支持的 3 亿美元资金投资 web3:9月20日消息,专注于早期成长阶段投资的德国风险投资机构DTCP(Digital Transformation Capital Partners)宣布旗下增长股权基金GE III完成首轮3亿美元募资,投资方包括德国电信、软银、以及一些养老基金、企业、和家族投资办公室等机构。

据悉,该基金仍会继续募资,并计划在2023年完成全部融资轮,DTCP将投资网络安全、Web3、人工智能、金融科技、垂直SaaS解决方案等领域并专注于欧洲、以色列和美国市场。(Tech Funding News)[2022/9/20 7:08:27]

测试用例代码要求

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

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

基础安全配置要求

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

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

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

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

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

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

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

Web 前端安全配置要求

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

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

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

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

模块化DeFi协议Encentive的Web3操作系统已集成Alchemy Pay支付功能:6月14日消息,模块化DeFi协议Encentive的Web3操作系统已集成Alchemy Pay支付功能,支持用户通过法定货币和加密货币进入Web3领域,同时,用户可以将他们的加密资金转换为100多种当地法定货币,并直接存入银行账户。据悉,Encentive是一个用于构建DeFi系统的平台,允许企业或者社区使用模块化的组件部署去中心化交易所、高产农业、借贷市场等DeFi项目。[2022/6/14 4:25:41]

(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,采用 SSH Key 进行登录,设置 SSH 登录 alert,设置 SSH 登录 google-auth 等

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

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

0x03 发布过程

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

代码冻结要求

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

单元测试要求

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

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

回归测试要求

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

测试报告要求

上线前 0.5 天由开发及测试共同完成测试报告,如果不通过(含单元测试、回归测试),则推迟上线时间,开发完成修改后重新进入代码冻结阶段(即推迟至少 2 天)

安全审计要求

1. 安全审计人员在代码冻结后进入整体安全回归,如发现任一漏洞或安全隐患(严重、高危、中危),则推迟上线时间,开发完成修改后重新进入代码冻结(即推迟至少 2 天)

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

运行时安全监控

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

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

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

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

运行环境安全加固

1. 确保实施前端代码所在服务器的安全加固,如:安装 HIDS (https://www.aliyun.com/product/aegis),采用 SSH Key 进行登录,设置 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 配置开启了 DNS Sec,在域名服务管理平台上为管理账号设置强口令并开启 2 次认证

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

发布漏洞赏金计划

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

成立名义应急小组

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

完备的应急处置流程

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

止损处置要求

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 版本,并且还在持续的完善,如果你有更好的建议,欢迎提交反馈。

慢雾科技

个人专栏

阅读更多

金色财经 善欧巴

金色早8点

白话区块链

Odaily星球日报

Arcane Labs

欧科云链

MarsBit

深潮TechFlow

BTCStudy

链得得

标签:WEBBSPNBSHTTweb3.0币种BSP价格nbs币官网CHTT币

莱特币热门资讯
RON:Ronin 黑客计中计 听说过扭曲攻击漏洞吗?

By: Johan据慢雾安全团队情报,2023 年 3 月 13 日,Ethereum 链上的借贷项目 Euler Finance 遭到攻击,攻击者获利约 2 亿美元.

1900/1/1 0:00:00
BTC:金色早报 | Coinbase已与加拿大监管机构签署预注册承诺

头条▌Coinbase已与加拿大监管机构签署预注册承诺金色财经报道,Coinbase在最新发布的博客文章中表示,已于3月24日与加拿大监管机构签署了一份加强版预注册承诺.

1900/1/1 0:00:00
AVE:从存储到计算 去中心化存储复兴

作者:Leo, IOSG Ventures概要:Arweave协议设计从技术上保证永久存储的实现,更适用于高价值数字资产,如NFT metadata的保存数据存储之上,更需要计算.

1900/1/1 0:00:00
以太坊:倒计时26天:上海升级已定 以太坊将发生哪些重大变化?

3月16日,据以太坊核心开发者Tim Beiko 的推文,以太坊基金会核心开发团队已经确认上海升级将于网路区块高度6209536 时进行,具体为UTC 时间4月12日晚上22:27:35.

1900/1/1 0:00:00
BTC:比特币消化监管利空 3万美元为看涨突破口

加密市场似乎已经消化了美CFTC起诉币安的监管利空。比推终端数据显示,截至发稿时,比特币的交易价格为 28,341.07 美元,在过去 24 小时内上涨了 5.36%,自年初以来,比特币已反弹近.

1900/1/1 0:00:00
ETH:解密 Etherscan:年赚千万美元 区块链浏览器背后的生意经

原文标题:《Etherscan: The Master of Block Explorers》作者:LaunchyEtherscan 是一个帮助用户浏览以太坊区块链的工具.

1900/1/1 0:00:00