XRP Ledger 修复可凭空创造 XRP 的整数溢出漏洞
要点速览
- •该整数溢出漏洞自 2015 年起就存在于 XRPL 支付引擎中,当一笔交易聚合数百笔刻意定价的订单簿挂单时,本可能铸造出可使用的 XRP。
- •开发者于 9 月 25 日在 xrpld 3.4.1 中发布修复,比 10 月 9 日的披露提前约两周,因为通过正常修正案时间表发布开源修复可能在易受攻击的软件仍在使用时暴露该漏洞。
- •团队未发现该漏洞曾在公共网络上被利用的证据,也没有报告私钥泄露、资金损失或共识失败。
- •在 3.4.1 版本发布当天,默认 UNL 上超过 80% 的验证节点已完成升级,而剩余未打补丁的服务器在更新之前现已被修正案阻断。
- •此次披露还涵盖 XRPL 即将推出的 Batch 功能中一个独立的验证漏洞,该漏洞在功能上线主网之前已被发现。

XRP Ledger(XRPL)开发团队于 10 月 9 日披露了一个整数溢出漏洞,在精心构造的条件下,该漏洞可能允许凭空创造出可使用的 XRP。修复程序于 9 月 25 日随 xrpld 3.4.1 版本发布,比公开披露提前约两周,团队表示未发现该漏洞曾在公共网络上被利用的证据。
相关细节公布在 XRPL 的 10 月 9 日漏洞披露报告 中。
一笔可能凭空创造 XRP 的支付计算
报告描述了账本支付引擎中的一个整数溢出漏洞。在精心构造的条件下,一笔消耗大量订单簿挂单的支付可能使账户获得付款方并未实际支付的 XRP。订单簿是 XRPL 的原生结构,是账本内置交易所的一部分,因此这一有缺陷的算术逻辑存在于支撑账本交易与支付的代码之中。
交易中的每一笔挂单单独看都可能是有效的。问题出现在引擎对所有挂单的 XRP 金额进行累加时。一旦总和超过该计算所用数值类型的最大上限,它可能回绕为一个远小的值,而不是报错。
在这种情况下,引擎仍会向挂单所有者记入其全额 XRP,而只向买方收取回绕后的总额。差额即代表新创造的 XRP,随后可以像任何其他余额一样被转移、交易或发送至交易所。
为什么该漏洞很严重
这种攻击并不需要持有大量 XRP。攻击者可以控制下单的账户、支付所需的账户储备和交易费用,然后将新创造的 XRP 分散到这些账户中。
该漏洞存在于支付算术逻辑中,而非钱包访问权限,因此账户密钥不受影响。触发它需要数百笔经过刻意定价的挂单以及一笔旨在同时消耗这些挂单的交易;普通的 XRP 支付或交易不会接近触发溢出所需的数值。
对于账本而言,很少有缺陷比能够铸造可使用单位的缺陷更敏感,因为每一笔余额都依赖于新 XRP 仅通过网络既定规则进入流通。
XRPL 表示,未发现任何公共网络被利用的证据,也没有报告私钥泄露、资金损失或共识失败。该漏洞似乎自 2015 年当前支付引擎编写以来就一直存在,之所以未被及时发现,是因为正常活动从未该算术上限。
账本现有的防止新 XRP 被创造的机制也依赖同类加法运算。它可能以与支付引擎相同的方式发生回绕,从而使交易看起来正常,而不会标记余额的异常增加。
开发者为何采取紧急部署
开发者在公布技术细节之前就发布了溢出修复,因为正常的修正案时间表会让一个已知漏洞在数周内保持可利用状态。补丁于 9 月 25 日随 xrpld 3.4.1 版本发布,公开披露则于 10 月 9 日跟进。
XRPL 通常通过修正案更改交易规则。验证节点先升级其软件,然后在规定时间内保持所需支持,之后新规则才会在整个网络的同一账本位置生效。这一流程可避免不同服务器对同一笔交易得出不同结论的情况。
在本案例中,等待该流程将带来一个棘手的问题。由于 xrpld 是开源的,公布修复代码可能在旧软件仍接受易受攻击的交易路径时,向攻击者指明攻击方向。因此,团队让新的溢出检查在每台服务器升级时即生效。
这种更快的方式带来了临时的兼容性风险:未打补丁的服务器可能接受一笔已升级服务器会拒绝的利用交易。开发者认为这比让新创造的 XRP 进入市场危险性更小。据报告,在 3.4.1 版本发布当天,默认 UNL 上超过 80% 的验证节点已完成升级。
披露内容还涵盖另一个独立漏洞
报告还详述了 XRPL 即将推出的 Batch 功能中的一个验证问题,该功能允许用户将多笔交易作为一个单元提交。该漏洞可能导致运行不同软件版本的服务器对格式错误的 Batch 交易产生分歧,中断账本验证或破坏解析交易数据的应用程序。
Batch 漏洞在该功能上线主网之前已被发现。相比之下,溢出问题影响的是现有的支付引擎代码,这正是其补丁无法等待标准生效周期就绪的原因。由于该功能本身尚未上线,它带着验证修复上线主网的部分仍在前方。
报告发布之际,XRPL 也在为企业启用新的账户控制工具。这些变更针对账本的不同部分,但都依赖于节点运营者、钱包提供商和开发者遵循相同的现行规则。
用户和运营者需要做什么
普通 XRP 持有者无需转移资金、更换钱包或兑换代币。此次更新涉及的是验证交易的软件,而非账户余额、钱包密钥或用户持有的 XRP 供应量。
- XRP 持有者: 无需采取任何行动。
- 交易所用户: 如果交易所对其自身 XRPL 基础设施进行维护,请关注平台公告。
- 节点运营者: 升级至 xrpld 3.4.1 或更高版本,以与网络保持同步。在 Batch 修复生效后,旧版服务器已被修正案阻断,这意味着在更新之前,它们无法继续遵循当前账本规则。
修复在规则经受考验之前保护了 XRP 的供应机制
此次披露显示该账本曾多么接近供应完整性失效,也说明了验证节点为何迅速行动。漏洞在其细节公开之前已被修复,未发现任何利用行为,支付引擎现在使用旨在在其进入已验证账本之前阻止同类算术错误的检查。从外部来看,尚待观察的是网络其余部分多快能统一到 xrpld 3.4.1 或更高版本,因为未打补丁的服务器已被修正案阻断,无法继续跟踪当前账本。
本文仅供参考,不构成投资或技术建议。节点运营者在更新生产基础设施之前,应查阅当前的 XRPL 发布文档。
本文基于最初由 Coindoo 发布的报道。