当前位置:首页 > 资讯 > 区块链新闻 > 正文

Qtum量子链开发团队独立发现比特币历史上重大安全漏洞之一

发布:中币网   时间:2020-02-20 14:30:26   加入收藏 打赏

背景比特币自 2009 年主网上线以来, 已经”安全“运行了 11 个年头,“几乎没有”出现过重大的安全性漏洞,这也是比特币的价值所在。然而,“安全”永远是一个相对的概念,比特币终究是一套软件,是软件
背景
比特币自 2009 年主网上线以来, 已经”安全“运行了 11 个年头,“几乎没有”出现过重大的安全性漏洞,这也是比特币的价值所在。然而,“安全”永远是一个相对的概念,比特币终究是一套软件,是软件就会有漏洞。
Qtum量子链开发团队独立发现比特币历史上重大安全漏洞之一 Qtum 开发团队曾在 2018 年独立发现,并向比特币安全团队汇报了一个足以毁掉比特币的增发漏洞:CVE-2018-17144。这个漏洞是比特币历史上最重大的安全漏洞之一。本文将介绍该漏洞造成的影响和一些技术细节,同时回顾 Qtum 团队独立发现该漏洞的经过。
比特币 CVE-2018-17144 漏洞
比特币 CVE-2018-17144 漏洞可以使部分低版本的比特币节点崩溃,即所谓的拒绝服务(DoS)。更恐怖的是,它可以被利用来增发比特币。这意味着如果这个漏洞被利用,比特币 2100 万的上限将被打破,攻击者可以“凭空创造”出新的比特币。市场中也将有无限多的比特币流入,这无疑会对比特币生态造成毁灭性打击。
该漏洞从 2017 年的比特币 0.14.x 版本开始引入,直至 2018 年 9 月的 0.16.3 版本才完成修复,并在 2018 年 9 月 20 日完全披露,在比特币核心代码中潜伏超过一年之久。不过幸运的是,在此期间,没有任何人利用过这个漏洞,否则比特币的历史走向可能会和今天完全不同。
一个小插曲
根据 [1] 中披露的信息,比特币核心开发团队是在 2018 年 9 月 17 日收到来自匿名开发者的 DoS 漏洞汇报,之后比特币核心开发者发现这实际上还是一个增发漏洞。前者的影响较小,而后者将会引起比特币社区极大的恐慌,并有可能被利用来攻击比特币。因此,比特币核心开发团队在 9 月 18 日修复了这个问题,并隐瞒了增发漏洞的事实。他们告诉社区,这只是一个 DoS 漏洞,并联系各大矿池进行升级。直到 9 月 20 日,Qtum 团队的开发者 David Jaenson 独立发现并汇报了增发漏洞的细节[4],比特币核心团队才不得不完全公开了漏洞的所有信息。
漏洞揭露过程的小插曲也足以证明其严重程度,只有会威胁到整个比特币生态的漏洞,比特币核心团队才会选择暂时隐瞒。
漏洞原理简介
比特币核心开发团队已经详细披露了 CVE-2018-17144 漏洞的细节[1],而且众多社区开发者也在事后进行了详尽的技术分析[2][3],感兴趣的读者可以从参考文献中发现更多细节。这里仅对其原理进行简要介绍。
“双花”是所有数字货币都需要解决的核心问题。所谓“双花”,即指同一笔钱被使用了两次,这相当于“凭空创造”出了一笔钱,对于数字货币来说是不可接受的。比特币底层采用了 UTXO 模型(即 未花费交易输出),可以用极其简单的逻辑防止“双花” -- 同一个 UTXO 不能被使用两次。而在大家最熟悉的账户模型中,处理此类问题的逻辑要复杂得多,与本文无关,因此不展开介绍。
CVE-2018-17144 漏洞就涉及到一种比较不常见的“双花”攻击:矿工可以利用该漏洞在他们所挖出的区块中包含非法的“双花”交易,这笔交易重复使用同一个 UTXO 作为输入,从而“增发”出额外的比特币。
这种攻击当然不可能轻易成功,比特币早期版本就对这种情况进行了严格的检查。然而,比特币作为一个软件,也在不断的更新迭代,开发者对这些检查进行了很多逻辑和效率上的重构和优化。就是在多次优化的过程中,对上述”双花“的验证出现了问题。
漏洞引入过程
漏洞引入过程大致如下[4]:
在 2012 年发布比特币版本中,开发团队引入了一个冗余检查,即在两段不同的代码中对上述“双花”进行了重复的验证。当然这本身没有问题,只是浪费了一些时间。
此后,一位开发者对冗余的第二层检查进行了逻辑优化,把遇到上述“双花”时拒绝交易的逻辑改为了节点崩溃,原因是第一层检查已经对此进行了验证,所以在第二层检查中不可能再出现。
2017 年,在比特币 0.14 版本中,另一位开发者对冗余的第一层检查进行了一次性能优化,因为这个检查会逐个检查每一笔交易的输入,开发者觉得这效率很低,所以用一个开关把这个检查默认跳过了。
到了 0.15 - 0.16 版本,比特币节点的数据库结构发生了比较大的调整,在此过程中,上述的第二层冗余检查被直接删除,至此,原来的两层冗余检查被完全“移除”。
造成的后果
导致的结果就是,前文所述的矿工发起的的“双花”攻击成为可能:
对于 0.14.x 版本的节点来说,该攻击可直接导致节点崩溃,即所谓的 DoS 攻击;
而对于占更多数的 0.15.x - 0.16.2 版本,这种“双花”将被直接认可为合法交易,实现比特币的“增发”。
值得注意的是,只有矿工可以发起上述攻击,因为普通用户发起的“双花”交易一旦被广播就会很快被发现不合法,而矿工可以直接将交易写入区块。所以这种攻击的代价也是非常高的,需要有足够的算力做支撑。
但即使不直接发起攻击,只需要公开披露这一漏洞和攻击方式,就可以很轻易地“做空”比特币,从而在二级市场获取巨额利益。
当时绝大多数比特币网络中的节点都是受影响的 0.14-0.16 版本,如果漏洞被利用,足以摧毁比特币近十年建立起的所有共识。Qtum 团队是第一个独立发现这个增发漏洞的团队,理论上有足够的时间发起攻击。但 Qtum 团队没有选择发起攻击或在公开渠道进行披露,而是第一时间汇报给了比特币安全团队。
量子链与比特币
为什么 Qtum 团队可以发现比特币安全漏洞?
Qtum 是首个在比特币 UTXO 模型之上成功支持智能合约的公链项目,Qtum 提出的基于 UTXO 的解决方案在比特币上也可以实现,但保守的比特币核心开发团队很难去推动如此大的改进。同时,Qtum 也是唯一一个始终跟进比特币最新代码的开源项目。比特币的每一次迭代都会被引入 Qtum。不仅如此,Qtum 既包含了比特币的底层 UTXO 模型代码,又包含了以太坊的 EVM,同时还采用了 PoS 共识机制,所以需要考虑的安全问题比比特币更加复杂。可以说,要成为 Qtum 开发者,首先要成为比特币和以太坊的专家。
时间回到 2018 年 9 月 18 日,比特币核心团队向社区推送修复“DoS 漏洞”,实际上隐瞒了其增发漏洞的实情。Qtum 团队第一时间跟进了这个升级,但在进行测试的过程中,Qtum 开发者 David 很快发现这其实是一个增发漏洞。抱着谨慎的态度,David 对 Qtum 的 UTXO 代码,EVM 代码和 PoS 部分代码进行了详细排查,最终确定这是比特币代码本身的增发漏洞。经过团队讨论,Qtum 在第一时间向比特币开发团队汇报了这一漏洞,并提交了完整的攻击测试用例。比特币团队随后对该漏洞进行了完整披露,并特别感谢了 Qtum 开发者 David Jaenson 的贡献[1]。
受邀参加中本聪圆桌会议
实际上,Qtum 开发者中有不少比特币的代码贡献者,是对比特币和以太坊代码最为熟悉的技术团队之一。正是因为 Qtum 技术团队对比特币技术社区的长期支持,Qtum 联合创始人帅初受邀参加 2020 年比特币圈的机密闭门会:中本聪圆桌 Satoshi Roundtable[5]。这个闭门会也被称为是比特币圈的“彼尔德伯格会议”。
总结

未来,Qtum 技术团队会继续在比特币、以太坊等开源项目中保持活跃,与开源社区共同保障区块链底层安全机制。同时,Qtum 将在区块链隐私计算、共识机制改进以及更先进的虚拟机等方向不断突破。相信未来会有更多 Qtum 的技术解决方案被比特币等其他开源项目所采纳,共同打造更加完整的区块链底层基础设施。

参考文献
[1]https://bitcoincore.org/en/2018/09/20/notice/
[2]https://medium.com/hackernoon/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
[3]https://bitcoin.stackexchange.com/questions/79481/how-does-the-most-recently-found-critical-vulnerability-cve-2018-17144-work/79484#79484
[4]https://news.ycombinator.com/item?id=18032323
[5]https://mp.weixin.qq.com/s/8cxCyFvFnEV900duxNQ7fQ

来源:Qtum量子链




来源:中币网  https://www.zhongbi.net/news/blocknews/170185.html
声明:登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。 此文如侵犯到您的合法权益,请联系我们3111859717@qq.com,我们将第一时间处理。