btcd 未正确重新实现比特币核心的“FindAndDelete()”功能(CVE-2024-38365)
CVE编号
CVE-2024-38365利用情况
暂无补丁情况
N/A披露时间
2024-10-12漏洞描述
btcd是一个用Go语言编写的比特币全节点替代实现。btcd比特币客户端(版本0.10至0.24)未能正确重新实现比特币核心(Bitcoin Core)的“FindAndDelete()”功能。这一逻辑是共识关键的:与其他比特币客户端的行为差异可能导致btcd客户端接受一个无效的比特币区块(或拒绝一个有效的区块)。这种共识失败可能被利用来导致链分裂(接受一个无效的比特币区块)或被用来拒绝服务(DoS)btcd节点(拒绝一个有效的比特币区块)。攻击者可以创建一个标准交易,其中FindAndDelete没有返回匹配项,但removeOpCodeByData确实存在,导致btcd获得不同的签名哈希,从而导致链分裂。重要的是,任何比特币用户都可以远程利用此漏洞,并且不需要任何哈希算力。这是因为通过“标准”比特币交易就可以触发不同的行为,即交易在包含到比特币区块之前,会通过P2P网络进行中继。removeOpcodeByData(script []byte,dataToRemove []byte)会从script中删除包含dataToRemove的任何数据推送。然而,FindAndDelete只删除精确匹配项。例如,对于script = "<data> <data||foo>"和dataToRemove = "data",btcd将删除两个数据推送,但比特币核心的FindAndDelete只删除第一个<data>推送。此问题已在btcd版本v0.24.2中得到修复。建议用户进行升级。对于此问题,尚无已知的解决方案。解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。- 攻击路径 N/A
- 攻击复杂度 N/A
- 权限要求 N/A
- 影响范围 N/A
- 用户交互 N/A
- 可用性 N/A
- 保密性 N/A
- 完整性 N/A
CWE-ID | 漏洞类型 |
CWE-670 | 控制流实现总是不正确 |
Exp相关链接

版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论