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