Moonbeam团队发布针对自定义预编译的紧急安全修复

163 篇文章 1 订阅
58 篇文章 1 订阅

2022年5月27日,Moonriver和Moonbeam都通过Runtime 1503和1504进行了紧急升级,成功解决当天早上(美国东部时间)由独立白帽黑客披露的一项安全问题。该安全问题现已修复,且无法在Moonriver和Moonbeam两处网络利用。初步迹象表明,该漏洞从未被利用,但团队仍将继续展开调查。

为了防止漏洞被恶意利用与攻击Moonbeam网络和其他平行链网络,我们并未立即披露此次安全问题的细节和漏洞位置。与此同时,Moonbeam团队在第一时间通知其他已知使用相同代码的平行链网络,提醒他们及时修复漏洞。经确认,这些平行链团队已脱离该风险带来的不利影响。我们因而能通过这篇文章,披露更多关于紧急升级的细节。

我们发现安全问题的背景

5月27日上午,Moonbeam团队收到了一份来自Immunefi的漏洞报告。这份报告提出,Frontier(属于Substrate pallet,由Moonbeam团队帮助波卡生态构建,是实现以太坊兼容性的核心功能)内部存在的一个潜在安全漏洞。Moonbeam运营和开发团队立即研究了这份报告并调查该漏洞。核实之后,Moonbeam团队立即启动修复方案,并落实部署计划。Parity团队也快速收到通知,并着手联系几个平行链团队。

5月27日下午,Runtime 1503在Moonbeam和Moonriver上部署并上线。虽然Runtime 1503可修复漏洞,但它同时引出了一个意想不到的bug。这个bug在5月27日当晚通过Runtime 1504被快速修复。目前所有漏洞均已修复,从收到漏洞报告到完全修复漏洞,Moonbeam团队在发现问题的12小时内(美国东部时间晚9点完成修复)迅速行动,保障网络平稳运行。

漏洞范围

该漏洞涉及对非标准以太坊预编译的调用。这些地址允许EVM通过智能合约访问Moonbeam的一些核心功能(如XC-20、质押和民主pallet),这些功能并不存在于基础的EVM中。通过DELEGATECALL,一个恶意的智能合约可以回调访问另一方的预编译存储。

普通用户不会遇到这个问题,这需要他们主动向该恶意智能合约发送交易。然而,对于其他允许任意调用外部智能合约的智能合约来说(比如部分允许回调的智能合约),这是一个问题。在这些情况下,不法使用者能对DEX执行对恶意智能合约的调用,该智能合约将能够访问伪装DEX的预编译,并可能将合约中的余额转移到任何其他地址。

补救措施

Runtime 1503迅速禁用所有DELEGATECALL,以防止漏洞被发现利用。

Runtime 1504为以太坊标准预编译和智能合约重建了DELEGATECALL(同时保持自定义预编译禁用状态)。

在这两次Runtime升级间隙,依赖DELEGATECALL的智能合约交易失败,并被标记为恢复。

修复后的代码可在此获得:Import Runtime 1504 changes by crystalin · Pull Request #1551 · PureStake/moonbeam · GitHub

已有的安全措施

代码审计

Moonbeam团队与两家审计公司(SR-Labs和NCC)始终保持着服务关系,这两家公司为Moonbeam执行持续的、递增的和完整的代码快照审计。Moonriver和Moonbeam的代码库都在这一审计过程的范围内。此外,团队正在考虑聘请第三家公司来进一步扩大审计范围。

漏洞赏金计划

去年,Moonbeam项目创建了Immunefi bug bounty赏金计划,以鼓励对Moonbeam代码库进行额外的安全测试。这项安全问题通过该计划提交,是第一个关于Moonbeam的重要报告。从这次披露中可以看出,这项漏洞赏金计划已被证实在维护安全代码库方面极具价值。

内部测试

每次发布前,Moonbeam团队都会完整彻底地测试代码,以此确保代码的完整性,同时通过自动和手动两种途径测试,排除任何潜在的技术问题。一般情况下,此类内部测试耗时超过一周,除了公共测试网络Moonbase Alpha之外,还需在几个内部测试网络中进行反复测试。通常,Moonriver和Moonbeam的发布间隔约两周以上的时间。由于本次发现的问题迫在眉睫,经过精简而有效的内部测试,Moonriver和Moonbeam两个网络的紧急升级在同时间完成,这高效地限制曝光窗口。

此次事件带来的升级安全措施

开发新自动测试程序

虽然已有一个全面的CI(持续集成)流程用于公开代码,但Moonbeam团队计划创建一个额外的私有构建和CI堆栈,以便敏感的安全修复问题能快速发布解决方案,同时不受到公开披露的影响。这有助于团队在快速发布过程中防止技术问题的出现,并确保新问题不会在无意间被引入。

此外,根据问题的严重程度,团队可能会适时在Moonriver和Moonbeam修复之间增加延迟。

开发团队之间的沟通

Moonbeam团队正在努力发展更多的私人和公开披露渠道,以更快地发现问题、分享信息,及时分享(在安全的情况下)细节,从而提高项目的透明度和分享有效经验。

沟通和回应的时间轴回顾

Moonbeam团队收到Immunefi的通知之后,我们立刻迅速处理了安全报告,同时部署修复方案。首要任务是尽可能快速解决两条链上的安全漏洞。

