Eclair已合并两项针对Lightning通道融资和拼接操作的修复,旨在防止节点因对手方要求提高交易费,或比特币后端构造异常交易而蒙受过高矿工费损失。这些改动已于10月2日和10月5日进入项目主分支,但截至10月12日,Eclair发布页面列出的最新版本仍是9月发布的v0.14.3,因此尚不能据此确认修复已包含在正式发行版本中。
Eclair是ACINQ开发的Lightning节点软件。两项问题分别涉及双向融资通道、调整通道资金的拼接操作,以及Eclair-signer签名器模式。相关损失可能以矿工费形式支付给网络中的矿工,而非直接转入攻击者地址。
PR #3388为对手方提高手续费设限
第一项修复对应PR #3388,针对对手方发起的替代手续费(RBF)交易。在双向融资开通通道,或通过拼接调整通道资金时,对手方可以提出手续费率更高的替代交易。修复前,如果Eclair节点也向交易投入资金,节点可能继续为自己投入的资金支付更高费用,而这一流程没有设置明确的费用上限或预算。
这意味着,恶意对手方可以要求出资的Eclair节点承担任意高的矿工费率,自己却不必为这部分费用出资。节点的损失将计入矿工费,而不是直接转给对手方。
修复后,Eclair会拒绝手续费率超过其向对手方建议的融资费率上限的请求。不过,若对手方购买流动性并替Eclair输入支付费用,或Eclair节点没有向交易出资,则不适用这项限制。这两种情况下,Eclair节点不承担该修复所针对的费用成本。
Eclair-signer校验后端报告的实际费用
第二项修复对应PR #3390,涉及Eclair-signer模式。该模式下,Bitcoin Core后端bitcoind负责选择比特币和构造交易,私钥则由Eclair保管并用于签名。保留签名密钥并不能单独防范受损后端:后端可能报告交易费用仍在预算内,实际构造的交易却支付了更高费用,例如通过删除找零输出来提高矿工费。
按照比特币交易的记账方式,输入金额中未分配给任何输出的部分会成为矿工费。因此,找零被移除时,节点可能损失资金,但资金不一定会转入攻击者控制的地址。
修复要求在设置费用预算时,根据待花费币的金额计算实际费用,并通过交易ID获取相关交易,以核实输入金额。随后,Eclair会检查后端报告的费用是否与实际费用一致,并将预算应用于实际费用,而非仅依赖后端提供的数值。它还会核验Eclair重新构建的出资部分是否支付相同的已验证费用,并拒绝找零输出位置无效的交易。
10月修复尚未列入最新发布版本
这两项改动分别处理双向融资与拼接流程中的费用上限,以及签名器模式下的交易费用验证。它们与此前涉及合作关闭手续费的漏洞,以及10月2日披露的节点重启后可能遭遇拒绝服务的问题属于不同事项。
截至10月12日,Eclair发布页面仍将9月的v0.14.3列为最新版本。主分支合并记录本身并不代表修复已随打包版本提供;运行Eclair的节点运营者需要确认所安装的构建是否包含10月的改动。