要点速览
- 2021 年埋下的一个固件缺陷,让部分 COLDCARD 钱包变得可以被猜出来。生成助记词(Recovery Phrase)时,程序本该调用芯片的硬件随机数发生器,却在不知不觉中走到了软件的备用方案上,导致密钥来自一个远比预期小得多的取值范围。
- 截至 2026 年 8 月 3 日,攻击者已卷走约 1,816 枚比特币,价值约 1.16 亿美元。每一轮新的攻击都会把这个数字往上推,你读到这段话时可能已经更高。
- 没有人被远程入侵,也没有任何一台设备被碰过。攻击者只是在自己的电脑上把那套有缺陷的随机数复现了一遍,批量生成候选助记词,再逐一比对哪些地址里有币。
- 掷骰子救了一批人。在初始化时额外掷了至少 50 次骰子,且过程无人看见、无人记录的用户,或者设置了高强度 BIP-39 密语(Passphrase)的用户,都不在这次漏洞的影响范围内。
- 升级固件并不能修复已经生成的助记词。必须在修复后的固件上重新生成一套新的助记词,再把资产转移过去。这一点是目前最多人搞错的地方。
- SIAMBC 并不销售 COLDCARD。我们在意的是整个行业里的每一个人,而不只是在我们这里下单的客户。这也是我们自 2016 年起持续帮助泰国的加密货币持有者守住资产的原因,这篇文章写给所有拥有硬件钱包的人,无论盒子上印着哪个牌子。
2026 年 7 月 30 日清晨,有人在四十一分钟内把 1,083 枚比特币从一批 COLDCARD 钱包中转走。这些用户没有做错任何事。他们没点过钓鱼链接,没把助记词输进任何网站,设备也好端端地在手上。事情发生的时候,他们大多数还在睡觉。
这正是硬件钱包本应彻底杜绝的一种失效方式,值得好好弄明白,因为多数人从中得出的结论,其实并不是这件事真正的教训。
事情的经过
硬件钱包最核心的一项职责,是生成一个谁都无法预测的密钥,包括厂商自己在内。其余所有设计都建立在这一点之上。PIN 码、安全芯片、用来核对地址的屏幕,全都默认一个前提:底层的那个密钥取自一个大到无从猜起的空间。
而对于 2021 年 3 月至 2026 年 7 月底之间初始化的 COLDCARD 来说,这个空间并不大。Mk2 和 Mk3 大约只有 40 位(bit),也就是一万亿种左右的可能;Mk4、Mk5 和 Q 大约 72 位。而设计目标是 128 位。
这几个数字写在纸面上看着相差不多,实际上完全不是一回事。每多一位,破解所需的工作量就翻一倍。从 40 位到 128 位不是难三倍,而是难上大约 3×10²⁶ 倍。40 位是一台普通电脑跑得完的搜索,128 位则是任何机器都跑不完的搜索。
所以这次攻击根本不需要接触任何一台设备。攻击者在自己的机器上运行同样有缺陷的随机数逻辑,复现出那些设备当初会生成的助记词,推导出对应的比特币地址,再查哪些地址里有钱,然后一次性转走。
盗窃是分批进行的。第一轮发生在 7 月 30 日,转走 1,083 枚比特币;第二轮在 7 月 31 日,约二十五分钟内转走 594 枚;之后还有若干规模较小的批次。截至 2026 年 8 月 3 日,链上分析机构给出的累计数字接近 1,816 枚比特币,约合 1.16 亿美元,涉及 5,200 多个地址。不同媒体在不同日期给出的总额并不一致,在攻击仍在进行的阶段,这属于正常现象。
缺陷本身,以及它为何五年无人发现
2021 年 3 月,Coinkite 把固件迁移到 Bitcoin Core 的加密库上。在这次改动中,生成助记词的调用从一个内部函数换到了另一个。新的调用路径本应指向 STM32 芯片的硬件随机数发生器,实际却没有,而是落到了 MicroPython 内置的软件备用方案上,那是一个主要依据设备状态和时序来播种的伪随机数生成器。
原因小得让人难受。开发者把关闭 MicroPython 自带随机数模块的那个开关设成了 0,以为这样就等于关掉了。但编译期的判断只检查这个开关有没有被定义,并不检查它被设成了什么值。设成 0 依然算已定义。于是那段备用代码照旧被编译了进去,就静静地待在助记词生成函数所调用的那个名字后面。
几天后发布的修复方案把备用对象整个移除,并加入了一项构建检查:只要没有正确链接真正的硬件随机数发生器,构建就会失败。这才是正确的修复思路,它让同一类错误无法再次发生,而不只是把这一处补上。
Coinkite 表示,他们不得不推测有人借助 AI 审阅了历史固件版本,从而找出了这个缺陷。这是厂商的推测而非已证实的事实,目前也没有确认攻击者的身份。不过这一点值得停下来想一想:当审阅五年份的代码变得廉价之后,那些在五年人工审查中幸存下来的代码,就变成了另一种性质的目标。
哪些机型和固件版本受影响
下列版本号请以厂商发布的官方公告为准,而不要以任何二手整理为准,包括本文。
| 机型 | 受影响版本 | 修复版本 |
|---|---|---|
| Mk2 与 Mk3 | 4.0.1 至 4.1.9(含) | 4.2.0 及以上 |
| Mk4 与 Mk5 | 5.6.0 之前的所有版本 | 5.6.0 及以上 |
| Q | 1.5.0Q 之前的所有版本 | 1.5.0Q 及以上 |
| 运行 Edge 固件的 Mk4、Mk5 与 Q | 6.6.0X 与 6.6.0QX 之前 | 6.6.0X、6.6.0QX |