完成修复方案的全部部署后,Moonbeam/Moonriver网络已确认安全平稳运行,我们立即向生态内的开发团队和使用同一Frontier pallet的其他平行链网络分享有关该问题的细节。利用周末,我们及时与这些平行链团队沟通,确认他们受影响的程度,并赶在该漏洞披露之前推荐有效的补救路径。在确认这些链有足够时间检查报告和发布修复方案之前,我们无法直接披露全部细节。

为了更详细描述导致安全修复的事件,Moonbeam团队提供了有关这一事件所采取的步骤和本次事件的沟通明细。

所有提供的时间均以美国东部夏令时间(EDT)为准。

2022年5月27日

上午8:54:Moonbeam基金会通过Immunefi收到两个重要的漏洞报告,初步判断该漏洞可能导致Moonbeam和Moonriver的资金损失。

上午9:00:Moonbeam运营和技术团队投入审查这些报告,并确认其严重性和潜在影响。

上午10:31:证实报告中的漏洞,并被确认为高风险性。技术团队着手制定解决方案。

上午11:51:准备好初步的Runtime热修复计划,测试该修补方案。

下午1:45:修补方案在Moonbase Alpha TestNet成功测试,同时在Moonriver和Moonbeam升级该热修复计划,最大程度减少漏洞窗口。

下午2:00:通过理事会投票,这两项网络升级均获得社区批准,并通过了民主快速通道。经过30分钟的民主投票期和60分钟的等待期,投票结果公布后,这些升级将可启用。

下午2:19:升级投票进入民主阶段,并进行投票。Polkassembly
Polkassembly

下午3:53:Moonbeam和Moonriver都成功完成Runtime1503升级。

下午4:00:确认修复漏洞,Moonbeam基金会回复Immunefi上的漏洞报告者,确认了该漏洞和后续修复。

下午4:25:收到第一份关于部署在Moonriver/Moonbeam上的智能合约技术问题报告。

下午4:40:技术团队确认该问题是Runtime 1503引出的一个非安全隐患的技术漏洞,它干扰了委托人的调用,影响了两个网络上的DeFi项目。团队着手准备第二个热修复计划解决新问题。

下午5:37:Moonbeam团队通知Parity团队此安全问题及对应的解决方案。Parity团队开始通知其他可能受影响的团队。

下午6:00:同步Discord和Telegram社区,告知社区Moonbeam和Moonriver的合约调用被中断,并且在接下来的几个小时内将部署一个热修复。

下午6:50:理事会对第二个热修复Runtime 1504进行投票。

下午7:14:开放第二个热修复的民主投票。Polkassembly
Polkassembly

下午7:45:公投通过,Moonbeam和Moonriver均安排升级。

下午8:35:在一个非公开的Element社群中向其他平行链团队发布安全咨询公告。Moonbeam团队直接联系使用相同代码的其他平行链团队,确保尽快修补该漏洞。

下午8:55:Moonbeam和Moonriver已升级到Runtime 1504,并按预期平稳运行。

下午9:56:收到Moonbeam生态的DeFi项目确认,问题已经解决,智能合约如期运行。

下午10:04:通过Twitter、Telegram和Discord公告升级。

2022年5月28日

上午9:00:经团队确认,已知其他可能受影响的平行链团队或已发布修补,或已确定他们不受该漏洞影响。

2022年5月29日

上午11:30:一个新的跟踪图像已准备就绪,在Moonbeam和Moonriver上进行了测试,并确认可行。向受影响的项目组发出通知,并要求他们进行升级。

回顾与感谢

从收到问题到解决问题,再加上公开披露,处理时长约12个小时。这个时间窗口包括多个阶段的测试和协调,不仅要与PureStake团队、Moonbeam基金会和Immunefi上的漏洞报告者协调,还要与Parity团队和其他在生态系统中运作的平行链协调。加上开源开发的属性,披露的效率需要极强的执行力和高效的团队间协调,同时需要同步分布在全球不同时区的大量潜在受影响方。

感谢所有协助Moonbeam和Moonriver项目团队解决该问题的伙伴,同时点赞我们团结一致和超强执行力的Moonbeam团队,这是我们快速地解决该问题的关键。

有关Immunefi漏洞赏金计划的更多信息以及如何参与,请访问其网站:Moonbeam Network Bug Bounties | Immunefi

关于此次汇报和我们收到的安全报告的其他问题,请通过Discord联系团队: https://discord.gg/PfpUATX


关于Moonbeam
Moonbeam是波卡(Polkadot)网络中与以太坊兼容的智能合约平台,可实现轻松构建原生的互操作性去中心化应用。以太坊兼容特性允许开发者以最少的更改将现有的Solidity智能合约和DApp前端部署到Moonbeam。Moonriver作为Kusama上最活跃的平行链,已有80多个DApp完成在Moonriver的集成。Moonbeam将受益于Polkadot中继链的共享安全性和链接波卡其他链的互操作优势。

如需了解更多信息,请访问:Moonbeam | Polkadot Smart Contract Platform

关于Moonriver
Moonriver是Moonbeam的同行网络,旨在为激励实验提供永久性的测试环境。新上线项目的代码将优先部署到Moonriver,在其真实的经济环境下经历一系列的测试与实验验证。当验证完成并通过测试之后,项目代码才可正式部署至波卡上的Moonbeam。

如需了解更多信息,请访问:Moonriver - Solidity Smart Contracts on Kusama

更多 Moonbeam 信息 
官网: Moonbeam | Polkadot Smart Contract Platform
微博:Sina Visitor System
twitter: https://twitter.com/MoonbeamNetwork
Telegram: https://t.me/moonbeam_CN
Discord: https://discord.gg/skPfXvJWG7
中文电报群助手:@MoonbeamSister

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值