2022年2月2日,Wormhole网络遭受攻击,攻击者利用签名验证漏洞在Solana上铸造了12万枚无抵押wETH,并将其中93,750枚转移到以太坊。Jump Crypto已为合约注资以确保所有wETH都有足额抵押。Wormhole网络已恢复运行,并悬赏1000万美元寻求有关追捕黑客或追回被盗资产的信息。
在2022年2月2日,一名攻击者利用了 Wormhole network 中的签名验证漏洞,在 Solana 上铸造了 120,000 个 Wormhole 包装的以太币(Wormhole-wrapped Ether)。这些代币并未得到 Ethereum 侧的 Portal bridge 的以太币存款支持。然后,攻击者将其中的 93,750 个代币桥接到 Ethereum,从合约中提取未包装的以太币。
为了防止进一步的利用,Wormhole 节点运营商暂时停止了来自链上合约的消息转发,然后升级合约以修复漏洞。Jump Crypto 对合约进行了再资本化,确保每条链上的所有 Wormhole 包装的以太币都得到充分的支持。截止到2022年2月3日13:29 UTC,Wormhole 网络已经恢复在线并完全正常运作。事件的总持续时间约为16小时。
对任何能够提供导致2022年2月2日 Wormhole 黑客攻击的责任人被捕和定罪的信息或恢复被盗资产的信息,奖励高达$10,000,000。$10,000,000 的白帽奖励仍然开放,以鼓励及时归还资金。你可以通过 bounty@wormholenetwork.com 联系我们。
Wormhole 是一个去中心化的跨链消息传递协议。它使应用程序能够将消息从一个链发送到另一个链。该网络由一个去中心化的 十九名守护者 组成,他们签署每条传输的消息以证明其真实性。该协议使用多方签名系统,如果 ⅔ 以上的守护者已签署,则该消息被视为真实。
Portal 是在 Wormhole 网络之上构建的一个代币桥。Portal 使用户能够将资金存入源链上的合约,然后在目标链上铸造 Wormhole 包装的代币。铸造功能需要来自源链合约的 Wormhole 认证消息。该检查确保 Wormhole 包装的代币由源链合约中的代币以 1:1 的比例支持。
守护者还负责管理 Wormhole 网络。协议和合约的升级需要 ⅔ 以上的超级多数票通过。
18:24 UTC — 一名身份不明的攻击者 利用了 Solana 侧 Wormhole 合约的漏洞,欺骗其铸造了 120,000 个未抵押的 Wormhole 包装以太币(weETH)。攻击者随后将 93,750 个 weETH 发送回 Ethereum,兑换为原生以太币( 1, 2, 3),并将其余的 weETH 转换为 SOL。
19:07 UTC — Wormhole 网络的贡献者在例行检查中注意到了资金的差异,并立即展开调查。
19:10–19:20 UTC — 贡献者确定了漏洞,声明了事件,并建立了一个“战情室”会议。此次会议包括 Jump Crypto 的 Wormhole 贡献者、审计公司 Neodyme、主要利益相关者的代表和其他可信赖的外部研究人员。此外,与执行网络的 Wormhole 守护者建立了开放的沟通渠道。
19:33 UTC — 贡献者警告了守护者可能存在的漏洞,并要求他们停止转发消息,以暂停进一步的代币转账。
19:40 UTC — 当超级少数的六个节点停止转发消息时,代币转账被暂停(大约占网络投票权的 37%)。在接下来的一个小时内,达到了超级多数。
19:40 UTC — 两个团队开始并行工作以关闭漏洞,关注两个不同的方法。第一个方法是使用协议内治理机制升级合约。第二个方法是利用攻击者的相同漏洞完成升级,修复漏洞。
19:55 UTC — bug 在内部同行评审和多家第三方审计公司中得到了确切验证。修复方案已提交至 Wormhole 仓库的临时私有分支(现已发布到 公共仓库)。团队传播了合约升级治理提案,以便守护者投票。为了加快进程,进行了修复的模拟和测试。由于网络处于停机状态,投票无法立即提交。因此,测试了一种变通方案,允许守护者在未启用代币转账的情况下提交治理投票。
20:14 UTC — 守护者们一致同意了如何安全地恢复他们的节点在线并提交治理投票的计划。
20:15 UTC — 向攻击者尝试 沟通,提供了一个白帽协议,条件是归还被盗资金的奖金为$10百万。
20:42 UTC — Wormhole Twitter 账户 通过一条 推文 提醒社区此漏洞,并通知合作伙伴和其他项目。随着情况的发展,提供了进一步的状态更新。
Twitter Embed
22:07 UTC — Neodyme 团队成功构建并测试了一个工作的原型,原定的后备计划采用漏洞进行升级。贡献者决定继续执行该计划,因为这可能是关闭漏洞的最快解决方案。
22:25 UTC — Wormhole Twitter 账户发送第二条 推文,通知用户已经盗走了120k ETH,但资金将被补充。向合作伙伴和项目发送了额外的沟通。
Twitter Embed
00:32 UTC — 在与其他团队紧密协调后,并经过进一步改进,Neodyme 成功进行了升级,以关闭漏洞。
00:32 UTC — 漏洞被修复。 此时,攻击者无法再创建新的欺诈性 Wormhole 消息。然而,作为原始利用的一部分,攻击者已经准备了几条额外的 Wormhole 消息,这些消息仍然可以用于窃取更多资金。团队继续致力于解决这个问题,并与 Wormhole 网络社区成员保持频繁沟通。
03:42 UTC — 团队为 Solana 侧 Portal(代币桥)引入了保护措施,以将欺诈性 Wormhole 消息列入黑名单,防止攻击者进一步盗取资金。开发此修复方案需要大量测试。该升级治理过程的提案旨在应用此修复。
05:53 UTC — 治理达成 ⅔+ 的共识并执行了升级 执行 在 Solana 上。多个团队进行了持续的验证和链取证工作,以验证升级。
11:27 UTC — 达成共识以重新启动网络。
13:08 UTC— Jump Crypto 用 120,000 ETH 充实了合约,恢复了完整的抵押。
13:29 UTC — Wormhole 网络及其 Portal 桥已恢复上线。
13:39 UTC — 来自 Wormhole 官方账号的 推文 向社区通知网络已恢复在线。
Twitter Embed
1/2
所有资金已恢复,Wormhole 已恢复运营。
我们对你的支持深表感谢,并感谢你的耐心。
攻击的根本原因是 Solana 上核心 Wormhole 合约的签名验证代码中的一个漏洞。此漏洞允许攻击者伪造守护者的消息以铸造 Wormhole 包装的以太币。
在 Solana 上,Portal 的代币铸造程序使用 verify_signatures 函数在铸造 Wormhole 包装代币之前验证源链消息。此过程依赖于包含在指令 sysvar 账户中的信息,该账户是可信的,因为它由 Solana 运行时填充。
用户可以在调用 Solana 上的函数时指定任意输入账户。每个程序负责验证提供的账户是否是他们预期的账户。可利用版本中的问题在于,verify_signatures 函数并没有断言用户提供的账户是特殊的指令 sysvar。
攻击者可以构造一个账户并用数据填充它,使其看起来像指令 sysvar 账户。这个伪造的指令 sysvar 可以传递给 Wormhole 的 verify_signatures 函数,以欺骗其认为签名已成功验证。任何以 Solana 作为目标链的任意 Wormhole 消息都可以由攻击者签署,包括在 Solana 上铸造包装 Wormhole 代币的消息。
通过添加缺失的 检查 修复了该漏洞:
在攻击之后,社交媒体上出现了关于 Wormhole 贡献者在攻击前几周已经意识到漏洞的谣言。这些猜测是由 Wormhole 仓库中最近的 提交 引发的。
该提交是对 Solana 工具链的最新版本(1.9.4)的例行升级。该版本的工具链停用了 load_current_index 和 load_instruction_at 方法,取而代之的是检查过的变体。这些检查过的变体包括了这个漏洞的源头缺失的对指令 sysvar 账户的检查。
虽然该提交确实修复了漏洞,但这是工具链升级的偶然副产品。虽然事后看来明显,但当时的安全隐患并不明显。该提交在 2022年1月13日 发布 到公共 git 仓库,计划在下次发布之前进行审计。攻击者可能注意到该漏洞是因为这个提交是公开的,或者他们可能在修复合并后感到被迫进行攻击。
在事件期间,团队在最近的合约发布的基础上开发了修复方案,早于工具链的升级。此做法最小化了变化的表面。所部署的修复方案 执行 在指令 sysvar 账户上执行相同的检查,但是独立开发的。修复方案与工具链升级之间的联系在漏洞发生后才变得清晰。
Wormhole 社区依然致力于桥梁和所有参与者的安全。
在 Wormhole 于 2021 年夏季启动之前,其代码已由 Neodyme 审查,这是一家最优秀的 Solana 审计公司之一,审计报告于2022年1月发布。随后,三家审计公司在事件之前被安排进行 Wormhole 代码库的全面和持续审计:
预计将很快宣布进一步的审计工作。
我们的路线图上有几个项目,进一步增强跨链消息和桥接的安全性,包括:
在2021年12月,社区开始在 Immunefi 上推出正式的漏洞赏金计划。该计划预计于2月中旬启动,最高赏金为$3.5M,被认为是行业最高的。
- 原文链接: wormholecrypto.medium.co...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!