主页 > imtoken钱包地址 > 比特币现金漏洞跟踪:为什么我要匿名帮助对手寻找漏洞?

比特币现金漏洞跟踪:为什么我要匿名帮助对手寻找漏洞?

imtoken钱包地址 2023-12-10 05:11:30

比特币现金漏洞追踪始末:我为什么匿名帮助对手找bug?

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

首先,简单解释一下比特币现金。 比特币现金是一种与比特币不同且不兼容的加密货币。 之所以如此命名,是因为它源自比特币。 下面描述的已修复错误仅影响比特币现金; 与比特币现金唯一相关的是它们名称的相似性。

至于我为什么要这样做? 我的动机是什么? 我在麻省理工学院媒体实验室从事数字货币项目工作,顾名思义,该实验室是一个研究和开发加密货币的小组。 具体来说,我帮助开发和维护比特币核心钱包和比特币的主要软件实现。 作为承担这项工作的结果,我经常在会议和研讨会上被问到这个问题:你认为比特币未来面临的最大挑战是什么? 而我的回答始终如一:比特币一定要注意避免未来出现灾难性的软件漏洞。

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

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

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

案例分析比特币交易的风险及其成因_为什么比特币交易难以追踪_比特币莱特币量子链等交易

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

人人参与设置验证规则

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

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

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

为什么比特币交易难以追踪_案例分析比特币交易的风险及其成因_比特币莱特币量子链等交易

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

我在比特币现金最受欢迎的软件的新版本中发现了这个分裂链错误,但只是在将近一半的网络升级到它之后。

发现漏洞

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

由于公共代码量大,这些fork项目往往会出现类似的bug,从而修复类似的bug。 然而为什么比特币交易难以追踪,期望一种货币的开发者主动与其他货币的开发者分享他们的改进是不现实的为什么比特币交易难以追踪,因为单独跟上一个项目已经足够困难了。 出于这个原因,我养成了每隔几个月对这些项目进行一些调整以寻找可能与比特币核心钱包相关的错误修复的习惯。

案例分析比特币交易的风险及其成因_为什么比特币交易难以追踪_比特币莱特币量子链等交易

在今年早些时候查看比特币 ABC 变更日志时,我注意到交易验证的一个关键部分已经重构。 这些变化立即引起了我的注意,因为它们似乎是不必要的。 对这些变化感到好奇,我看了看公众对这些变化的评论。 除了“封装”之外,没有其他理由解释它。 改版只有两个审稿人,审了一个礼拜就录用了代码。

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

在看到很少的评论和很多更改后,我认为很有可能出现了错误,所以我去检查了一下。 不到 10 分钟就找到了 SIGHASH_BUG。

匿名披露

我在上面提到我的披露是匿名的。 我想解释一下为什么,因为匿名在这个过程中起着重要的作用。

案例分析比特币交易的风险及其成因_为什么比特币交易难以追踪_比特币莱特币量子链等交易

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

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

在试图弄清楚完全匿名披露是否可能时,我开始怀疑这是否值得付出努力。 毕竟,我没有义务报告任何事情。 但是,如果有人在 Bitcoin Core 钱包中发现同样严重的漏洞,我真的希望那个人以尽可能谨慎和安全的方式将其告知我们。 所以我决定这样做:创建我想阅读的报告,按照我想要的标准编写该报告。

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

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

比特币莱特币量子链等交易_案例分析比特币交易的风险及其成因_为什么比特币交易难以追踪

然而,我又遇到了障碍。 关键开发人员的密钥都没有列在通常可以找到它们的公共 PGP 密钥服务器上,也没有在他们的代码存储库中。 当时,我别无选择,只能通过不同的在线渠道匿名索取密钥,使用 Tor 尽可能地隐藏我的身份。

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

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

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

4 月 27 日,经过约 48 小时的等待,Bitcoin ABC 发出了 pull request,秘密解决了这个问题。 显然他们收到了我的信息。 成功!

我的想法

我发现的比特币现金漏洞已被成功披露并已被修复,最终对比特币现金没有明显影响。 但是,如果整个加密货币生态系统没有从对此类漏洞的分析中吸取教训,那将是一个遗憾。 作为加密货币开发者,现在有必要退后一步,重新评估我们可以使用的工具,以及我们实施的政策和程序。 我们可能无法消除这些漏洞带来的威胁,但我们可以从中吸取教训,并做好未来应对的准备。 (猎云网)