比特币虽然是密码货币世界的安全标杆,但这并不意味着它本身不存在着漏洞。
近期,开发人员发现 Bitcoin Core软件中存在着一个异常严重的漏洞,这促使开发者在本周三发布了一个漏洞修补方案 ——0.16.3版本Bitcoin Core客户端。
据悉,这一漏洞属于拒绝服务式漏洞,如果被人利用,攻击者可用于攻击节点,在最坏的情况下,它可暂时造成比特币网络崩溃。
然而,并不是所有人都拥有利用这一漏洞的能力,只有那些运行挖矿硬件并处理比特币网络交易的矿工,才能够通过双花交易的方式来利用这一漏洞。
而对他们而言,执行这样的攻击,就意味着他们会失去区块奖励,根据今天的比特币汇率计算,这些奖励(12.5BTC)价值超过了75000美元。
据悉,该漏洞的首次引入,追溯到Bitcoin Core 0.14.0版本客户端的发布,时间点是在2017年3月份。但这一漏洞在近两天才被发现,这促使Core代码库的贡献者采取紧急行动,并在24小时内最终发布经过测试的修复程序。
幸运的是,现在大多数比特币用户不需要做任何事。
开发人员强调称,用户“存储”的比特币并没有什么风险,然而,这一漏洞可能会影响那些使用闪电网络的人。
尽管如此,由于该漏洞对比特币网络具有潜在的风险,开发人员强烈建议当前运行全节点的用户尽快升级他们的软件,红迪比特币子论坛管理员Theymos也置顶了一则关于该漏洞的通知。
Bitcoin Core开发者在软件补丁注释部分中描述道:
“我们敦促网络的所有参与者尽快升级新软件。”
会影响闪电网络
著名的计算机科学家莱斯利·兰伯特曾说:
“对于分布式系统而言,其中一台你甚至不知道存在的计算机出现了故障,都可能致使你计算机无法使用。”
而在当前这种特殊的情况下,制造有缺陷交易的矿工,可能会影响网络上运行的节点。正如比特币OpTech newsletter所指出的那样,矿工想要攻击比特币节点,就需要去尝试双花一些比特币。
而这一漏洞影响最大的,将是使用那些尚未准备好的比特币捆绑技术(闪电网络)的用户。如果有人实施这样的攻击,可能会影响到在主网上运行闪电网络的比特币用户。
“如果你鲁莽地在运行闪电网络,你应该尽快更新客户端,或者关闭你的通道,幸运的是,更新是很容易的,” Blockstream工程师Gregory Sanders在红迪论坛上敦促说。
这里需要关注的是,如果有恶意矿工利用了这个漏洞,造成一名用户的节点崩溃,那么恶意参与者可能会利用这个机会欺骗其他闪电网络用户。
即便如此,一些开发者认为,要做到这些攻击,其实是很难的。
“我认为它不太可能产生很大的影响,”开发者Justin Camarena告诉CoinDesk。
这就是为什么有些人认为,普通用户不需要担心这一问题。
“除非你经营了一个业务,或者运行了闪电网络节点,否则你并不会有资金风险,” Sanders后来补充说。
难以判断其影响
然而,在比特币的历史背景下,这一漏洞究竟具有多大的意义,目前还难以弄清。
Blockchain.info数据工程师Antoine Le Calvez列出了一份历年来类似漏洞的清单,表明这些漏洞在比特币的早期阶段更为常见。
但Bitcoin Core的贡献者Luke Dashjr对此的回应却是,他认为漏洞可能不会向数据显示的那样随时间推移而减少。
“可悲的是,我认为近年来我们缺乏的是漏洞披露工作,而不是更少的开发工作,”他说。
与此同时,其他人也从这一漏洞中得出了其他结论,即“比特币程序员也是凡人,他们也会犯错”。
OpenBazaar的首席开发者Chris Pacia甚至认为,虽然很多用户认为比特币开发者是世界上最棒的开发者群体,但这也恰恰证明了,他们实际上也是会遇到障碍的普通开发者。
“错误发生了,生活中总会有这样的事,”Chris Pacia在推特上表示,“我不是因为这个漏洞而批判他们,我批评的是那些坚持Core开发者就是‘上帝’的傻瓜极简主义者。”
尽管如此,Camarena认为,由于这一漏洞的细微差别以及攻击执行难度,所以人们不太会去尝试这样的攻击。
他告诉记者:
“这是一个严重的漏洞,但并不像某些人认为的那般糟糕。”
附:更新方法
如果你运行的是旧版本客户端,请关闭它,直至其完全关闭(旧版本可能需要几分钟的时间),然后再运行安装程序(在Windows上)或拷贝覆盖至/Applications/Bitcoin-Qt
(Mac系统)或bitcoind/bitcoin-qt
(Linux系统)。
当你第一次运行0.15.0或更新版本的客户端时,你的链态数据库将转换成一种新的格式,这取决于你机器的速度,所花费的时间从几分钟到半小时不等。
注意,区块数据库格式在0.8.0版本中也发生了变化,并且在0.8版本之前的客户端到 0.15.0版本的客户端并没有自动升级代码。在0.7.x版本或更早版本的客户端,无法实现直接升级(需要重新下载区块链)。不过,和往常一样的是,旧版本的钱包仍然是支持的。
https://bitcoincore.org/bin/bitcoin-core-0.16.3/