Core Lightning 漏洞可导致节点升级后持续崩溃,直至删除存储的触发记录
要点速览
- •该缺陷影响 Core Lightning v25.02 至 v26.04 版本,由研究员 Nishant Bansal 于 10 月 24 日公开披露。
- •一条将相同节点 ID 同时命名为两个端点的恶意通道公告会被接受并写入 gossip_store,由于路由图尝试两次插入该节点,节点在每次重启时崩溃。
- •预防性修复于 4 月 24 日合并,并随 4 月 25 日发布的 v26.04.1 版本上线,比 10 月的披露早了数月。
- •由于补丁仅验证传入的公告,而启动时仍会读取已存储的记录,运营者必须手动从 gossip_store 中删除恶意记录才能恢复崩溃的节点。
- •离线节点无法监控区块链上已撤销的通道状态或限时支付申领,因此长期崩溃可能使运营者资金面临风险。

Core Lightning 漏洞可导致节点升级后持续崩溃,直至删除存储的触发记录
比特币闪电(Lightning)支付网络软件 Core Lightning 披露的一处缺陷,可能导致节点在每次重启时崩溃,即使已完成升级,因为触发崩溃的恶意公告仍存储在磁盘上。
研究员 Nishant Bansal 于 10 月 24 日披露了该问题,指出 v25.02 至 v26.04 版本受影响。公告被保存后,每次重启都会重新加载同一触发记录,Bansal 表示运营者必须手动删除该问题记录才能恢复节点。
追踪比特币工程进展的技术简报 Bitcoin Optech 于 10 月 30 日着重提及了该问题,但预防性补丁已有数月之久。Core Lightning 于 4 月 24 日合并了 pull request #9082,并于 4 月 25 日在 v26.04.1 版本中发布修复。因此,10 月的披露所解释的缺陷,其预防性修复早在 4 月就已可用。
为什么补丁无法清除已存储的触发记录
通道公告向节点告知闪电路由图中的连接。支付通过这些记录的连接逐跳进行,因此每个路由节点都依赖一份准确的路由图副本才能转移资金。在本例中,一条精心构造的公告将同一个此前未知的节点同时命名为两个端点。存在漏洞的软件接受了该公告,将其写入磁盘上的 gossip_store,随后加载到路由图中。
路由图随后尝试两次插入同一节点。防止重复的保护机制中止了处理这些公告的组件 gossipd,而 Core Lightning 将该失败视为对整个节点致命的错误。
补丁在接受公告前检查端点顺序。要求第一个节点 ID 严格小于第二个 ID 也会拒绝相等的 ID,从一开始就防止格式错误的输入被接受和存储。
不过,该验证仅适用于传入的公告。启动时仍会读取 gossip_store 中已有的记录,升级并不会删除崩溃前保存的恶意记录。正因如此,Bansal 要求的恢复方式是手动从 gossip_store 中删除恶意记录。
仅做清理也会使存在漏洞的安装再次面临崩溃风险:据披露信息,在攻击者控制的 funding output(即开启通道的链上输出)仍未花费的情况下,攻击者可以重新发送同一公告。
中继暴露、升级建议与停机风险
Bitcoin Optech 指出,v25.02 之前的 Core Lightning 版本可以在自身不崩溃的情况下接受并中继此类公告。因此攻击者无需与每个存在漏洞的节点建立直接连接,因为中继的公告会被继续转发给各节点的对等节点,并可能将格式错误的记录带入网络更深处。
对于现在选择升级的运营者,v26.04.1 是包含该缺陷修复的首个版本。截至 11 月 2 日,项目的最新版本是 10 月 7 日发布的 v26.06.9,维护者强烈建议安装。
停机除了服务不可用之外,还带来支付监控风险。在闪电网络中,执行通道规则的责任落在节点运营者身上。Bansal 警告说,离线节点无法监控链上已撤销的通道状态,或必须在到期前提出的限时支付申领。错过这些事件可能使资金面临风险。
原始报道:CryptoSlate