主页 > 华为安装imtoken > 比特币最严重的漏洞是如何被发现的?

比特币最严重的漏洞是如何被发现的?

华为安装imtoken 2023-03-21 06:14:31

Bitcoin Unlimited(比特币现金的主要客户之一)的一位匿名开发人员透露了他是如何发现比特币在过去八年中最严重的漏洞的。

作为他发现该漏洞的证据,Awemany 为哈希(如图)加上了时间戳,并进一步与 PGP 密钥签署了一项协议比特币是从哪里来的,以负责任地披露 Bitcoin Core 和其他项目。 我们在下面详细引用相关部分:“我正在努力在 Bitcoin Unlimited 客户端上实施新的 CHECKDATASIG/-VERIFY 操作码,该客户端将于 11 月推出比特币(现金)。潜在的简洁用例,以及让它发挥作用的动机。

大约中午(9 月 17 日,星期一),我注意到 ABC 的签名计算方式与 Bitcoin Unlimited (BU) 数字的计算方式存在很大差异。 早些时候,我与 BU 团队达成一致,我将从 ABC 移植大部分 CDS/-V 文件,但我感到不知所措。 我的想法是:好的,这行得通,但是需要更多的分析和更多的访问者来发表评论。 而且需要更长的时间。 叹。 与此同时,我在 ABC 代码库中偶然发现了这个注释:

// 检查重复输入——注意这个检查很慢,所以我们在检查中跳过它。

我的第一反应是,呃,这是怎么回事? 还在谈论那个评论? 然后我查看了ABC中CheckRegularTransacTIon的用法,这是CheckTransacTIon的一个变体,在Core中被重命名了(但当时我不知道。我翻阅代码试图理解逻辑。

我注意到块验证跳过了这个测试,因为它被假定发生在 mempool 条目上。 我的下一个想法是有点沮丧和'啊,我真的希望 ABC 的人已经考虑了内存池和块传输之间的区别,那些是进入系统的独特方式。 这里可能有问题! “然后我想出了一个方法来测试这个。我修补了一个 ABC 节点,即使请求并连接到一个不匹配的和修补的节点,也不在 -regtest 模式下中继交易,并创建了一个具有重复输入的交易(上面的测试跳过了这个交易)。

哇! 断言(),中止...

我打开了发给 deadalnix(BitcoinABC 维护者)的电子邮件并开始思考:‘好吧,实际上,这些东西是从哪里来的,他们什么时候将它引入代码中的,我们可能会很幸运,但这不是已经发布了吗? '

然后我注意到这些东西来自核心。 我已经写了一份披露报告并重新检查了核心也容易受到攻击。

再次,哇! 断言(),中止...

作为负责任的公民,我随后写了一封加密的公开电子邮件给 Wladimir(比特币核心维护者)、sickpig(Bitcoin Unlimited 开发者)和其他几个人,附上 ABC 和核心补丁的变体,以使用这个问题来暴露我的信息。 “

根据上面的说法,这个错误只要看代码就能发现,而且BU开发者从看的时候好像是2018年9月17日下午14:47给其他开发者发了邮件。

因此,事件的顺序似乎表明取消双重支出检查是一件非常重要的事情,而且几乎是立竿见影的。

即使作为一个非程序员,你也可能有一些想法,这就提出了一个问题:5 个比特币核心开发人员在批准这个错误时到底在想什么?

那是因为这个漏洞并不微妙或复杂,但它非常简单,根据上面的描述,一眼就能看出取消双花检查是一个很大的问题。

这就提出了一个问题,即这个错误究竟是如何打印出比特币的,这些比特币本可以由矿工凭空打印出来,但却最终变成了代码。

据我们所知,这也引发了 Blockstream 可能存在利益冲突的问题,即地雷问题。 犯下这个明显错误的开发人员当时正在为 Blockstream 工作,批准它的两名开发人员也是如此。

关于 Bitcoin Core 的代码是否经过充分审查,还需要进一步提问。 这是因为,如果非 Bitcoin Core 开发人员瞥见了漏洞但仍然能够进入,那么很明显审核过程失败了,而且非常糟糕。

值得庆幸的是现在有一些竞争,Bitcoin Core 的 Cory Fields 之前在 ABC 上发现了一个错误,这是一个严重的问题,但比那严重得多,因为它没有考虑到“有效”的双重支付。

在争论最激烈的时候,一些比特币公司态度不厚道,行为非常不负责任,导致比特币的无限使用出现了漏洞。

Awemany 没有回报他的支持,而是做出了非常负责任的披露,这在很大程度上导致了比特币生态系统的快速升级。

矿工和企业现在可能已经升级,但在撰写本文时,仍有数千个节点容易受到通胀风险的影响。

在这种情况下,会向节点发送警报,要求它们快速升级。 这样的警报系统已被删除,即使它只是说你应该在节点屏幕的角落升级,比如你发现了一个错误,请在一些链接中阅读更多内容。

警报本身不会以任何方式干扰代码节点的操作,如果发出错误警报,它可能会被其他开发人员覆盖。 所有警报都是对节点操作员的通知比特币是从哪里来的,然后他们可以做出自己的决定。

现在,节点运营商必须检查加密媒体或加密推特,如果他们在发稿时正在休假,他们可能会认为他们的错误节点没有任何问题。

感谢 Awemany 的披露,对于那些已经升级的人来说,它是一个更安全的节点。 为此,他在撰写本文时收到了价值 200 美元的 0.03BTC 捐款。 比特币现金付款人慷慨地向他捐赠了近 36 个 BCH,价值 17,000 美元。

然而,这些开发人员不应该依赖他人的善意,因为考虑到风险有多大,应该有漏洞赏金。 然而,无论是 Bitcoin Core 还是 Bitcoin Cash 客户端似乎都没有这样的漏洞赏金,这可能意味着开发人员没有太多动力去揭露这些漏洞,所以也许这就是为什么比特币在代码中保留了两年的原因.