极端条件下 undo 文件可能溢出
矿工有办法把 Bitcoin Core 的 undo 文件撑过 4 GiB,使其 32 位位置值回绕、数据损坏,一旦随后发生相应的链重组,节点就会关机;Windows 和 32 位系统到 2 GiB 就出问题,无需重组。CVE-2026-117346 属低危,攻击要占用全网大约一个月的区块。32.1、31.2、30.4 和 29.5 修复了 64 位系统,32 位节点和把区块存放在 FAT32 上的节点仍受影响。
Bitcoin Core
比特币的参考实现。其网站发布版本公告、安全公告和项目声明。
119 篇文章
矿工有办法把 Bitcoin Core 的 undo 文件撑过 4 GiB,使其 32 位位置值回绕、数据损坏,一旦随后发生相应的链重组,节点就会关机;Windows 和 32 位系统到 2 GiB 就出问题,无需重组。CVE-2026-117346 属低危,攻击要占用全网大约一个月的区块。32.1、31.2、30.4 和 29.5 修复了 64 位系统,32 位节点和把区块存放在 FAT32 上的节点仍受影响。
Bitcoin Core
poll() 和 select() 监控套接字异常的行为在 Bitcoin Core 29.5 中统一了(#36665),发送暂停的对等节点也开始受超时约束(#36667)。flatfile 位置改用 64 位整数(#36669),节点默认种子提供的地址支持 v2transport,另有一个 DNS 种子被移除。
Bitcoin Core
恶意对等节点只要谎称不支持 BIP 31 的 ping,就能躲过 20 分钟断连机制,再慢慢读取数据,让节点的发送队列每小时膨胀:每个入站节点最多 2MB,每个出站节点最多 5MB。中危漏洞 CVE-2026-117349 由 #36667 修复,见于 Bitcoin Core 32.1、31.2、30.4 和 29.5;-blocksonly 节点的风险要小得多。
Bitcoin Core
已连接的对等节点只需发送 TCP 紧急数据,就能让 Windows、macOS 和 BSD 上的节点崩溃:这些数据绕过 select() 后端中已暂停的读取,在内存里无限堆积(CVE-2026-117350)。Linux 节点用的是 poll(),不受影响。这一中危漏洞由 Project Loupe 的 LLM 扫描发现,Bitcoin Core 32.1、31.2、30.4 和 29.5 已修复。
Bitcoin Core
遵循 BIP 323,Bitcoin Core 30.4 不再把 BIP 9 的第 5 至 28 位视作软分叉信号,区块设置这些位也不会再触发未知部署告警(#34779)。网络方面,发送暂停的对等节点开始受超时约束(#36667);flatfile 位置改用 64 位整数(#36669)。
Bitcoin Core
私密广播有了上限。Bitcoin Core 31.2 中,尚未从网络收到回传的交易队列最多 1 万条,写满后拒绝新提交,调用方需用 abortprivatebroadcast 清理(#35406)。按照 BIP 323,版本位 5 至 28 不再算作软分叉信号。
Bitcoin Core
Bitcoin Core 32.1 堵上了私密广播可能暴露发送方 IP 的漏洞:v2 连接失败后改用 v1 重试时,会绕过 Tor 直接连接。-maxconnections 默认值从 125 提高到 200;出站交易转发限速由按节点改为全局积压队列。
Bitcoin Core
运行时磁盘读写居高不下,根源是 chainstate 数据库反复重写自身大片内容,Bitcoin Core 29.4 修复了这个问题:关闭 LevelDB 的 seek compaction,并定期压缩 chainstate(#35465)。
Bitcoin Core
chainstate 频繁写盘问题由 Bitcoin Core 30.3 解决。同时修复的还有 feebumper 在合并追加手续费不可用时崩溃(#34870),以及币选择中把金额算成布尔值的错误(#34888)。PSBT 方面,解析 pubnonce 和部分签名时现在会校验 MuSig2 公钥(#34219)。
Bitcoin Core
Bitcoin Core 31.1 堵上了 -privatebroadcast 的 IP 地址泄露:此前部分连接走了明网,没有经过已启用的隐私网络。造成磁盘活动过高的 chainstate 反复重写也到此为止,MuSig2 密钥聚合遇到空公钥列表时会直接拒绝(#35316)。
Bitcoin Core
v2 握手失败可能让 Bitcoin Core 31.0 用户的 IP 地址曝光:启用 -privatebroadcast 时,改用 v1 重试会跳过 Tor 代理,直连对等节点。最可能的触发方式是恶意节点故意中断握手。在 31.1 发布前,用户可以关闭该功能、设置 -v2transport=0,或让 IPv4/IPv6 出站流量全部走 Tor。
Bitcoin Core
0.14.0 之后、29.0 之前的 Bitcoin Core 版本在验证特制的无效区块时可能读取已释放的内存,导致节点崩溃。CVE-2024-52911 属高危,但攻击者必须在链尖投入有效工作量证明,发生远程代码执行的可能性也被认为不大。漏洞由 Cory Fields 报告,29.0 已包含修复。
Bitcoin Core
族群交易池(cluster mempool)在 Bitcoin Core 31.0 中取代旧设计:祖先和后代限制改为每个族群不超过 64 笔交易、101 kB,CPFP carveout 同时取消。内存不低于 4096 MiB 的机器,-dbcache 默认升至 1024 MiB;新增 -privatebroadcast 选项,让 sendrawtransaction 的广播只走 Tor 或 I2P。
Bitcoin Core
Bitcoin Core 28.4 修复了未命名钱包的两处故障:旧版钱包迁移失败(#34156),以及 createfromdump 失败时误删钱包目录(#34215)。chainparams 中还移除了一个 DNS 种子(#33723)。
Bitcoin Core
发送违反共识交易的对等节点,Bitcoin Core 29.3 不再惩罚(#33050)。验证环节为旧版、P2SH 和 segwit v0 脚本增加按输入缓存的 sighash 中间状态(#32473),识别见证剥离也无需重跑 Script 检查(#33105);矿工端 addPackageTxs 的无符号整数溢出已消除(#33475)。
Bitcoin Core
未命名旧版钱包迁移失败的问题随 Bitcoin Core 30.2 解决(#34156),createfromdump 处理这类钱包失败时也不会再删除钱包目录(#34215)。IPC wait 调用期间按 Ctrl-C 不再卡住(#33511)。
Bitcoin Core
极少数情况下,Bitcoin Core 30.0 或 30.1 迁移 wallet.dat 失败时可能删光钱包目录里的所有文件,危及资金。开发者已撤下这两版二进制文件,并要求用户在 30.2 推出前不要通过 GUI 或 RPC 迁移。触发条件是默认的未命名 wallet.dat 迁移或加载失败,其他用户不受影响。
Bitcoin Core
升级到 Bitcoin Core 30.1 后,钱包不再考虑带祖先交易的未确认 TRUC 币(#33528)。IPC 方面,选项不再强制要求 -m 参数(#33229),消息日志开销降低(#33517),正在运行的 waitNext 调用可以取消(#33676)。
Bitcoin Core
特制的非标准交易每笔可拖住 Bitcoin Core 节点数秒,发送者却不会被断开连接,攻击者得以借此延迟区块传播。低危漏洞 CVE-2025-46598 由 Antoine Poinsot 报告,v30.0 压缩了最坏情况下的验证时间,问题得到缓解。
Bitcoin Core
超过 1GB 的区块可能让 32 位 Bitcoin Core 节点的大小检查溢出,写入磁盘时崩溃,但区块必须以致密区块形式传来,受害者还得把 -maxmempool 设到 3GB 以上,交易池里存有 1GB 交易。Pieter Wuille 发现了这个低危漏洞(CVE-2025-46597);29.1 和 30.0 限制了 32 位系统的 -maxmempool,将其关闭。
Bitcoin Core