当前位置:网站首页>Moonbeam团队发布针对整数截断漏洞的紧急安全修复
Moonbeam团队发布针对整数截断漏洞的紧急安全修复
2022-08-05 08:10:00 【Moonbeam Community】
2022年6月27日,Moonriver和Moonbeam都通过Runtime 1606进行了紧急升级,成功解决当天早上(美国东部时间)由独立白帽黑客披露的一项安全问题。该安全问题现已修复,且不再被任一网络利用。初步迹象表明,该漏洞从未被利用,但团队仍将继续展开调查。
为了防止漏洞被恶意利用与攻击Moonbeam网络和其他平行链网络,以及验证在网络受攻击期间未被主动利用,我们并未立即披露此次安全问题的细节。
我们发现安全问题的背景
2022年6月27日下午(美东时间),Moonbeam团队收到了一份漏洞报告。这份报告提出Frontier(属于Substrate pallet,由Moonbeam团队帮助波卡生态构建,是实现以太坊兼容性的核心功能)内部存在的一个潜在安全漏洞。该漏洞由pwning.eth(于5月发现另一个安全问题)直接外联发现并由Immunefi提交。
Moonbeam运营和开发团队立即研究了这份报告并调查该漏洞。其中包括 Astar、Parity和Moonwell在内的其他团队与Moonbeam合作评估此漏洞的范围和严重性。
经验证后,准备Runtime修复和部署计划。然而,当Moonbeam团队处于修复过程中时,通过签入公共存储库无意中披露了核心漏洞。出于谨慎考虑,Moonbeam和Moonriver技术委员会将网络置于维护模式,以防止任何潜在的滥用。网络维护期间仅允许升级和治理操作,网络将继续生产区块。
当天晚上(美东时间)执行并验证Runtime执行后,维护模式被停用,网络恢复正常。
漏洞范围
根源漏洞是一个整数截断,当通过智能合约启动传输时,它绕过了完整性检查。虽然传输只会发生在截断值的情形,但恶意操作者可能已经创建了一个合约,该合约启动了一个更高的值(超过128 bits)到Token包装合约的转移。上述的bug可误导包装合约,致其相信如此大量的Token实际上已被转移,并导致接收地址被错误地记入大量的包装Token。
补救措施
Runtime 1606通过删除截断来解决此问题,留下已经存在的饱和强制转换(Saturating Cast),从而防止执行任何溢出。
紧跟补救措施,一项在Moonriver的治理议案于7月1日通过,消除了在团队测试解决方案期间产生的无效余额。感谢Web3Go团队及时发现问题并引起我们的注意。
修复后的代码可在此获得:https://github.com/PureStake/frontier/compare/652abf16…ca027df5
现有安全措施
代码审计
Moonbeam团队与两家审计公司(SR-Labs和NCC)始终保持着服务关系,这两家公司为Moonbeam执行持续的、递增的和完整的代码快照审计。Moonriver和Moonbeam的代码库都在这一审计过程的范围内。此外,团队正在考虑聘请第三家公司来进一步扩大审计范围。
漏洞赏金计划
去年,Moonbeam项目创建了Immunefi bug bounty赏金计划,以鼓励对Moonbeam代码库进行额外的安全测试。这项安全问题通过该计划提交,是第二个关于Moonbeam的重要报告。从这次披露中可以看出,这项漏洞赏金计划已被证实在维护安全代码库方面极具价值。
内部测试
每次发布前,Moonbeam团队都会完整彻底地测试代码,以此确保代码的完整性,同时通过自动和手动两种途径测试,排除任何潜在的技术问题。一般情况下,此类内部测试耗时超过一周,除了公共测试网络Moonbase Alpha之外,还需在几个内部测试网络中进行反复测试。通常,发布在Moonriver和Moonbeam的代码需间隔约两周以上。由于本次发现的问题迫在眉睫,经过精简而有效的内部测试,Moonriver和Moonbeam两个网络的紧急升级在同时间完成,以最快速度限制曝光窗口。
沟通
根据之前漏洞披露的发现,Moonbeam团队实施了新的通信工具和最佳实践。这使团队之间的沟通和升级过程都更加顺畅。
沟通和回应的时间轴回顾
在收到漏洞报告和相关团队的参与后,Moonbeam团队迅速处理了安全报告并开始着手修复。
首要任务是尽快解决所有受影响链上的直接安全漏洞。当漏洞进入公众视野时,Moonbeam和Moonriver技术委员会迅速采取行动,通过将网络置于维护模式来防止任何损害。
为了更详细描述导致安全修复的事件,Moonbeam团队提供了有关这一事件所采取的步骤和本次事件的沟通明细。
所有提供的时间均以美国东部夏令时间(EDT)为准。
2022 年 6 月 27 日
- 下午2:13 — Moonwell团队在收到白帽黑客的直接联系后联系了Moonbeam团队。Moonbeam团队立即要求提供一份Immunefi报告以确认其真实性并着手开始处理。
- 下午2:25 — Moonbeam技术事件响应团队召集Moonwell团队代表开会讨论报告。随后将问题上报给整个业务事件响应团队和Moonbeam & Moonriver的技术委员会。
- 下午2:36 — 白帽请求引荐Parity和Astar团队。Moonbeam创建了一个电报群供白帽进行内部讨论,并联系请求的团队加入。
- 下午3:10 — 白帽向Moonbeam和Astar提交Immunefi报告。
- 下午3:21 — Moonbeam团队收到报告后重新召开会议并决定进行程序修补,但未将网络置于维护模式。
- 下午4:00 — Parity、Moonbeam和Astar共同确认问题及严重性。Moonbeam开发团队设定升级时间表,并开始着手开发补丁。
- 下午5:00 — 沟通内容发送给生态内的开发团队。
- 下午6:13 — Astar团队在公共代码库发布了该问题的修复程序。
- 下午6:33 — Moonbeam团队注意到已发布的代码并要求技术委员会将网络置于维护模式。开始与重点项目就维护模式进行沟通。
- 下午6:46 — 维护模式通过Moonbeam和Moonriver的技术委员会制定并启动外部通信。
- 下午7:46 — 更新完成,CI/CD启动,随之回归测试和部署到多个测试网络。
- 下午8:05 — 下线Moonbeam dApps GUI以防止出现意外行为。
- 下午9:40 — 在Moonriver上进行升级投票。因维护模式期间EVM功能不可用,所以Polkassembly暂无法使用
Polkadot/Substrate Portal - 下午10:31 — Moonbeam升级已批准并需要60分钟的排队时间。
- 下午10:58—Moonbeam和Moonriver均已成功升级并开始产生区块。技术委员会对取消维护模式的投票已提交。
Moonriver技术委员会提案 #92
Moonbeam技术委员会提案 #50
- 下午11:05 — 维护模式被解除,两个网络恢复全部功能。
- 下午11:49 — Moonwell确认其服务已完全恢复。
- 下午11:50 — 升级确认发送至Twitter、Telegram、Discord和Reddit。
回顾与感谢
从收到问题到解决问题,再加上公开披露,处理时长约10个小时。这个时间窗口包括多个阶段的测试和协调,不仅要与PureStake团队、Moonbeam基金会和Immunefi上的漏洞报告者协调,还要与Parity团队和Astar协调。加上开源开发的属性,披露的效率需要极强的执行力和高效的团队间协调,同时需要同步分布在全球不同时区的大量潜在受影响方。
感谢所有协助Moonbeam和Moonriver项目团队解决该问题的伙伴,同时点赞我们团结一致和超强执行力的Moonbeam团队,这是我们快速地解决该问题的关键。
有关Immunefi漏洞赏金计划的更多信息以及如何参与,请访问其网站:Moonbeam Network Bug Bounties | Immunefi
关于此次汇报和我们收到的安全报告的其他问题,请通过Discord联系团队: https://discord.gg/PfpUATX
关于Moonbeam
Moonbeam是波卡网络中兼容以太坊的智能合约平台,可实现轻松构建原生的互操作性去中心化应用。以太坊兼容特性允许开发者以最少的更改将现有的Solidity智能合约和DApp前端部署到Moonbeam。Moonbeam将延续其在Kusama上的姐妹平行链Moonriver的成功,从100多个在网络上构建DApp和协议的项目中积累开发者和用户活动。作为波卡网络上的平行链,Moonbeam将受益于波卡中继链的共享安全性和连接波卡其他链的互操作优势。
如需了解更多信息,请访问: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
边栏推荐
猜你喜欢

