🤖
🤖
核心导读
Coldcard固件漏洞致超700地址近1.14亿美元比特币被盗,源于种子随机性缺陷。漏洞在公开代码中潜伏五年无人发现,与Coinkite为限制竞争者改许可证、仓促重写加密代码密切相关。更深失败在社区文化:创始人公开辱骂研究者,独立审查受挫。文章批评“不要信任,要验证”被光环效应和重复断言侵蚀,呼吁行业回归本源,以用户为先。
攻击者利用Coldcard固件中的一个漏洞,已从超过709个地址中盗走近1.14亿美元的比特币。该漏洞生成的钱包种子随机性远低于其承诺水平。首次批量盗取在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恐怖主义”,并质疑没有CVE的研究人员是否算专业人士。2023年,当WalletScrutiny项目报告无法复现旧版Coldcard构建时,回应方称该项目无能或恶意,并扬言诉讼。后续的独立调查发现旧版本确实存在复现问题,并得出结论称没有人出于恶意。
每一次对研究人员的公开攻击,都会改变下一位研究者的考量。独立审查缓慢、困难,而且通常没有报酬。一位研究人员在权衡数月的工作与可能面临的嘲笑、拉黑和法律威胁后,往往会把时间花在别处。没有人能证明这种文化导致了熵漏洞被忽视。但可以肯定的是,安全依赖于人们愿意去检查,而Coldcard周围的环境却在惩罚检查行为。
一个以“不要信任,要验证”为创始口号的社区,怎么会走到这一步?心理学对此有专门的术语。虚幻真相效应使得重复的说法即使源自单一信息源,也让人感觉像是得到了独立证实。光环效应则将地位、自信和热门产品转化为人们臆断的技术权威。年复一年,同样的论断通过同样的播客和信息流传播:批评者是托,研究人员是恐怖分子,竞争对手是克隆品。重复做了证据本该做的工作,自信成了证明的替代品。
这种结果最好描述为“认识论俘获”:一个群体逐渐将自己的判断外包给某个可信权威,直到该权威本身成为证据。BTC Sessions的主持人Ben Perrin在最近一次直播中以异乎寻常的诚实描述了这一机制,承认他之所以对此类行为放行,是因为他以为那种傲慢伴随着更卓越的创造和安全能力。行业中的许多人做了同样的计算。如今在自我托管领域蔓延的信任危机,正是这份账单到期之时。
在漏洞利用事件发生后,整个行业的第一优先级应该是用户:传播迁移指南,并明确说明更新固件无法修复在易受攻击版本上生成的种子。随后,行业还有幕后工作要做。旧的推荐页面、节目笔记和产品指南中,多年积累的许多说法都是被重复而非被核实的,它们应当得到附带原始来源的更正。那些曾受到攻击的开发者与研究人员,理应获得解释其工作的发声机会。比特币媒体需要重新变得具有对抗性,对朋友、赞助商和广告商,也要像对待陌生人一样进行审视。
比特币在设计之初就假设专家和机构最终会失败,其答案是通过验证让信任变得不必要。那些构建了体现这一原则的工具的社区,却将自己最响亮的声音排除在原则之外。修复之道就是创始时的训诫,这一次要一视同仁地应用。不要信任供应商。不要信任供应商的批评者。要验证。
分享这篇文章: