比特币闪电网络开发商ACINQ于10月27日发布Eclair 0.14.6,修复恶意节点可能利用未确认通道资金交易的问题。更新默认要求对端为通道拼接提供已确认的资金输入,并调整通道关闭时的结算和资金追回机制。ACINQ建议节点运营者尽快升级;目前尚不清楚相关漏洞是否已在实际环境中遭到利用。
未确认资金可能影响待处理支付
闪电网络通过支付通道处理比特币转账,用户无需将每笔交易都写入比特币区块链。运营者也可以通过“拼接”(splice)为现有通道增加或提取流动性,而这类资金变动需要链上交易支持。
问题在于,如果通道拼接接受对端提供、但尚未获得比特币网络确认的资金输入,恶意节点可能在签署拼接交易后对相关交易进行双花。原有资金安排一旦因此失效,依赖该安排的通道结算也可能受到影响。
如果通道随后在比特币链上关闭,使用条件支付合约(HTLC)担保的待处理付款可能面临风险,因为这些付款的结算依赖于已失效的资金交易。ACINQ将此描述为潜在安全隐患,并未表示已确认发生资金被盗事件。
默认要求对端资金先获确认
Eclair 0.14.6新增安全设置,默认要求对端用于通道拼接的资金输入先得到确认。该设置也阻止运营者在尚未确认的资金变更之上继续构建新的拼接交易,减少不可靠资金状态累积造成的结算风险。
ACINQ还将这项要求与原有的双重资金保护机制区分开来:后者现在专门适用于创建通道,而拼接操作则由新的确认要求覆盖。对于不受信任的对端,ACINQ同时提醒运营者不要在拼接时使用可选的零费用承诺功能;该功能此前已默认关闭。
强制关闭时回退至已确认资金状态
此次更新也改进了通道资金交易仍未确认、但通道必须关闭时的处理方式。按照新的结算逻辑,Eclair会选择其Bitcoin Core后端能够识别为有资金支持的承诺交易;必要时,软件会回退到最新的已确认资金状态,避免使用已从本地待处理交易池中消失的资金交易进行结算。
另一项修正针对可能导致资金未被认领的情况:有些交易可能在Eclair不再将其视为首选结算路径后,仍被矿工确认。旧逻辑可能将这类交易误判为对手方交易,导致本可追回的资金和待处理支付输出未被领取。新版本会识别这类交易,并尝试追回相关输出。
升级无需先关闭现有通道
ACINQ表示,仍在运行旧版Eclair的节点应安装补丁,并保留默认启用的已确认输入保护。升级需要先停止软件、安装新版本,再重新启动节点;现有支付通道可以在升级过程中保持开启。
此次更新修复的问题由安全研究人员Erick Cestari负责任地披露。ACINQ提醒恶意节点可能利用其中部分问题,但公开信息并未说明实际受影响节点数量或是否已有攻击发生。