Bitcoin Core 26.2 发布
签名时,Bitcoin Core 26.2 不再假定 TapMiniscript 是合规的(#29853);getnetworkhashps 遇到无效参数会抛出错误(#28554),setmocktime 设置了强制上限(#29869)。miniupnpc 2.2.8 下也能正常构建。
Bitcoin Core
比特币的参考实现。其网站发布版本公告、安全公告和项目声明。
119 篇文章
签名时,Bitcoin Core 26.2 不再假定 TapMiniscript 是合规的(#29853);getnetworkhashps 遇到无效参数会抛出错误(#28554),setmocktime 设置了强制上限(#29869)。miniupnpc 2.2.8 下也能正常构建。
Bitcoin Core
Bitcoin Core 0.10.1 之前,收到的消息最大可达 32 MiB,攻击者能逼节点为每条连接分配这么多内存,甚至使其崩溃。Bitcointalk 用户 Evil-Knievel 报告此问题;#5843 把上限降到 2 MiB,后来因隔离见证提高到 4 MB。原定 2015 年的披露被推迟,细节直到 2024 年才公开。
Bitcoin Core
借助 IPv6,撑大 Bitcoin Core 没有上限的封禁列表成本很低;此后每条 GETADDR 消息都迫使节点为返回的每个地址(最多 2500 个)扫描一遍列表。内存崩溃和 CPU 消耗都由 #19219 解决,这一高危问题的修复随 0.20.1 和 0.21.0 发布。
Bitcoin Core
version 消息处理中有两个漏洞:有符号整数溢出和 abs64 逻辑错误,攻击者借此拨偏受害节点的调整后时间,使其以时间过于超前为由拒收新区块。攻击者必须是最先连上的 200 个对等节点之一。这一中危缺陷已在 Bitcoin Core 0.21.0 中修复。
Bitcoin Core
打开一条恶意 BIP72 支付链接就能让 Bitcoin-Qt 崩溃:其 r 参数可指向一个巨大的文件,程序会尝试为它分配内存,下载则在后台悄悄进行。#17165 移除 BIP70 支持后,这个中危漏洞随之消失,改动随 0.20.0 发布。
Bitcoin Core
精心构造的孤儿交易本身无效,验证代价却很高,可让节点停摆数小时,因为每接受一笔新交易都会触发一次对孤儿缓存的二次方复杂度搜索。Pieter Wuille 的 #15644 一旦找到匹配就中断这项工作,转去处理新消息。这一高危漏洞的修复随 Bitcoin Core 0.18.0 送达用户。
Bitcoin Core
0.20.0 之前的 Bitcoin Core 版本收到畸形 GETDATA 消息后,net_processing 线程可能空转,CPU 占用 100%,每个攻击节点还会多占 1.5 MB 内存。其他对等节点仍能得到服务,因此只算低危。John Newbery 发现漏洞并在 #18808 中修复。
Bitcoin Core
从 Bitcoin Core 0.12.0 到 0.15.0,直接建在创世区块上、难度只需 1 的区块头可绕过检查点逻辑,垃圾消息发送者得以让 mapBlockIndex 无限增长,甚至让节点内存耗尽而崩溃。Cory Fields 于 2017 年报告这一中危漏洞,#11028 将其修复。
Bitcoin Core
一条塞满 5 万个区块项的 INV 能让节点排队 5 万条各约 1 kB 的 getheaders 响应,对方若拒不读取,这 50 MB 的发送缓冲区就一直满着。John Newbery 的 #18962 改为每条 INV 只发一条 GETHEADERS,当时以节省带宽为名提交,随 0.20.0 发布。
Bitcoin Core
攻击者先扣住 GETDATA 回复,再用大量虚假公告把某笔交易从容量 5 万条的 g_already_asked_for 映射中挤出去,接着一遍遍重新宣告,受害节点便无法向其他节点请求这笔交易。John Newbery 披露了这一中危漏洞,Pieter Wuille 的 #19988 在 Bitcoin Core 0.21.0 中将其修复。
Bitcoin Core
Wladimir J. Van Der Laan 在 miniupnpc 中发现第二处缓冲区溢出,会泄露数据,并可与 CVE-2015-6031 串联实现远程代码执行,他在 Ubuntu 的 miniupnpc 1.6-precise 上做了演示。他的利用代码不能直接移植到 Bitcoin Core,0.12 版于 2016 年 2 月带来修复。
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
Bitcoin Core 23.2 的重点是三项 P2P 改动:peers.dat 不再损坏(#26909),不会过早清除其他对等节点的下载状态(#27608),inv-to-send 队列提速(#27610)。其余属构建和 CI 工作,比如在 aarch64 上用 clang-16 编译 bdb。
Bitcoin Core