Coldcard 黑客事件证明,声誉并不是安全模型
要点速览
- •攻击者利用 Coldcard 固件缺陷,从 709 个以上地址中窃取了近 1.14 亿美元的比特币;该缺陷生成的钱包种子随机性不足,首次清扫在 25 分钟内清空了大约 500 个钱包。
- •有缺陷的种子生成代码出现在 2021 年 3 月的一次提交中——同一次提交还移除了最后一段 GPL 许可代码——并在公开视野中存在了五年多却无人发现。
- •Coldcard 在 2020 年底从 GPL 许可证转向 Commons Clause 许可证,原因是竞争对手基于其代码推出了产品,而 Commons Clause 的 FAQ 明确表示,结果软件不再是开源软件。
- •此前报告 Coldcard 缺陷的 Shift Crypto、Nunchuk 和 WalletScrutiny 研究人员,遭到了 Coinkite 首席执行官 Rodolfo Novak 的公开嘲讽、专业性质疑和诉讼威胁;作者认为,这种环境抑制了独立审查。
- •作者警告,更新固件无法修复在脆弱版本上生成的种子,而这次漏洞利用已经引发了比特币自托管领域更广泛的信心危机。

Coldcard 黑客事件证明,声誉并不是安全模型
Foundation 首席执行官 Zach Herbert 写道:一个建立在“验证”之上的社区,花了五年时间把判断外包给一个人。
攻击者如今已从 709 个以上地址 中盗走近 1.14 亿美元的比特币,利用的是 Coldcard 固件中的一个缺陷——该缺陷生成的钱包种子只具备其承诺随机性的一小部分。首次清扫在 25 分钟内清空了大约 500 个钱包。该漏洞于 2021 年 3 月进入代码库,并在公开的开源视野中存在了五年多,这提醒人们:代码可见,并不等于代码已被审阅。
很多人都在解释发生了什么。更难的问题是:为什么没有人发现它——而答案牵涉到的远不止一行代码。
漏洞在公开环境中存在了五年
Coldcard 的源代码一直可供检查。“不要信任,去验证”只有在具备能力的人真的去看时才有效,而在五年时间里,实际上几乎没人这么做。
漏洞引入前后的时间线值得注意。2020 年,Coldcard 的固件采用的是 GPL 开源许可证。某个竞争对手在两天后宣布推出基于该 GPL 代码构建的设备之后,Coinkite 首席执行官 Rodolfo Novak(即 NVK)在公开场合说过(在一条已删除的推文中),他后悔选择了 GPL。那年 11 月,Coldcard 改用带有 Commons Clause 的新许可证,而其 FAQ 明确指出,由此产生的软件不再是开源软件。
随后进行了大范围重写,而 2021 年 3 月那次移除最后一段 GPL 代码的提交,与破坏种子生成的提交是同一次。没有人能够衡量许可压力在多大程度上影响了这次重写的范围或速度,而且这次重构也确实追求了合理的技术目标。可被证实的事实范围更窄,但仍然令人警醒:一项旨在限制竞争对手的许可变更,先于对久经检验的密码学代码进行了仓促替换,而替换后的代码正包含了如今正在掏空钱包的缺陷。自由和开源软件原则之所以存在,正是为了防止安全依赖于任何一家公司的选择。这些原则不应因某个人的声望而例外。
Zach Herbert 是 Foundation 的联合创始人兼首席执行官。
研究人员学会了不要去看
更深层的失败发生在那些真正去看的人身上。2020 年 8 月,来自 Shift Crypto 和 Nunchuk 的研究人员披露了 Coldcard 的一个多重签名验证漏洞。Coinkite 承认了该漏洞并发布了修复方案,而 NVK 在 Citadel Dispatch 播客 上同时把这次披露称为“PR terrorism”,并质疑一名没有 CVE 的研究人员是否算专业人士。2023 年,当 WalletScrutiny 项目报告在复现较旧版本的 Coldcard 构建时遇到问题后,回应将该项目描述为无能或恶意,并暗示采取法律行动(后续帖文)。独立后续调查后来发现,较旧版本确实存在真实的复现问题,并得出结论:没有人出于恶意行事。
对研究人员的每一次公开攻击,都会改变下一位研究者的权衡。独立审查耗时、困难,而且通常没有报酬。一个研究人员在“花数月时间做这项工作”和“遭到嘲讽、拉黑名单以及法律威胁”之间做权衡时,往往会把时间用在别处。没有人能够证明这种文化直接导致了熵漏洞未被发现。可以明确说的是,安全依赖于人们愿意去看,而 Coldcard 周围的环境惩罚了“去看”这件事。
声誉成了证据
一个以“不要信任,去验证”为创始口号的社区,怎么会走到这一步?心理学对此有专门的名称。虚幻真相效应会让重复出现的说法即使都源自同一信息源,也显得像是被独立证实。光环效应则把地位、自信和热门产品转化为一种被默认的技术权威。年复一年,同样的说法在同样的播客和信息流中传播:批评者是托儿,研究人员是恐怖分子,竞争对手是复制品。重复承担了本应由证据完成的工作,而自信则取代了证明。
其结果最适合被描述为认识论俘获:一个社区逐渐把判断外包给受信任的权威,直到权威本身成了证据。BTC Sessions 主持人 Ben Perrin 在最近的一场直播中极为坦率地描述了这一机制,承认自己对这种行为睁一只眼闭一只眼,是因为他认为这种傲慢是与更强的创造和安全能力一起打包出现的。业内很多人也做了同样的判断。如今在自托管领域蔓延的信心危机,正是这笔账开始结算的时候,因为用户和建设者都必须区分长期品牌忠诚与真正的验证。
验证所有人
行业在此次攻击后的首要任务是用户:传播迁移指引,并明确说明:更新固件无法修复在脆弱版本上生成的种子。之后,行业还有幕后工作要做。旧的推荐页面、节目笔记和产品指南记录了多年未经核实而被反复传播的说法,这些内容都应附上原始来源进行更正。那些遭受攻击的建设者和研究人员,应该得到说明其工作的发言机会。比特币媒体需要重新变得具有对抗性,对朋友、赞助商和广告商采取与对陌生人相同的审视标准。
比特币的设计前提是专家和机构最终都会失败,因此它的答案是通过验证让信任变得不必要。构建出体现这一原则工具的社区,却把自己最响亮的声音排除在外。修复之道就是重新执行最初的指令,而且这一次不偏袒任何人。不要信任供应商。不要信任供应商的批评者。去验证。
注:本专栏所表达的观点仅代表作者本人,不一定反映 CoinDesk, Inc. 或其所有者及关联方的立场。