XRP Ledger 确认 1000 亿枚供应量安全,重大安全漏洞已修复

XRP
验证者升级整数溢出供应完整性安全漏洞XRP账本漏洞赏金
1 小时前来源: crypto.news
XRP Ledger 确认 1000 亿枚供应量安全,重大安全漏洞已修复

XRP Ledger 修复了一个可追溯至 2015 年的严重安全漏洞,该漏洞本可能允许攻击者通过一笔特制的交易凭空创造出约 18 万亿枚 XRP,超过 80% 的可信验证者已于 9 月 25 日安装了紧急更新。

摘要

  • XRPL 开发者修复了一个严重的支付漏洞,该漏洞可能创造出超出其供应量的可花费 XRP。
  • 研究员 Cayden Liao 演示了通过一笔精心构造的交易可铸造约 18 万亿枚 XRP。
  • 安全团队未发现该溢出漏洞在公共网络上被利用的证据。
  • 开发者证实,超过 80% 的默认验证者已于 9 月 25 日升级至 xrpld 3.4.1。
  • 另一项 Batch 验证修复在验证者推迟原定推出计划后,于 10 月 9 日激活。

XRP Ledger 基金会和 RippleX 在 10 月 9 日的一份披露中证实了该漏洞,并解释称网络支付引擎中的一个错误本可能产生超出其既定 1000 亿供应量的可花费 XRP。开发者在测试期间复现了该问题,并发布了 3.4.1 版本以解决该问题。他们的调查未发现该漏洞在公共网络上被利用的证据。安全研究员 Cayden Liao 和 Veria AI 在报告该漏洞并演示其潜在影响后,获得了漏洞赏金计划的最高 25 万美元奖励。

XRP Ledger 修复了可能创造数万亿 XRP 的漏洞

该漏洞影响了 XRP Ledger 的支付引擎,该引擎负责处理涉及网络内置去中心化交易所的转账和交易。

根据官方披露,该问题源于 2015 年编写的软件中的一个整数溢出。当计算产生的数字大于计算机系统使用所分配位数所能表示的范围时,就会发生整数溢出。

在本例中,支付引擎将网络订单簿中多个报价相关的 XRP 金额相加。该软件使用 64 位整数来计算买方在完成涉及多个报价的支付时所欠的总金额。

开发者发现,攻击者可以创建数百个特殊定价的报价,并安排一笔支付来消耗它们。当计算出的总额超过该整数的最大值时,数字可能会回绕到一个小得多的金额。系统仍会按报价中指定的全额 XRP 金额记入各个卖方的账户,即使买方只支付了溢出后产生的减少金额。差额将创造出此前并不存在的 XRP。

据 XRPL 基金会称,由此产生的加密货币可以转移到其他账户、进行交易或发送到交易所。报告描述了潜在后果:“攻击者本可以创造出远超总供应量的可花费 XRP。”

据开发者称,该漏洞无法通过普通交易触发。攻击者需要创建数百个账户、放置异常定价的报价,并提交一笔精心构造的交易以将它们一起处理。现有的安全检查之所以失效,是因为系统的供应量验证使用了与导致原始错误相同类型的算术运算。

与此同时,通过将新创造的 XRP 分散到多个钱包中,可以绕过一项单独的账户余额检查。

研究员发现潜在的 18 万亿 XRP 漏洞利用

在安全研究员 Cayden Liao 和 Veria AI 测试 XRP Ledger 的开源软件后,该漏洞引起了开发者的注意。

Veria Labs 于10月10日发布了其调查结果,描述了其自动化安全测试系统如何在9月21日发现该问题。次日,研究人员在本地测试网络上开发出了一个可用的概念验证。

据该公司称,该演示表明,通过一笔专门设计的交易,可以创建大约18万亿枚XRP。根据研究人员的计算,这一数量大约相当于XRP预期总供应量的184倍。该数字描述的是受控安全测试的结果,而非该加密货币流通供应量的实际增加。Liao于9月22日通过官方XRPL漏洞赏金计划提交了该漏洞。

RippleX工程师在独立服务器上复现了该问题,并确认新生成的XRP可以在后续支付中被花费。

最初的报告将该漏洞归类为重大漏洞,但在确认潜在后果后,开发者将其严重性提升为危急。Veria Labs表示,如果攻击者成功利用该漏洞,可能会使XRP的全部市场价值面临风险。该公司的估计基于当时XRP约940亿美元的市值。

