主页 > imtoken冷钱包app > 比特币现金漏洞追踪器:为什么我要帮助我的对手匿名查找漏洞?

比特币现金漏洞追踪器:为什么我要帮助我的对手匿名查找漏洞?

imtoken冷钱包app 2023-03-30 05:57:27

编者按:本文作者 Cory Fields 是麻省理工学院媒体实验室数字货币项目研究社区的比特币核心钱包开发人员,也是本次漏洞披露的一方。几个月后,他写下了这件事的全貌和自己的想法,希望能引起加密货币领域的关注。

2018 年 4 月 25 日,我私下匿名披露了比特币现金 (BCH) 的一个严重漏洞。与比特币 (BTC) 不同,比特币现金是世界上最有价值的加密货币之一。如果黑客成功利用此安全漏洞,可能会造成巨大破坏,使比特币现金交易无法安全进行,最终破坏货币本身的用途和价值。事实是,这个漏洞得到了很好的修复,没有发生任何事故,并且该事件已于 2018 年 5 月 7 日向公众披露。

首先,简要介绍一下比特币现金。比特币现金是一种不同于比特币且与比特币不兼容的加密货币。它之所以如此命名,是因为它源自比特币。下面描述的已修复漏洞仅影响比特币现金;比特币现金与比特币唯一相关的是它们的名字相似。

至于我为什么要这样做?我的动机是什么?我在麻省理工学院媒体实验室从事数字货币项目,顾名思义,这是一个研究和开发加密货币的团队。具体来说,我帮助开发和维护比特币核心钱包以及比特币的主要软件实现。由于承担了这项工作,我经常在会议和研讨会上被问到:你认为未来比特币面临的最大挑战是什么?而我的答案始终是一样的:比特币必须小心,以免将来出现灾难性的软件错误。

通过研究这个潜在的灾难性漏洞,我确信软件漏洞的威胁在加密货币世界中被严重低估了。我已经提供了事件的详细报告,这不是小题大做,但希望通过这个真实世界的例子让人们明白,要达到加密货币所需的复杂工程水平,还有很多工作要做,同时也为尚未为这种情况做好充分准备的公司敲响了警钟。

简而言之,部分交易签名验证码被重写,但新代码省略了对签名类型中特定位的关键检查。在本文中,我将此位称为 SIGHASH_BUG。这种遗漏将允许特制的交易将比特币现金区块链分成两个不兼容的链。在下一节中,我将描述这个分叉的重要性。有关漏洞和修复的详细信息,请参阅发布的文本。

区块链分叉漏洞有什么特别之处?

比特币互转能追踪吗

大多数加密货币,包括比特币和比特币现金,都是通过将所有交易的分类账分发给所有参与者来运作的。为了能够消费,货币持有者必须首先创建一个遵守系统所有规则的交易。这些规则中的大多数都是显而易见的和直接的,例如“你不能花费超过你所拥有的”,但其他规则则更为微妙和技术性,尤其是那些描述数字签名应该如何格式化的规则。但如果不允许加密货币,那么这些所谓的验证规则是谁制定的?

每个人都参与设置验证规则

系统的规则由每个人决定,执行这些规则是软件的工作。如果参与者试图欺骗并创建一笔交易,其中他花费了他自己的货币以外的货币,则其他参与者的软件会简单地拒绝该交易。因此,为了确保交易被普遍接受,它必须遵守所有的规则,即使是最迂腐的规则。

负责执行验证规则的软件需要持续改进。需要不断进行更改以提高性能、添加功能、提高安全性等等。但是,规则以完全相同的方式从一个版本到另一个版本执行是非常重要的。

那么,如果新版本软件中的意外编程错误导致交易被认为是有效的,而所有以前的版本都认为它无效,会发生什么?结果是“区块链分裂”,这意味着只有升级软件的一部分参与者会接受上述交易。由于交易和区块是链接在一起的,这两个子集在每个后续交易中都不一致。如果没有开发者的快速行动,将所有玩家聚集在一起,两大阵营玩家永远无法达成一致。届时,该货币实际上已分裂为两种不相容的货币,无法再像以前那样进行交易。

比特币互转能追踪吗

在权衡此类漏洞的潜在影响时,时机起着至关重要的作用。如果区块链一分为二,一侧有 99% 的参与者,另一侧只有 1%比特币互转能追踪吗,那么显然与大多数人站在一起就是前进的方向。但是,如果大约 50% 的人已经升级到新版本,那就没有简单的选择了。

我在比特币现金最流行的软件版本之一中发现了这个分裂链漏洞,但只是在近一半的网络升级到它之后。

发现漏洞

由于比特币现金是免费的开源软件,它经常被用作新兴加密货币的起点。除了受益于多年的改进之外比特币互转能追踪吗,共享代码还意味着其他不相关的加密货币可以从彼此的改进中受益。比特币现金的主要软件叫做比特币ABC(Bitcoin ABC),它是基于比特币核心钱包的软件之一。