真正决定是否受影响的,是助记词最初生成时设备所运行的固件版本,而不是它今天运行的版本。上周刚升过级的设备,里面装的仍然是旧代码生成的那套助记词。这是整件事中被误解得最多的一点。
处境最糟的是 Mk2 和 Mk3,只有大约 40 位。较新的机型在生成时混入了安全芯片提供的熵(Entropy),把强度抬到了 72 位左右,好一些,但离足够仍然差得很远。
为什么掷骰子成了分水岭
COLDCARD 一直允许用户在初始化时通过掷实体骰子来补充自己的随机性,设备会把用户掷出的结果和自身的熵一起做哈希运算。正是这个设计决定,让相当一部分用户躲过了这一劫。
因为用户掷出的随机性是被混入而不是被替换,即便设备自身贡献的那部分很弱,用户这部分的强度仍然是完整的。至少 50 次公平、独立、无人看见也无人记录的投掷,单凭它们本身就能贡献超过 128 位;99 次或以上则接近 256 位。
一个高强度的 BIP-39 密语能起到同样的作用,道理也一样:它是攻击者的模拟环境里从来不存在的一份秘密。
这里有一个让整个行业都不太舒服的教训。那个可选的、稍微有点麻烦的功能,那个愿意花时间去用的老玩家常被调侃多此一举的功能,最后恰恰是撑住了的那一个。纵深防御不是做样子。
该做什么,按顺序来
如果你在 2021 年 3 月至 2026 年 7 月 30 日之间初始化过 COLDCARD,既没有掷骰子也没有设置密语,请直接把这套助记词视为已经泄露,先转移资产,之后再慢慢读。
- 如果金额不小,立刻把币转走。任何一个不是在受影响固件上生成的、由你自己掌控的钱包,眼下都可以先用。攻击还在进行时,快比周全更重要。
- 升级固件,按上表找到对应机型的修复版本,并验证安装结果。
- 在升级后的设备上重新生成一套全新的助记词,这一次记得加上掷骰子。
- 把新的备份抄下来并核对无误,然后再往里面转任何资产。
- 在设备屏幕上核对收款地址,不要只看软件里显示的那一串。
- 先转一笔小额测试,确认能够到账、也能够正常转出。
- 再把剩下的转过去,旧备份先妥善保管,直到你确认旧钱包里确实什么都没剩下。
第 3 步千万不要跳过。升级固件不会改动一套已经存在的助记词。一台打了补丁但仍在用旧助记词的设备,风险和打补丁之前完全一样。
这件事说明了什么,又没有说明什么
把这件事读成「硬件钱包没用」或者「某个牌子不靠谱」,都很省事,但两种结论只要往细节里看一眼就站不住。
安全芯片尽到了职责,PIN 码尽到了职责,屏幕也尽到了职责,设备从头到尾没有泄露过任何东西。真正出问题的,是位于这一切上游的一行构建配置,而那恰恰是其他所有防护都无法兜住的位置。钱包没有办法验证自己生成的随机数是否真的随机,这正是随机性的本质决定的。
这件事真正说明的那一点,则更让人不安,也更具普遍性:开源没能在五年里发现它,审计同样没有。厂商很快公开了问题,大约两天内发布了修复,并且发布了一份对自己毫不留情的技术说明。在损失已经造成之后,这基本上就是一家公司所能做到的上限,也比不少体量更大的公司做得更好。
如果你手上有任何一款硬件钱包,真正可操作的结论不是换个牌子,而是把设备本来就提供的那些增强随机性的功能用起来,给有分量的资产加上密语,并且把厂商发布的安全公告当成需要读完的东西,而不是可以顺手划掉的通知。
常见问题
我已经升级固件了,是不是就安全了?
除非你同时重新生成了助记词并把币转了过去,否则并不安全。升级只对之后新生成的助记词有效。
我当初掷了骰子,还需要做什么吗?
如果你输入了至少 50 次公平、独立、从未被记录也从未被人看见的投掷结果,这个漏洞不会影响到你。少于 50 次,或者把投掷结果写下来过,那就是另一回事了。
我设置了 BIP-39 密语,会受影响吗?
一个高强度且从未外泄的密语可以让你免于这次攻击;一个弱的或容易被猜到的则不行。
我的 COLDCARD 是 2021 年之前设置的,受影响吗?
在固件 4.0.1 之前生成的助记词走的是硬件随机数发生器,不受此漏洞影响。
被盗的币还能追回来吗?
现实地说,不能。比特币交易一经确认即为最终状态。Coinkite 表示可以提供交易数据,用于协助报案和保险理赔。
这会不会影响 Ledger、Trezor、Tangem 或其他品牌?
不会。这是特定 COLDCARD 固件版本中的一个特定缺陷,它无法说明其他厂商设备的随机数质量如何。
在泰国购买
SIAMBC 不经销 COLDCARD,所以这件事对我们来说没有任何可以顺势推销的东西。如果你手上有一台,又不确定自己的助记词是不是在受影响的固件上生成的,可以通过 LINE 联系我们,账号是 @siambc,我们会陪你一起把版本核对一遍。哪怕这位用户是别家的客户,我们也更希望他的币还在。
我们对每一位客户讲的通用建议,在这件事上一个字都不用改。从正规经销商处购买,而不是从电商平台的随机卖家手里买;助记词由你自己在设备上、当着自己的面生成;设备支持掷骰子就把它用上;任何一笔你不愿意失去的资产,都给它加上密语。还有,把厂商发布的安全公告读完,因为这一次的公告在多数用户看到之前,已经公开了好几个小时。
有一条规则,无论什么品牌都成立。任何向你索要助记词的人都是骗子,包括任何以这次事件为由联系你的人。接下来几天一定会出现假冒的 COLDCARD 客服和假冒的资产追回服务。无论是 Coinkite、SIAMBC,还是其他任何人,都永远不会需要那几个词。






แชร์:
在泰国,助记词该存在哪里
币放在 Bitkub 上,还需要硬件钱包吗?