(图片来源:pixabay)
Russell在披露的完整信息中写道:
在支付通道打开前,闪电网络节点必须检查资金交易的输出是否符合标准。否则,攻击者就可以在不进行支付或没有全额支付的情况下打开支付通道。一旦交易达到最低深度,攻击者就可以从通道中转走资金。受害者只有在关闭支付通道时才会注意到自己的资金已经被转走了,但是再进行任何操作甚至是关闭交易都无法挽回损失。闪电网络是比特币的第二层支付协议,它支持比特币区块链上的超高速、低成本的交易。为了通过使用闪电网络发送交易,用户必须打开“支付通道”来发送和接收其他用户的资金。
如果节点没有对支付通道进行正确检查,那么攻击者就可以假装打开一个新的支付通道并发送虚假交易。在被欺骗后,用户会在不知道此前交易完全是虚假的情况下,向攻击者发送资金。目前尚不清楚有多少用户成为此类攻击的受害者。
Russell表示,目前,所有主要的闪电网络客户端都已经升级并修复了这个漏洞。
当被问及为什么要花三个月的时间才向用户披露这个漏洞时, ACINQ的首席执行官Pierre-Marie Padiou表示,开发人员必须谨慎处理这类问题。
Padio说:
如果公布这一漏洞的详细信息,那么它就会变得非常容易被人利用。三个月的时间并不长,因为你必须给用户足够长的时间来更新自己的客户端,而且很多用户都不会进行更新。他补充说,在完全确定没有用户处于危险之前,闪电网络的开发人员不想冒险暴露这个漏洞:
问题总会出现的。即使在比特币协议上,也存在漏洞。最重要的是如何以最佳方式来处理这些问题,从而保护用户的资金安全。
针对此漏洞的解决方案
Russel还对上述问题提出了解决方案。一旦节点看到新的支付通道,它就“必须要检查‘funding_created’是否为资金的交易输出,并显示‘open_channel’中的金额。”
该文件还警告说,闪电网络客户端c-lightning的0.7.1及以上版本将正确执行该过程,并敦促用户对其旧版本的客户端进行升级。
9月10日,总部位于伦敦的初创公司Lightning Labs和ACINQ的首席技术官Osuntokun也表示他们发现了该漏洞被利用的实例。为了避免资金损失的风险,Osuntokun强烈建议用户更新闪电网络客户端的版本。受影响的版本包括 LND的0.7及以下版本,c-lightning的 0.7及以下版本,Éclair的0.3及以下版本。