Coldcard漏洞根源:2021建置错误让硬件乱数失效五年


硬件钱包Coldcard 的种子乱数漏洞,技术根源在8 月初被公开。支付公司Block(由Twitter 创办人Jack Dorsey 创立)的工程团队,在收到用户资金遭窃的通报后,于7 月30 日与其他研究者各自定位到问题所在:一段2021 年3 月写入的程式码,让装置的硬件乱数产生器形同被关闭,改用可预测的软件替代方案,而这个缺陷直到近期才被发现。链新闻先前已报导这起乱数漏洞的初步情况与官方软件修复,这篇聚焦已被公开证实的技术成因。

一个#ifndef 的判断之差,硬件乱数被整段跳过

根据Block公布的技术分析,问题出在2021 年3 月把椭圆曲线运算迁移到比特币核心的libsecp256k1 函式库时,一个建置设定被写错。软件在判断硬件乱数是否可用时,检查的是这个开关「有没有被定义」,而不是「是否被设为启用」。由于该开关的值被设为0,也就是关闭,这个判断却仍然通过,于是程式改去呼叫MicroPython 内建的软件乱数fallback。这条路径最早出现在2021 年3 月17 日发布的v4.0.0 软件,五年间未被察觉。

问题在于,这个软件fallback 并不是真正的随机来源。它的种子只由晶片的固定序号、计时器与时钟暂存器推导出来,这些值都可预测、或范围极小。 Block 指出,在Mk2 与Mk3 的v4 软件上,产生的种子几乎可以完全重算;在Mk4、Mk5、Q 等较新型号上,因为多了一次重新植入,理论上最多也只有约2^32 种可能,远低于一组助记词应有的强度。这代表攻击者只要重算或穷举这些有限的可能,就有机会还原出私钥。

官方停止出货,并公布各型号的修复软件

官方Coinkite 已发布安全公告,并采取一连串补救措施:停止出货、销毁受影响的库存,并逐一email 通知已收到装置的客户。公告同时列出各型号的修复软件版本,Mk2/Mk3 需升级到4.2.0 以上,Mk4/Mk5 需5.6.0 以上,Q 需1.5.0Q 以上,并要求用户在更新前不要用这些型号产生新种子。官方也重申,若种子是用「至少50 次独立且私密的掷骰」产生的,就不受这个乱数漏洞影响。

损失规模仍是第三方估计,官方尚未证实

至于实际损失规模,各家链上分析的估计差距很大,从约3,800 万美元到8,900 万美元不等,牵涉数百到逾千个地址。但截至目前,Coinkite 官方并未证实任何一笔用户损失,Block 也表示「尚未做完整的实测来确认可利用性」。此外,有加密社群成员在X 上公开个人遭窃经过,其中自称损失18.25 枚比特币的Jonathan Goodman 引发较多讨论;也有研究者示范,用AI 工具在数分钟内就从开源程式码找出这个漏洞。这些都属于个别说法或示范,官方公告并未把AI 列为攻击途径,实际被盗金额也仍待厘清。

对持有Coldcard 的用户来说,官方的建议相对明确:先确认自己的型号与软件版本,只从官方管道更新到修复版本,再在新软件上重新产生种子,并把资产转移到新的钱包地址。

本文链接地址:https://www.wwsww.cn/qianbao/40371.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。