最新|闪电网络最新漏洞分析仅需攻击85个节点便可窃取闪电节点通道资金( 二 )


一旦它们过期,HTLC的输出就会被攻击者花费。尽管受害者仍然可以在到期后要求HTLC,但是特定的协议详细信息为攻击者提供了很大的优势:
通过攻击多个通道并强迫所有通道同时关闭(为所有HTLC设置相同的到期时间),某些受害者的HTLC声明所有权交易将无法得到及时确认,攻击者将窃取它们。
因此,攻击者保留了一些本应留给受害者的资金(受害者下一跳的资金已发送至攻击者的目标节点)。
最新|闪电网络最新漏洞分析仅需攻击85个节点便可窃取闪电节点通道资金
文章插图
阶段4:到期后收集未使用的输出
为了显示攻击的可行性,我们在比特币测试网络regnet上的本地闪电网络上进行了模拟。我们实施了攻击者节点的原型,能够阻止HTLCsecret的传输,而忽略解析HTLC的请求,并发布增加费用的HTLC声明所有权交易。由于LND是当今最流行的闪电实施方案(据报道,网络上90%以上的闪电网络节点都运行LND),因此我们使用它来模拟受害节点。如下图所示,即使向受害者的交易分配了区块中所有可用空间(最大区块大小),攻击85个通道也能确保成功进行攻击。每增加一个通道,其所有资金也将被盗。
针对不同数量的受攻击通道和区块大小,成功窃取的HTLC的数量。比特币当前的最大区块大小为4M(与绿线相对应)。实际上,闪电交易的可用空间少于全部。
如图所示,当每个区块中的可用空间减少时,窃取相同数量的HTLC所需要的受害者会更少。我们证明,当攻击者使用“联合最小化”策略(如下所述)时,可能就是这种情况。
最新|闪电网络最新漏洞分析仅需攻击85个节点便可窃取闪电节点通道资金
文章插图
针对不同数量的受攻击通道和块大小,成功窃取的HTLC的数量。比特币当前的最大块重为4M(与绿线相对应)。实际上,闪电交易的可用空间少于全部
如图所示,当每个区块中的可用空间减少时,需要更少的受害者才能窃取相同数量的HTLC。我们证明,当攻击者使用“feerate-minimization(费率最小化)”策略(如下所述)时,可能就是这种情况。
每个受害者交易所支付的费用均来自通道的Feerate参数。这个feerate由通道的发起者(在我们的情况下为攻击者的源节点)确定并支付。在打开通道之前,另一个节点必须接受通道设置的feerate。如果节点符合其对区块链费用的估计,则节点同意设置一个feerate,由bitcoind的估算方法确定。从下图可以看出,feerate的估算值可能会在相对较短的时间内发生很大的波动。当单方面关闭该通道时,在某个时间点确定的通道feerate可能不适用于以后的时间。
最新|闪电网络最新漏洞分析仅需攻击85个节点便可窃取闪电节点通道资金
文章插图
Bitcoind估算的用于立即确认的Feerate(聪/字节)
除了设置初始通道feerate之外,通道的发起人还可以在通道开放后的任何时间提出新的feerate,以将其调整为当前的区块链费用状态。闪电协议指出,在我们的情况下,另一方(即受害者)不允许提出任何feerate的更新请求。在“feerate-minimization”策略中,攻击者在可能的情况下(即,在区块链费用较低时(因此另一方会同意这一更改))使用费用更新机制降低通道的feerate,但从在区块链费用高时进行更新。一旦通道的费用率与实际的区块链费用率之间的差异变得很大,攻击者就可以开始启动所有HTLC付款并发起攻击。在下图中,我们看到了当攻击者持续3天和7天使用feerate-minimization策略时,受害者可用的平均区块空间。例如,当攻击者试图在开始攻击前7天将费用降到最低时,受害人只有58%的时间可以使用平均一半的区块空间,或者更多(在2个月的时间内收集数据)
最新|闪电网络最新漏洞分析仅需攻击85个节点便可窃取闪电节点通道资金
文章插图
当使用“feerate-minimization”策略时,受害者交易可用的平均区块空间
在这项工作中,我们还表明,找到潜在受害者对于攻击者来说并不是一件工作量很大的事情。为了使节点成为攻击的受害者,节点只需要接受与攻击者打开通道的请求。如闪电协议中所述,节点可以通过响应“accept_channel”消息来显示其打开通道的意愿,这时候并不需要真的打开通道。我们进行了一项实验,其中测试了网络上许多节点与未知节点打开一个通道的意愿。我们发现绝大多数活动节点(?95%)愿意根据这个请求打开通道,因此很容易成为这种攻击的受害者。
最新|闪电网络最新漏洞分析仅需攻击85个节点便可窃取闪电节点通道资金
文章插图
节点对“open_channel”请求的响应