披露了一个整数溢出漏洞的详细信息,该漏洞可能导致网络分裂,Bitcoin Core 0.21.0 版本于 2021 年 1 月 15 日发布了修复程序。
此问题被认为严重程度为**中等**。
技术细节
网络分裂漏洞是由 version
消息处理代码中的两个独立漏洞引起的。
- 计算新连接对等节点的时间偏移时发生带符号整数溢出。
- abs64 逻辑错误(
abs64(std::numeric_limits<int64_t>::min()) == std::numeric_limits<int64_t>::min()
),导致绕过最大时间调整限制。
这两个漏洞允许攻击者强制受害者的调整时间(系统时间 + 网络时间偏移
)发生偏差,从而导致任何新区块因时间戳过远而被拒绝。需要注意的是,此攻击假设攻击者是连接到受害者的前 200 个对等节点之一,因为仅将这些初始连接中的时间偏移纳入调整时间。
归属
感谢 practicalswift 发现并提供了该漏洞的初始修复程序,以及 Pieter Wuille 提供修复程序以及对存在风险代码的一般清理。
时间线
- 2020-10-10 初始报告发送到 security@bitcoincore.org
- 2020-10-13 修复合并到 Bitcoin Core 中 (https://github.com/bitcoin/bitcoin/pull/20141)
- 2021-01-15 发布 v0.21.0
- 2022-04-25 最后一个易受攻击的 Bitcoin Core 版本 (0.20.x) 结束生命周期
- 2024-07-03 公开披露