比特币协议的流行替代实施方案 btcd 中的一个关键漏洞可能会让恶意行为者以最小的代价创建比特币区块链的硬分叉。
该漏洞被追踪为 CVE-2024-38365,CVSS 得分为 7.4,源于 btcd 验证传统比特币交易签名的方式中的一个错误。该缺陷于 2014 年引入,偏离了原始比特币代码库中定义的共识规则,可能导致创建的有效交易被易受攻击的 btcd 节点拒绝。
问题出在 btcd 对 removeOpcodeByData 函数的实现上,该函数负责在签名验证过程中重建签名信息。与比特币核心中的FindAndDelete函数不同,removeOpcodeByData只从脚本中删除与签名完全匹配的数据,而removeOpcodeByData则删除任何包含签名的数据推送,甚至包括额外的填充数据。
这种差异允许攻击者制作特殊脚本来利用这种行为。通过在数据推送中嵌入签名和额外数据,他们可以创建在比特币核心节点看来有效的交易,但却被易受攻击的 btcd 节点拒绝。
这个漏洞的影响非常大,因为攻击者可以利用它迫使易受攻击的 Btcd 节点进入分叉链,从而导致网络不稳定和交易处理问题。
“攻击者可以创建一个标准交易,其中 FindAndDelete 不会返回匹配结果,但 removeOpCodeByData 却会返回匹配结果,从而使 btcd 获得不同的 sighash,导致链分裂。重要的是,任何比特币用户都可以远程利用这个漏洞,而且不需要任何哈希能力。
CVE-2024-38365 漏洞由研究人员 Niklas 和 Antoine 发现并报告。btcd 开发团队已在 0.24.2 版本中解决了该问题。我们强烈建议所有用户将他们的 btcd 节点更新到最新版本,以防止潜在的漏洞利用。