然而,940亿美元这一数字代表的是研究人员对潜在财务风险的估计,而非已确认的损失。安全团队未发现公共网络上有未经授权创建XRP的证据。10月8日,Veria AI因识别并负责任地披露该问题而获得了最高25万美元的赏金。

RippleX未经正常审批流程发布紧急修复

在确认该漏洞后,RippleX工程师在9月22日至9月23日期间开发了一个修复程序。该补丁被纳入9月25日发布的xrpld 3.4.1版本中。

根据官方披露,开发者添加了检查,防止支付引擎接受超出允许整数范围的计算结果。更新后的软件会拒绝受影响的计算,并返回普通的支付失败,而不是创建额外的XRP。工程师通过将现有算术替换为更宽的计数器来加强网络的供应验证,该计数器旨在检测类似错误。作为预防措施,额外的余额计算也经过了审查。

然而,部署该修复程序的决定给XRP Ledger治理带来了不同寻常的局面。通常,交易处理的变更必须通过网络的修正案系统。一项修正案需要连续两周获得超过80%的可信验证者的支持才能激活。

对于支付溢出漏洞,开发者决定在验证者升级其软件时立即应用修复。XRPL基金会解释说,正常流程会在审批期间暴露该漏洞,使其仍可被利用。

由于XRP Ledger软件是开源的,发布补丁可能会揭示漏洞的位置和性质。

开发者得出结论,等待通常的修正案流程可能会带来额外的安全风险。紧急处理方式带来了另一个担忧:运行不同软件版本的验证者可能对如何处理恶意交易产生分歧。

在极端情况下,这种分歧可能会暂时阻止网络确认新的账本。基金会表示,该决定是在与RippleX、验证者运营商和其他XRPL贡献者协商后做出的。截至9月25日,默认唯一节点列表上超过80%的验证者已升级到3.4.1版本。

公共源代码在紧急安全响应之后随后发布。XRPL基金会的发布记录将3.4.1版本描述为一次解决安全敏感协议问题的紧急更新。

XRP Ledger在Batch激活前解决第二个安全漏洞

10月9日的披露涵盖了另一个涉及XRP Ledger Batch交易功能的漏洞。Batch允许开发者将最多八笔交易合并为一个操作。该功能支持不同的执行模式,包括要求每笔交易都必须成功才能接受整个操作的安排。

在安全测试期间,研究人员发现了一个涉及单笔交易如何在Batch内打包的验证错误。该协议要求每笔交易使用一个名为RawTransaction的特定字段。

然而,该软件在某些条件下可以接受其他字段名称。调查人员发现,不同的服务器版本可能会以不同方式处理那些格式不正确的事务。

据 XRPL 基金会称,如果该功能在问题得到纠正之前就激活,由此产生的不一致可能会中断网络验证。该问题最初是在 Sherlock Attackathon 期间发现的,随后由 XRPL 基金会贡献者 Denis Angell 进行了审查。RippleX 工程师 Mayukha Vadari 确定,该漏洞在不同服务器版本之间造成了潜在的共识风险。

开发人员通过引入 fixBatchV1_2 修正案来应对。该修正案要求每笔 Batch 交易都使用经批准的字段格式,并拒绝打包不正确的事务。在开发人员完成修正期间,验证者暂时撤回了对早先 BatchV1_1 激活计划的支持。

fixBatchV1_2 和 BatchV1_1 均于 10 月 9 日在 XRP Ledger 主网上激活。根据已验证网络报告中包含的 XRPScan 数据,XRP Ledger Batch 激活获得了 30 个验证者的支持,其中 5 个反对此次升级。

早先对 Batch 安全审查的研究详细介绍了 9 月 25 日的紧急发布以及该功能激活前所需的保障措施。初始版本此前曾面临安全问题,包括在开发人员审查期间发现的事务授权问题。

8 月另一项 XRP Ledger 安全审计记录了在一场涵盖拟议协议功能的 Sherlock 竞赛中发现的 96 个有效漏洞。

对于最新的 Batch 漏洞,XRPL 基金会确认,在发现该问题时,受影响的修正案尚未在主网上激活。没有用户资金损失,没有私钥被泄露,也没有因该特定缺陷而发生共识失败。10 月 9 日的激活意味着运行较旧软件版本的服务器现在已被修正案阻止,必须升级到 3.4.1 或更高版本才能保持同步。

XRPL 基金会表示,正在为未来的软件发布引入一项额外的验证要求:此前报告的安全问题必须在发布候选版本上重新测试,然后才能被归类为已修复。

据该基金会称,该程序将适用于来自审计、漏洞赏金计划、AI 辅助安全测试和其他漏洞评估的发现。