日前,开发者RustyRussell首次对外披露了闪电网络安全漏洞及对应解决方案的技术细节。
以下是技术细节内容:
接受通道的闪电网络节点必须检查交易输出是否确实打开了提议的通道,否则攻击者可声称打开一个通道,然后要么不向对等节点支付,要么不进行全额支付。
一旦交易达到最小深度,其就可从通道中支出资金。只有当受害者试图关闭通道,以及其拥有的任何承诺或相互成交交易都无效时,他们才会注意到这种恶意行为。
而闪电网络客户端并不一定会执行这种检查操作:
c-lightning:v0.7.1以及更高版本的客户端正确地做到了这一点,而以前版本的c-lightning客户端却没法办到。(CVE-2019-12998)
连接对等节点,并用任何交易id声称打开一个通道,就可利用这种漏洞。
比特币闪电网络节点数量为33,295个:金色财经报道,1ML网站数据显示,比特币闪电网络(LightningNetwork)的节点数量为33,295个,同比增长4.10%;通道数量为85,641个,同比增长2.2%;网络容量为3,360.08BTC,同比增长1%。[2022/1/25 9:10:20]
lnd:v0.7.1及更高版本的客户端解决了这个问题,但以前版本的lnd没有检查数量。v0.7.0及更高版本客户端正确检查了
scriptpubkey,v0.6.x版本客户端部分强制执行资助
ScriptPubkey,但v0.6.0之前版本的客户端则完全没有进行相关验证。
对所有以前版本的lnd客户端,攻击者都可能通过不正确的数量进行攻击。在v0.7.0版本,攻击者必须使用正确的scriptpubkey,这会烧掉funding输出中的币。
而对于v0.6.0版本之前的客户端,攻击者通过不正确的scriptpubkey都可实现攻击。在v0.6.x客户端中,如果在funding交易达到所需的确认数,在任意一个全节点后端上运行txindex=0,且节点处于离线状态时,此漏洞也可能会被利用。
闪电网络节点数量已达16452个:金色财经报道,据1ML.com数据,目前,支撑网络的节点数量达到16452个,相较30天前数据,环比上涨5.36%;通道数量为37781,相较30天前数据,环比上涨4%;闪电网络承载能力目前为1079.57BTC,约合4175.5万美元。[2021/2/7 19:09:47]
利用错误outpoint攻击neutrino客户端用户,需攻击者将其假outpoint与BIP158筛选程序中的真实outpoint脚本碰撞。用于创建筛选程序的siphash密钥是从blockhash派生而来的。因此,攻击者在不提前知道区块哈希的情况下,是无法直接进行攻击的。此外,neutrino客户端节点通常不会监听或不具备公告地址,这意味着攻击者必须等至接收到入站连接后才能执行攻击。
eclair:v0.3.1及以上版本的客户端正确解决了安全隐患,如果用户使用了bitcoincore作为后端,则以前版本的eclair客户端就会有安全隐患。而electrum用户只检查脚本,而不会检查数量。
攻击Electrum客户端用户,则要求用户主动连接到恶意闪电网络节点,并且攻击者使用正确的scriptpubkey,这会烧掉funding输出中的币。由于Eclair移动端客户端不会中继支付,攻击者在没有带外交互的情况下,是无法进行提款操作的。
闪电网络节点数量已达13420个:金色财经报道,据1ML.com数据,目前,支撑网络的节点数量达到13420个,相较30天前数据,环比上涨2.16%;通道数量为37354,相较30天前数据,环比下降0.3%;闪电网络承载能力目前为1019.7BTC,约合1204.63万美元。[2020/8/17]
解决方案
一旦观察到funding交易,对等节点必须检查`funding_created`中所述的outpoint是否为`open_channel`中描述金额的funding交易输出。
背景
要打开一个闪电网络通道,funding对等节点发送带有提议`funding_satoshis`的`open_channel`。被资助者则用`accept_channel`回复,提供其希望用于这笔funding交易的密钥。
然后出资人创建这笔funding交易,并发送交易id以及`funding_created`消息中的输出编号。
```
+-------++-------+
动态 | 闪电网络节点数量达9751个:据1ML.com数据显示,闪电网络节点数量呈持续上升趋势。目前,支撑网络的节点数量达到9751个,在过去的30天中上涨了4.43%,而通道数量为36273个,在过去的30天中上升了16.1%。闪电网络承载能力目前为842.89个BTC,约合828.16万美元。[2019/9/2]
||--(1)---open_channel----->||
||<-(2)--accept_channel-----||
||||
|A|--(3)--funding_created--->|B|
||<-(4)--funding_signed-----||
||||
||--(5)---funding_locked---->||
||<-(6)---funding_locked-----||
+-------++-------+
独家 | Joseph (Joe) Fanelli:应对闪电网络持有质疑态度:针对近日闪电网络遭受Diar诟病无法处理大额交易事宜,EOS Asia co-founder Joseph (Joe) Fanelli 乔峰在接受金色财经独家采访时表示:“在我看来,如果比特币核心团队计划将比特币作为某种支付系统,那么他们离现在的比特币发展蓝图还遥遥无期,这样的系统所导致的问题也会多于它所能解决的。况且,真正的问题是:为什么他们会以这种方式来定位比特币呢?很多业内和支持比特币的人都没有读过中本聪的白皮书,但仍然采纳这个领域重要人物的建议和看法,并将其视为真理的唯一来源。但是,在下定论之前,我们始终应该质疑一切,哪怕它可能是错的,因为至少这样一来,我们将所有能促成最终那个决定的可能因素都考虑了个遍。对待闪电网络,我们应持有同样的质疑态度。”
乔峰进一步解释:Diar 分析了闪电网络的问题, 指出在交易运行的每个通道中必须有足够的比特币加载,并且人们想要发送的比特币越多,成功的概率就越小。因此闪电网络必须另辟蹊径。[2018/7/2]
其中节点A是“出资人”,节点B是“被资助者”
有了这些信息,“被资助者”可在第一笔“承诺交易”上创建签名,并将其发送到一则
`funding_signed`消息中,以便在出现问题时,资助者可取回他们的资金。这样,出资人就可以安全地签署并广播这笔opening交易。经过一定数量的确认后,通道就开始运作(`funding_locked`)了。
规范清楚地描述了检查所交换的各种签名,是否确实允许创建有效承诺交易的要求,并描述了等待确认的要求。
但是,它并不要求接收者实际检查交易是否是出资人承诺的交易:包括金额和实际的scriptpubkey。
漏洞发现过程
RustyRussell(Blockstream)在为规范本身进行协议测试时发现了这一漏洞。
在编写测试时,通道开启者在`funding_created`消息中提供了不正确的`funding_output_index`,Russell意识到C-Lightning客户端不会拒绝它,因为C-Lightning只检查`funding_txid`的确认计数,甚至连`funding_output_index`是否存在都不会进行检查!
而这个要求在规范中是没有被提到的,因此Rusty立即向其它被广泛使用的客户端的作者揭示了这一问题。经过调查后,他们发现的确是存在这样的问题。
于是,几个团队一起做出决定,先在新版本客户端中悄悄地解决这些问题,然后再经过8周,就可揭示问题本身,接着再过四周后,他们就全面披露漏洞。
值得庆幸的是,这一长期存在的漏洞并没有被广泛利用,其确实提供了一个测试整个闪电网络生态系统通信和升级方法的机会。
漏洞时间表
2019-06-27:RustyRussell发现漏洞,并通知LND和Eclair客户端作者;2019-06-28:CVE漏洞编号被分配完毕;2019-07-02:lndv0.7.0-beta客户端发布;2019-07-03:Eclair0.3.1客户端发布;2019-07-04:c-lightning0.7.1客户端发布;2019-07-06:RustyRussell等人开始向其他客户端(rust-lightning,ptarmigan,BLW)作者披露漏洞.2019-07-30:lndv0.7.1-beta客户端发布;2019-08-17:2019-08-30:对外披露CVE漏洞存在,劝告使用旧版本客户端的用户进行升级。2019-09-07:首次发现有人企图利用这种漏洞;2019-09-27:全面披露CVE漏洞细节;2019-09-27:根据规范要求提交PR;
https://github.com/lightningnetwork/lightning-rfc/blob/v1.0/02-peer-protocol.md#the-funding_created-messagehttps://github.com/lightningnetwork/lightning-rfc/blob/v1.0/03-transactions.md#funding-transaction-outputhttps://github.com/lightningnetwork/lightning-rfc/blob/v1.0/02-peer-protocol.md#the-open_channel-messagehttps://github.com/lightningnetwork/lightning-rfc/blob/v1.0/02-peer-protocol.md#requirements-2https://github.com/lightningnetwork/lightning-rfc/blob/v1.0/02-peer-protocol.md#the-funding_locked-messagehttps://github.com/ElementsProject/lightning-rfc-protocol-test
标签:INGUNDFUNDDINVikingsChainCompound USD CoinKateFundcoinDINK
01以太坊Gas使用创新高,USDT是最大功臣区块链市场分析平台glassnode:以太坊Gas使用创新高.
1900/1/1 0:00:00摘要专题:Libra的货币篮子背后是经济、金融和因素妥协后的产物。当前透露出的Libra实际货币篮子与我们的预言基本相合.
1900/1/1 0:00:00前言:web2.0中,数据所有权归平台所有,这导致时不时出现平台数据泄漏的问题。那么,web3.0的到来,能否实现将数据的所有权和应用逻辑进行解绑.
1900/1/1 0:00:00据Coindesk10月1日报道,本周一,以太坊的测试网络Ropsten进行了一次全面的系统升级。虽然“伊斯坦布尔”升级会增强以太坊网络的运行效率,但测试网络的运行并不是那么一帆风顺.
1900/1/1 0:00:00德国最大的银行德意志银行加入了摩根大通的区块链网络——银行间信息网络(IIN)。 图片来源:Unsplash?IIN已运作两年据英国《金融时报》9月15日报道,由摩根大通牵头的区块链计划银行间信.
1900/1/1 0:00:00区块链落地的又一大领域将是“供应链”,目前已服务于沃尔玛、联合利华等多家跨国企业。 当前全球供应链存在哪些痛点?供应链是一种网络,连接众多参与创建、分发产品及服务的人员和企业,涵盖了从原材料提供.
1900/1/1 0:00:00