在 2023 年 10 月 16 日的一封邮件中,比特币安全研究员 Antoine Riard 深入探讨了闪电网络通道所面临的资金丢失风险,这些风险主要是由于交易池的问题引发的。他特别提到了一种影响闪电网络通道的交易中继干扰攻击,这在实践中是完全可能的,即使没有网络交易池拥堵也可能发生。

为了应对这些攻击,多个主要的闪电网络实现在过去几个月都已经设计、实施并部署了相应的缓解措施。Riard 还列举了这些主要实现的版本号:LDK: v0.0.118 - CVE-2023-40231;Eclair: v0.9.0 - CVE-2023-40232;LND: v.0.17.0-beta - CVE-2023-40233;Core-Lightning: v.23.08.01 - CVE-2023-40234。

Riard 强调,固定攻击(Pinning attacks)多年来被视为实际攻击向量,而现在,替换循环攻击(Replace-by-Fee Cycle Attack)似乎为攻击者提供了一种新的手段。

同时 Riard 表示,自己将从现在开始停止参与闪电网络的开发,因为这种新的替换循环攻击会将闪电网络置于非常危险的境地。

闪电替换循环攻击如何工作?

在邮件列表中有很多关于这个新发现的漏洞的讨论。在讲闪电替换循环攻击如何工作前,首先我们要先知道的是;HTLC (哈希/时间锁定合约) 作为有条件的付款工具,从发送方到接收方创建了一个安全的支付路径。这个路径要么是接收方通过提供某个哈希值的原像来立即完成付款,要么是在一定时间内未完成,则发送方可以拿回资金。

BitfeedLive 和 mempool 的开发者 mononaut(@mononautical)做了一个入门图解:

闪电替换循环攻击攻击的核心是,假设鲍勃正在从爱丽丝那里通过闪电网络支付给卡罗尔。鲍勃有两个挂起的 HTLC:一个是从爱丽丝那里来的,另一个是发给卡罗尔的。

图源:mononaut

但鲍勃不知道的是,爱丽丝和卡罗尔正在串通窃取他的钱。当卡罗尔未能在规定的时间内提供付款的原像,鲍勃尝试在链上超时并回收他的资金。

这时,爱丽丝和卡罗尔串通起来,通过广播两笔交易的链条来为攻击做准备,并准备了一系列低成本的交易,伪装成与闪电网络无关的普通交易,这些交易称为「循环父」和「循环子」。

图源:mononaut

当鲍勃的超时交易出现在内存池中,攻击者立即发布一个交易,这个交易使用卡罗尔的哈希原像并引用「循环父」交易。由于这个新交易的费率更高,它在内存池中替代了鲍勃的超时交易。

图源:mononaut

攻击者继续这样操作,每次鲍勃尝试重新发布他的超时交易时,他们都会阻止它。如果攻击者成功进行了足够长的时间,那么爱丽丝可以利用鲍勃与她之间的通道上的另一个时间锁来回收资金。

图源:mononaut

替换循环攻击:实现和防范都很困难

在比特币闪电网络面临的替换循环攻击问题上,Tether 的 CTO Paolo Ardoino 也表达了他的关注,他提到 Bitfinex 自 2019 年以来一直运营闪电网络的三个主要节点,这意味着这个问题也吸引了其他大公司的注意。

虽然比特币开发者 Riard 表示他可能会退出闪电网络的开发,因为他认为该网络正面临风险。他还特别指出,为了解决这种新攻击方式,可能需要对比特币网络进行修改。

但事实上,这种攻击有极大的复杂性,并不容易实现。

慢雾创始人余弦也有相似的看法,他在社交媒体上指出,为了成功实施这一攻击,攻击者需要满足多个条件,例如在受害者上开启两个通道并确保受害者未发现 HTLC 预映像交易等。针对这种威胁,余弦建议项目方与有信誉的方建立通道,降低风险。

虽然实现这种攻击很复杂,但作为用户,我们完全避免也相当困难,即使采取一些措施。

在这个问题上,mononaut 指出:Bob 可以主动监测其交易池,以便及时发现 HTLC 超时。但是,熟练的攻击者仍然可以绕过这些防御措施。要真正修复这个问题,我们可能需要进行更深层次的调整。我们可以考虑重新设计 HTLC 协议,或是修改传播策略,或者引入新的操作来应对此问题。

从三明治攻击到替换循环

显然,闪电替换循环攻击的手法与以太坊上的 MEV 三明治攻击相似,这些攻击都是利用前后夹击来套取目标资金。但以太坊 MEV 三明治攻击的研究在最近几年里,仍然没有得到很好的完善。

就在近日,以太坊基金会通过 Uniswap V3 出售 1700 枚 ETH 时,仍遭到 MEV Bot 的三明治攻击,损失 9101 美元,该 MEV Bot 获利约 4,060 美元。

DeFi 专家 CHRIS POWERS 在最近的一篇文章中指出:自 Flashbots 推出旨在「有效应对 MEV 问题」的 MEV-Geth 以来,近三年里的变化颇为剧烈。以太坊见证了市场的起落,并成功地迈向了权益证明(Proof of Stake)的新阶段,这是其技术进展中的一大里程碑。

然而,链上经济资源的争夺变得更为激烈,尽管我们已经做出了很大努力,但 MEV 的问题仍然存在。

对于 MEV 的挑战,存在许多潜在的解决方法。但是,一些人错误地认为某些方法,如公平排序,可以彻底解决问题。从设计开始,我们就应该考虑如何应对 MEV。尽管很多开发者正在努力减少 MEV 的影响,但他们也需要认识到完全避免损失是不现实的。

MEV 并非不可避免,因此开发者们应该更加积极地与 MEV 生态系统的参与者进行沟通与合作。重要的是,支付流程本身并不是问题的核心,真正的问题在于它的不透明性。

相关阅读:《消除 MEV 的尝试失败了?开发者如何应对「MEV 危机」》

以太坊的 mev 三明治攻击的研究在最近几年里仍然没有得到很好的完善。而比特币的这个类似问题,闪电替换循环攻击,或许在短时间里也很难得到解决。面对开发者退出和替换循环攻击风险,比特币闪电网络又将何去何从?