Discovery Blockchain
发现区块链
2018
08 / 10
18 : 41
  •  0
  • 0
  •  0
评论
0

原文作者为Cory Fields,麻省理工媒体实验室数字货币计划(Digital Currency Initiative)研究社区的比特币核心开发者,也是漏洞披露事件的当事人。在2018年4月25日,我以非公开的形式匿名披露了比特币现金(BCH)的一个严重漏洞。

如果这一漏洞被人成功利用,可能会对比特币现金造成巨大破坏:用户将无法安全地交易比特币现金,从而完全破坏BCH本身的效用(以及价值)。该漏洞已经在没有发生意外的情况下得到修复,并于2018年5月7日公开披露。

Bitcoin开发人员以非公开形式匿名纰漏比特币现金的严重漏洞,也是操碎了心-比特评级BitRating.com

简短的说明:比特币现金是一种与比特币不同且不兼容的加密货币。它被命名为比特币现金是因为它源自比特币,它与比特币的唯一关系是相似的名称。本文所提到的那个现在已修复的漏洞仅影响比特币现金。

至于我和我的动机。我在麻省理工学院媒体实验室为数字货币计划工作,顾名思义,这个社区负责研究和开发加密货币。具体来说,我帮助开发和维护比特币核心,即比特币的主要软件实施。因为我的工作关系,我经常在会议和研讨会上被问到什么是比特币未来的最大挑战。我的回答只有一个:避免灾难性的软件bug。

发现这个有可能造成灾难的bug重申了我的信念,即在加密货币世界中,软件bug的威胁被严重低估。我现在提供一份关于这次事件的报告,并不是说针对比特币现金,而是作为一个真实世界的例子,表明仍需要多少工作来达到加密货币所需的复杂工程水平,并作为一个警钟,让那些没有为这种情况做好充分准备的公司早作准备。

SIGHASH_BUG

简而言之,一部分交易签名验证代码被重写,但新代码省略了对签名类型中特定位(bit)的关键检性查。我在本文中将这个位称为SIGHASH_BUG。这个省略将允许一个特制的交易将比特币现金区块链分叉成两条不兼容的链。

发现漏洞

在今年早些时候查看比特币ABC的变更日志时,我注意到交易验证中一个关键部分已经被重构。这些变更立即吸引了我的注意力,因为这些变更似乎是没有必要的。出于对这些变更的好奇,我看了一下公众对这些变更的评论。 除了“封装”之外,没有任何理由能解释。这个变更只有两个审核人,审核持续一周后代码即被接受。

大型重构是非常常见的,通常是特定软件开发中的良好实践。但是,修改加密货币的验证代码是极具风险的,极有可能会在无意中引入了一个链分叉错误。在看到评论很少而变更很大后,我认为一个漏洞很有可能已经产生,所以我就去查看了一下。 找到SIGHASH_BUG花了不到10分钟。

匿名披露

我在上面提到我的披露是匿名的。我想解释一下这个原因。在确认该漏洞可被人利用后,我开始通知比特币ABC(比特币现金协议的全节点实施)开发人员——但很快意识到我遇到了一个大问题。这是公开可用的开源软件中的一个bug,可能已经有人发现了这个bug。在完全部署修复程序之前,没有什么可以阻止其他人发现并利用这个bug。

那么在最糟糕的情况下,会怎么样呢?假设我以我的名义以非公开的形式披露了这个bug,而其他人也找到了这个漏洞并在第二天匿名利用了这个漏洞。因为我使用我的名字进行披露,所以会有足够的证据证明我有攻击比特币现金网络的知识和手段。我无法证明我不是攻击者。然而,如果漏洞被利用,可能会造成数十亿美元的损失。所以匿名是非常重要的,我认为这对我的安全是必要的。

在试图弄清楚是否可以完全匿名披露时,我开始怀疑它是否值得我花费这么多精力。毕竟,我没有义务报告任何事情。但是,如果有人在比特币核心中发现了一个同样严重的bug,我会很希望这个人以尽可能谨慎和安全的方式引起我们的注意。所以我决定这样做:假设这个bug是比特币核心的bug,创建我想要阅读的报告,按照我想要的标准来写这个报告。

我的思考

我发现的比特币现金漏洞已成功披露,且目前已经得到修补,最终没有对比特币现金造成明显影响。但是,如果整个加密货币生态系统没有从对这种bug的分析中受益,那将是一种遗憾。作为加密货币开发者,有必要先后退一步,重新评估我们可以使用的工具,以及我们实施的政策和程序。我们可能无法消除这些bug的威胁,但我们可以从中学习并做好准备,以便将来处理它们。

编辑: Coco.Cao
  •  0
  • 0
  •  0
声明:比特评级 BitRating.com 传递此信息,不意味着赞同其观点或立场,亦不构成投资建议;若据此操作,风险自担。
分享到:

评论 抢沙发

评论前必须登录!

 

长按图片分享给好友