由于大量的通用代码,这些派生项目往往会有类似的错误,因此也有类似的错误修复。然而,期望一种货币的开发者主动与其他货币的开发者分享他们的改进是不现实的,因为仅靠一个项目就很难跟上。出于这个原因,我养成了每隔几个月修补这些项目的习惯,以找到可能与比特币核心钱包相关的错误修复。

比特币互转能追踪吗

在今年早些时候查看 Bitcoin ABC 的变更日志时,我注意到交易验证的一个关键部分已被重构。这些变化立即引起了我的注意,因为它们似乎没有必要。出于对这些变化的好奇,我查看了公众对这些变化的评论。除了“封装”之外,没有理由解释它。这次改动只有两个审稿人,审稿一周后代码被接受。

大型重构非常普遍,通常是特定软件开发中的良好实践。但是,修改加密货币的验证码风险极大,可能会在不经意间引入链分叉漏洞。

在看到很少的评论和大量的更改后,我认为很有可能已经创建了一个错误,所以我去检查了它。不到 10 分钟就找到了 SIGHASH_BUG。

匿名披露

我在上面提到我的披露是匿名的。我想解释一下原因,因为匿名在这个过程中扮演着重要的角色。

比特币互转能追踪吗

在确认漏洞可以被利用后,我开始通知Bitcoin ABC(比特币现金协议的全节点实现)的开发者,但很快意识到我遇到了一个大问题。这是某人可能已经发现的公开可用的开源软件中的一个漏洞。在修复完全部署之前,没有什么能阻止其他人发现和利用此漏洞。

那么在最坏的情况下会发生什么?假设我代表我私下披露了该漏洞,而其他人发现它并在第二天匿名利用它。因为我是用我的名义披露的,所以将有足够的证据证明我有攻击比特币现金网络的知识和手段,我无法证明我不是攻击者。但是,如果该漏洞被利用,其成本可能比杀死这些人多出数十亿美元。所以匿名非常重要,我认为这对我的安全是必要的。

在尝试确定是否可以完全匿名披露时,我开始怀疑是否值得付出努力。毕竟,我没有义务报告任何事情。但是,如果有人在 Bitcoin Core 中发现了同样严重的漏洞,我非常希望那个人以尽可能最谨慎和最安全的方式引起我们的注意。所以我决定这样做:创建一个我想阅读的报告,然后按照我想要的标准编写该报告。

第一步很明显,我需要跟踪 Bitcoin ABC 的负责任披露政策。如今,处理此类问题的策略很常见,并且对于任何安全关键项目来说都是必须的。遗憾的是,我在 Bitcoin ABC 网站或代码库上找不到这样的策略。我发现最接近的是当我向他们的 GitHub 问题跟踪器提交错误时。

然而这并没有帮助。然后我开始尝试寻找公开发布的比特币 ABC 开发者的加密密钥。我加密给他们的消息以确保没有其他人可以查看它,因此我不必担心如何传递消息。我实际上无法验证密钥持有者的身份,但这种方法仍然相当安全,而且比根本不加密要好得多。

比特币互转能追踪吗

但是,我遇到了另一个障碍。公共 PGP 密钥服务器上没有列出主要开发人员的密钥,公共 PGP 密钥服务器通常可以在公共 PGP 密钥服务器上找到,也不在他们的代码存储库中。当时,我别无选择,只能通过不同的在线渠道匿名请求密钥,使用 Tor 尽可能掩盖我的身份。

4 月 25 日,我首先创建了一个一次性的 Github 帐户,并向那里的一些 Bitcoin ABC 开发人员发送了请求。

谢天谢地,这个方法奏效了!大约 5 个小时后,我收到了一个密钥,并迅速用它加密了一份详细披露的问题。然而,当我第二天回来查看回复时,Github 标记了我的一次性帐户,大概是因为我使用了 Tor。所以我不能在 Github 上再进一步,我不得不假设没有人收到我的披露。

现在我有了加密密钥,我决定尝试最后一种方法:再次使用 Tor 和一次性帐户向 Bitcoin ABC 的错误跟踪器提交加密消息。 6 小时后,在没有收到任何回复后,我在他们的追踪器上发出了最后一个请求。

4 月 27 日,在等待了大约 48 小时后,Bitcoin ABC 发出了一个拉取请求,秘密解决了这个问题。显然他们收到了我的信息。成功!

我的想法

我发现的比特币现金漏洞已被成功披露,现已修复,对比特币现金没有明显影响。但是,如果整个加密货币生态系统没有从对该漏洞的分析中获得一些经验和教训,那就太可惜了。作为加密货币开发人员,现在有必要退后一步,重新评估我们可以使用的工具以及我们实施的政策和程序。我们可能无法消除这些漏洞带来的威胁,但我们可以从中吸取教训,为未来的应对做好准备。