关于MP3文件中找不到TAG标签的问题

双向循环带头链表

Mysql 死锁和死锁的解决方案

Redis implements distributed lock-principle-detailed explanation of the problem

微信 小程序 之PC端 不支持 wx.previewMedia 方法 故用自定义轮播图进行 模拟照片视频的播放

The Coolest Kubernetes Network Solution Cilium Getting Started Tutorial

Algorithm Supplements Fifteen Complementary Linked List Related Interview Questions

数据库——概述

Spark cluster deployment (third bullet)

uniapp time component encapsulates year-month-day-hour-minute-second
随机推荐
[Structural Internal Power Cultivation] Structural Realization Stages (2)
window.open 全屏展示
别把你的天使弄丢了
Redis implements distributed lock-principle-detailed explanation of the problem
The toss of MM before going to the street (interesting)
Iptables implementation under the network limited (NTP) synchronization time custom port
Liunx教程超详细(完整)
Embedded Systems: Basic Timers
SVG Star Wars Style Toggle Toggle Button
行业应用软件项目经理三步曲
MobileNetV2架构解析
MVCC of Google's Fragmented Notes (Draft)
存储过程编写经验和优化措施
Three solutions to solve cross-domain in egg framework
Nn. Unfold and nn. The fold
青苹果论坛重新开放
奇怪的Access错误
pnpm 是凭什么对 npm 和 yarn 降维打击的
Game Thinking 19: Multi-dimensional calculation related to games: point product, cross product, point-line-surface distance calculation
字符串提取 中文、英文、数字