Bitcoin Core 27.2 发布
Bitcoin Core 27.2 消除了自连接检测中的竞态条件(#30394),FillPSBT 调用错误返回 complete=true 的问题也得到纠正(#30357)。加载区块线程和调度器的关闭顺序有所调整(#30435),代码可用 miniupnpc 2.2.8 和 GCC 15 构建。
Bitcoin Core
比特币软件开发者发布的版本、安全公告与协议工作。
121 篇文章
Bitcoin Core 27.2 消除了自连接检测中的竞态条件(#30394),FillPSBT 调用错误返回 complete=true 的问题也得到纠正(#30357)。加载区块线程和调度器的关闭顺序有所调整(#30435),代码可用 miniupnpc 2.2.8 和 GCC 15 构建。
Bitcoin Core
v25.0 之前的 Bitcoin Core 节点可遭远程攻击而崩溃:针对同一区块重复发送 blocktxn 消息,会触发 FillBlock 只能运行一次的断言。攻击无需短 ID 碰撞,只要包含不在该区块默克尔根内的交易,就能走到同一路径。高危漏洞 CVE-2024-35202 由 Niklas Gögge 发现并修复。
Bitcoin Core
Testnet4(BIP94)登陆 Bitcoin Core 28.0,同时带来面向一父一子交易对的有限包转发、BIP 431 下的标准 TRUC 交易和新的 Pay To Anchor 输出类型。-mempoolfullrbf 默认值改为 1,27.0 已弃用的 libbitcoinconsensus 正式移除。
Bitcoin Core
攻击者在局域网内冒充 UPnP 设备,不断向 Bitcoin Core 节点发送臃肿的 M-SEARCH 响应,直到内存耗尽。只有用 -miniupnp 启动的节点才受影响,该库默认关闭。这一低危漏洞已在 v22.0 中修复。
Bitcoin Core
签名时,Bitcoin Core 26.2 不再假定 TapMiniscript 是合规的(#29853);getnetworkhashps 遇到无效参数会抛出错误(#28554),setmocktime 设置了强制上限(#29869)。miniupnpc 2.2.8 下也能正常构建。
Bitcoin Core
攻击者先扣住 GETDATA 回复,再用大量虚假公告把某笔交易从容量 5 万条的 g_already_asked_for 映射中挤出去,接着一遍遍重新宣告,受害节点便无法向其他节点请求这笔交易。John Newbery 披露了这一中危漏洞,Pieter Wuille 的 #19988 在 Bitcoin Core 0.21.0 中将其修复。
Bitcoin Core
精心构造的孤儿交易本身无效,验证代价却很高,可让节点停摆数小时,因为每接受一笔新交易都会触发一次对孤儿缓存的二次方复杂度搜索。Pieter Wuille 的 #15644 一旦找到匹配就中断这项工作,转去处理新消息。这一高危漏洞的修复随 Bitcoin Core 0.18.0 送达用户。
Bitcoin Core
打开一条恶意 BIP72 支付链接就能让 Bitcoin-Qt 崩溃:其 r 参数可指向一个巨大的文件,程序会尝试为它分配内存,下载则在后台悄悄进行。#17165 移除 BIP70 支持后,这个中危漏洞随之消失,改动随 0.20.0 发布。
Bitcoin Core
从 Bitcoin Core 0.12.0 到 0.15.0,直接建在创世区块上、难度只需 1 的区块头可绕过检查点逻辑,垃圾消息发送者得以让 mapBlockIndex 无限增长,甚至让节点内存耗尽而崩溃。Cory Fields 于 2017 年报告这一中危漏洞,#11028 将其修复。
Bitcoin Core
Bitcoin Core 0.10.1 之前,收到的消息最大可达 32 MiB,攻击者能逼节点为每条连接分配这么多内存,甚至使其崩溃。Bitcointalk 用户 Evil-Knievel 报告此问题;#5843 把上限降到 2 MiB,后来因隔离见证提高到 4 MB。原定 2015 年的披露被推迟,细节直到 2024 年才公开。
Bitcoin Core
Wladimir J. Van Der Laan 在 miniupnpc 中发现第二处缓冲区溢出,会泄露数据,并可与 CVE-2015-6031 串联实现远程代码执行,他在 Ubuntu 的 miniupnpc 1.6-precise 上做了演示。他的利用代码不能直接移植到 Bitcoin Core,0.12 版于 2016 年 2 月带来修复。
Bitcoin Core
借助 IPv6,撑大 Bitcoin Core 没有上限的封禁列表成本很低;此后每条 GETADDR 消息都迫使节点为返回的每个地址(最多 2500 个)扫描一遍列表。内存崩溃和 CPU 消耗都由 #19219 解决,这一高危问题的修复随 0.20.1 和 0.21.0 发布。
Bitcoin Core
Bitcoin Core 27.1 全是漏洞修复:GUI 中未签名交易的手续费追加恢复正常,代理 IP 栏不再接受端口,GetAddedNodeInfo() 能识别 addnode 添加的 CJDNS 对等节点(#30085)。签名时对 TapMiniscript 的处理也有调整(#29853)。
Bitcoin Core
从 Bitcoin Core 27.0 起,BIP324 v2 传输默认开启,新的 CoinGrinder 算法在费率达到 30 sat/vB 及以上时寻找最轻的输入组合。共识代码不再使用网络调整时间,改用系统时间,运营者的时钟准确性因此更加重要。libbitcoinconsensus 已弃用,计划在 v28 移除。
Bitcoin Core
运行 Bitcoin Core 25.2 的节点不再处理篡改区块(#29412)。更新还修复了 getrawtransaction 段错误(#29003)、WalletBatch::EraseRecords 释放后使用(#29176),以及选择“Mask values”时 GUI 崩溃的问题。
Bitcoin Core
Bitcoin Core 26.1 的 I2P 会话同时使用 ECIES-X25519 和 ElGamal 加密(#29200),节点加载交易池时也会记录进度。修复方面,节点拒绝处理篡改区块(#29412),启用 SFFO 时钱包跳过 BnB 币选择(#28994)。
Bitcoin Core
实验性的 BIP324 v2 传输随 Bitcoin Core 26.0 亮相,默认关闭,用 -v2transport 开启。新增的 loadtxoutset RPC 可加载 assumeutxo 快照,几分钟内就能用上节点,原有 chainstate 在后台继续验证;submitpackage 则把原始交易作为一个包提交到交易池。
Bitcoin Core
Bitcoin Core 24.2 不再给出过期的手续费估算(#27622),RPC 对无效 bech32 地址的处理也得到纠正(#27727)。其他改动大多涉及构建系统和 CI,包括修复 Xcode 15 链接器下 macOS Qt 包的构建(#28543)。
Bitcoin Core
并行下载致密区块进入 Bitcoin Core 25.1(#27626)。其他修复包括 REST 接口访问 /deploymentinfo 时崩溃(#27853)、远程客户端断开后服务器关闭(#28551),以及钱包迁移如今会拒绝无效脚本(#28125)。
Bitcoin Core
有 BIP158 致密区块过滤器可用时(-blockfilterindex=1),Bitcoin Core 25.0 的描述符钱包重新扫描速度更快,新增的 scanblocks RPC 可检索这些过滤器。转发策略现在接受非见证部分不少于 65 字节的交易。-blocksonly 模式下,交易池内存上限从 300MB 降到 5MB。
Bitcoin Core