Cryptonews

比特币漏洞允许矿工在其他人的节点上运行代码

Source
CryptoNewsTrend
Published
比特币漏洞允许矿工在其他人的节点上运行代码

Bitcoin Core 开发人员今天披露了一个错误,该错误允许矿工远程崩溃并在其他人的节点上执行代码。

该漏洞 CVE-2024-52911 影响了 Bitcoin Core 0.14.1 至 28.4。开发人员 Cory Fields 通过 Pull Request (PR) 31112 负责任地披露并帮助修复了高严重性错误。

如果矿工想要利用这个黑暗技巧,他们可以在全球各地的各种节点上执行软件代码。

幸运的是,该错误仍然不为人所知,并且由于其极其昂贵的攻击媒介而可能未被利用。

具体来说,这次攻击要求矿工将耗电的算力引导到挖掘特殊类型的区块上。由于机会成本有保证,这些无效区块无法获得实际的 coinbase 奖励来弥补矿工的电费。

尽管如此,攻击机制仍然很容易理解,尽管实施起来成本很高。

我们发布比特币核心安全公告已经有大约两年了,而且(据我所知)我们刚刚披露了有史以来第一个内存安全问题:验证引擎中的释放后使用问题。感谢 DCI 的 Cory Fields 的发现和报告。

— Niklas Gögge (@dergoegge) 2026 年 5 月 5 日

生成具有足够工作量证明的特制区块的矿工可能会导致受害节点崩溃和/或利用崩溃来接管其内存以进行远程代码执行。

比特币核心承认远程代码执行是可能的,尽管它没有引用发生这种情况的具体例子。它不仅强调了其成本和年限,还强调了区块数据的限制,这使得矿工在历史上不太可能参与有意义的操纵事件。

旧的比特币节点仍面临漏洞风险

Bitcoin Core 的公告将该错误描述为脚本解释器崩溃。在块验证期间,Bitcoin Core 软件预先计算并缓存交易输入数据,然后将脚本验证工作分派到使用计算机内存的后台线程。

如果遭受 CVE-2024-52911 攻击,在数据已被另一个进程从内存中释放后,节点可以继续从其缓存内存中读取数据。

由于此攻击是释放后使用内存错误,因此在此异常内存状态期间可以执行远程代码。

特别是,当节点的后台脚本线程在被脚本验证 CScriptCheck 销毁后读取缓存的预先计算的交易数据时,可能会发生远程代码执行。

由于升级比特币全节点是自愿的,并且软件更新不是自动的,因此网络中相当一部分人推迟了升级到版本 29 (v29) 或更高版本。

具体来说,根据一项流行的估计,多达 43% 的比特币节点仍在运行基于 v29 之前代码的易受攻击的全节点软件。

Bitcoin Core 因漏洞导致 v30 版本下架,该漏洞可能会破坏中本聪时代的钱包

2024 年负责任的披露

早在 2024 年 11 月,Cory Fields 就发现并私下报告了该错误。

检测四天后,Pieter Wuille 推出了修复提案 PR 31112,标题为“改进并行脚本验证错误调试日志记录”。

该建议故意读起来像一个普通的、维护式的管道修复。它没有敲响警钟,而是修复了比特币核心的检查队列返回处理和脚本验证。

很快,Fields 和 Wuille 的 PR 就在 2024 年 12 月之前合并到生产中达成了技术共识。Bitcoin Core 29.0 于 2025 年 4 月发布了修复程序,最终的易受攻击的版本 28.x 于 2026 年 4 月 19 日终止。

现在节点运营商已经有几个月的时间进行升级,并且为了遵守近年来公开披露旧的、以前秘密的错误修复的政策,Bitcoin Core 今天终于在其网站上宣布了该错误。

比特币核心开发人员 Niklas Gögge 正确地指出,这是比特币核心中“有史以来第一个内存安全问题”错误。他感谢菲尔兹负责任的披露。

比特币的共识规则并未因错误修复而改变。该错误存在于节点软件及其对计算机内存检查的使用中,当前的比特币核心版本 v29 及更高版本中已修复该错误。

比特币漏洞允许矿工在其他人的节点上运行代码