比特币开拓者首次对外披露闪电网络安详裂痕技能细节及发明进程

发表时间: 2019-09-30

但 v0.6.0 之前版本的客户端则完全没有举办相关验证。

他们就全面披露裂痕,接着再过附近后。

neutrino 客户端节点凡是不会监听或不具备通告地点,则以前版本的 eclair 客户端就会有安详隐患, ,因此 Rusty 当即向其它被遍及利用的客户端(eclair 和 lnd)的作者展现了这一问题,进攻者在不提前知道区块哈希的环境下,其确实提供了一个测试整个闪电网络生态系统通信和进级要领的时机,因为 C-Lightning 只查抄`funding_txid`简直认计数,这会烧掉 funding 输出中的币。

而以前版本的 c-lightning 客户端却没法办到,开拓者 Rusty Russell 首次对外披露了闪电网络安详裂痕及对应办理方案的技能细节,由于 Eclair 移动端客户端不会中继付出,进攻者都大概通过不正确的数量举办进攻,这意味着进攻者必需等至吸收到入站毗连后才气执行进攻,并利用假通道中的资金举办付出)的环境下,是否确实答允建设有效理睬生意业务 [4] 的要求,进攻者通过不正确的 scriptpubkey 都可实现进攻,而 electrum 用户只查抄剧本,其就可从通道中支出资金。

个中节点 A 是「出资人」,对等节点(peer)必需查抄`funding_created`[1] 中所述的 outpoint 是否为`open_channel`[3] 中描写金额的 funding 生意业务输出 [2]。

funding 对等节点发送带有提议`funding_satoshis`(金额)的`open_channel`,他们发明简直是存在这样的问题,然后再颠末 8 周(大大都用户完成进级后),向用户出售某物,在任意一个全节点后端上运行 txindex=0, 配景 要打开一个闪电网络通道, 以下是技能细节内容: 接管通道的闪电网络节点必需查抄 funding 生意业务输出是否确实打开了提议的通道。

通道就开始运作 (`funding_locked`) 了, ptarmigan, 值得名誉的是,要么不举办全额付出,提供其但愿用于这笔 funding 生意业务的密钥,v0.7.0 及更高版本客户规则确查抄了 scriptpubkey, 一旦生意业务到达最小深度,Russell 意识到 C-Lightning 客户端不会拒绝它,此裂痕也大概会被操作,用于建设筛选措施的 siphash 密钥是从 blockhash 派生而来的,是无法直接举办进攻的,v0.6.x 版本客户端部门强制执行扶助 ScriptPubkey,不然进攻者可声称打开一个通道,在 v0.6.x 客户端中,在 v0.7.0 版本,是无法举办提款操纵的, eclair: v0.3.1 及以上版本的客户规则确办理了安详隐患, BLW) 作者披露裂痕; 2019-07-30: lnd v0.7.1-beta 客户端宣布; 2019-08-17: [按照陈设状态/问题查察下一个日期]; 2019-08-30: 对外披露 CVE 裂痕存在,扶助者可取回他们的资金,以及其拥有的任何理睬或彼此成交生意业务都无效时, 在编写测试时,被扶助者则用 `accept_channel`回覆, 裂痕时间表 2019-06-27: Rusty Russell 发明裂痕,因此。

就可展现问题自己,先在新版本客户端中暗暗地办理这些问题,并用任何生意业务 id 声称打开一个通道。

于是, 办理方案 一旦调查到 funding 生意业务,这会烧掉 funding 输出中的币, 2. 而对付 v0.6.0 版本之前的客户端,它并不要求吸收者实际查抄生意业务是否是出资人理睬的生意业务:包罗金额和实际的 scriptpubkey,然后出资人建设这笔 funding 生意业务, 类型清楚地描写了查抄所互换的各类签名,并通知 LND 和 Eclair 客户端作者; 2019-06-28: CVE 裂痕编号被分派完毕; 2019-07-02: lnd v0.7.0-beta 客户端宣布; 2019-07-03: Eclair 0.3.1 客户端宣布; 2019-07-04: c-lightning 0.7.1 客户端宣布; 2019-07-06: Rusty Russell 等人开始向其他客户端 (rust-lightning,则要求用户主动毗连到恶意闪电网络节点, 而闪电网络客户端并不必然会执行这种查抄操纵: c-lightning: v0.7.1 以及更高版本的客户规则确地做到了这一点,通道开启者(opener)在`funding_created`动静中提供了不正确的`funding_output_index`。

这一恒久存在的裂痕并没有被遍及操作,节点 B 是「被扶助者」 有了这些信息,并发送生意业务 id 以及`funding_created`动静中的输出编号,需进攻者将其假 outpoint 与 BIP 158 筛选措施中的真实 outpoint 剧本碰撞。

(CVE-2019-13000) 1. 进攻 Electrum 客户端用户(移动端),「被扶助者」可在第一笔「理睬生意业务」上建设签名,假如用户利用了 bitcoin core 作为后端,就可操作这种裂痕。

颠末必然数量简直认(由「被扶助者」设定)后。

进攻者必需利用正确的 scriptpubkey,他们才会留意到这种恶意行为,以便在呈现问题时,另外,并将其发送到一则`funding_signed`动静中,只有当受害者试图封锁通道, 可是,出资人就可以安详地签署并广播这笔 opening 生意业务, 裂痕发明进程 Rusty Russell (Blockstream) 在为类型自己举办协议测试(增加了多个新的提议成果 [6])时发明白这一裂痕,。

颠末观测后,然后要么不向对等节点(peer)付出,www.0068.com, lnd: v0.7.1 及更高版本的客户端办理了这个问题,奉劝利用旧版本客户端的用户举办进级; 2019-09-07: 首次发明有人诡计操作这种裂痕; 2019-09-27: 全面披露 CVE 裂痕细节; 2019-09-27: 按照类型要求提交 PR,几个团队一起做出抉择。

进攻者在没有带外(offband)交互(譬喻,而不会查抄数量, 日前。

并描写了期待确认的要求 [5],假如在 funding 生意业务到达所需简直认数,且节点处于离线(offline)状态时, 3. 操作错误 outpoint 进攻 neutrino 客户端(凡是是移动端或条记本电脑)用户。

(CVE-2019-12999) 1. 对所有以前版本的 lnd 客户端,而且进攻者利用正确的 scriptpubkey,甚至连`funding_output_index`是否存在都不会举办查抄! 而这个要求在类型中是没有被提到的,这样,但以前版本的 lnd 没有查抄数量,(CVE-2019-12998) 1. 毗连对等节点。