Coldcard:窃取7000万美元比特币,却没有碰过一个保险箱(更新)

保险箱开了五年,没人注意到


超过 1,000 枚比特币,也就是大约 7,000 万美元,离开了那些从未连接过互联网的硬件钱包。小偷没有碰任何设备。他没有进入任何人的家。他没有发送任何带陷阱的消息。他只是猜出了密钥。这些密钥从 2021 年 3 月起就可以被猜出来。

这就是比特币社区十年来一直认为不可能发生的情景。所谓的“冷”钱包,也就是那个把你的密钥离线保存在抽屉里的设备,本应是最后一道防线。它就这样倒下了,没有任何人碰过它。

事情发生的经过

在 2026 年 7 月 30 日至 31 日的夜里,有人不到一小时就清空了大约 500 个比特币钱包。总计 594.5 枚比特币,也就是大约 3,800 万美元,在区块链的几个区块中连续被转走。这些钱包中的很多已经沉睡多年,没有发生过丝毫移动。

分析师随后翻查了历史记录。Block 的安全工程师 Clay Garrett 找到了 695 笔更早的交易,它们使用的签名完全相同。这些交易还涉及另外 488 枚比特币。几乎可以肯定,同一个人早就已经出手,只是没人注意到。

柱状图,488 枚比特币被盗且没人注意到,25 分钟清扫期间有 594.5 枚比特币,总计记录到 1082.65 枚比特币

最隐蔽的盗窃是上面那一波。没人发现它。这两波里,它可能是更令人担忧的一波。

截至 8 月 1 日,记录到的总数达到 1,082.65 枚比特币。研究人员提醒说,这个数字仍然是暂时的。赃款中最大的一部分,也就是 562 枚比特币,被集中到了一个地址上。它从那以后再也没有动过。所有人都可以一直看到它,但没人能碰到它。这是这个故事中最讽刺的地方之一。

8 月 31 日更新:统计结束了,而且几乎翻了一倍

一个月后,真实规模已经清楚了。追踪链上资金流动的分析公司 TRM Labs 统计出,被盗的比特币达到 1,816 枚,也就是大约 1.16 亿美元,分布在超过 5,200 个地址上。因此,上面 8 月 1 日公布的 1,082 枚比特币甚至还不到赃款的三分之二。

还有一件当时没人知道的事:这并不是在一个夜晚发生的。四天里一共出现了四波。7 月 30 日那一波是第一波,也是当时唯一被发现的一波。

根据来源不同,公开统计的金额从 8,800 万美元到 1.3 亿美元不等,因为每个来源都停在不同的一波,并且按照不同的价格换算。准确数字是多少并不重要:这是今年针对硬件钱包的最大规模盗窃,也是 2026 年所有类型加密货币盗窃中规模第三大的案件。

漏洞出在一个选错的词上

一行代码就是这样让人损失 7,000 万美元的。

硬件钱包从纯粹的随机数中生成你的 24 个秘密单词。为了做到这一点,它使用一块专用芯片,根据物理现象产生随机数。这就叫硬件随机数生成器。这个组件至关重要。软件也正是从来没有调用过它的那个部分。

2021 年 3 月,Coldcard 的制造商 Coinkite 将代码迁移到了 Bitcoin Core 的加密库。在这次操作中,负责生成随机数的函数改了名字。开发者原本打算把软件备用随机数生成器停用,把它的值设为零。

但代码中的测试并没有询问“这个设置的值是不是零”。它询问的是“这个设置是否存在”。这个设置确实存在,即使它的值是零。于是测试通过了。编译器安安静静地把备用随机数生成器接了上去,替代了真正的随机数生成器,没有发出任何警报。

这就像是问某人他有没有驾照,和问他把驾照拿出来给你看之间的区别。芯片的代码确实存在于设备中。它只是从来没有被执行过。

结果,说白了

插图比较了两种挂锁,左边是原本设计的带几十个转盘的巨大挂锁,右边是实际运作的带三个转盘的小挂锁

左边是卖给你的那把锁。右边是实际保护你积蓄的那把锁。

一个24个单词的助记词必须提供128位随机性。这相当于一个39位数的组合数量。即使动用地球上的所有电脑,运行整个宇宙年龄那么久,也没人能把它们全部试一遍。

受影响的 Coldcard Mk3 上,只剩下大约40位。更新一些的型号上,大约还剩72位。40位代表一万亿种可能性。这个数字看起来很大。可对一台普通机器来说,这只需要几个小时的工作量和一张披萨钱的电费。备用生成器并没有真正产生随机数。它利用的是芯片的内部状态和时钟,而攻击者可以重新计算出这两个值。

保险箱没有被撬开。锁上只有三位数字,而攻击者把它们一个个数出来了。

三块瓷砖比较40位、72位和128位时需要尝试的密钥数量

这三个数字都完整地写了出来,比写成二的幂更直观。从第一行到最后一行,差距大到没有任何图片能按比例表现出来。

病毒式传播的帖子哪里说歪了

从昨晚开始到处流传的消息里有真实信息,但至少也有三处错误。它正在那些资金处于风险中的人的通讯软件里传播。还是趁这份摘要变得比漏洞更危险之前,先把造成的损害纠正过来吧。

  • “Mk4、Mk5 和 Q 没事。”这是错的,也是最严重的错误。这些型号同样受到了影响。它们之所以更能抵抗,是因为它们混合了来自安全芯片的随机性。据 Coinkite 称,这把随机性水平提高到了大约72位。但攻击仍然可能成功。考虑到攻击者可以猜到的数值,Galaxy Research 估计还剩大约40亿种组合需要尝试。Coinkite 已经为所有型号发布了修复固件,不只是 Mk3。
  • “你的单词来自你按按钮的节奏。”这个解释很好听,但不是官方分析给出的说法。生成器使用了设备状态和时间,尤其是时钟寄存器以及芯片序列号。这些值没有一个是秘密。这已经足以引发这场灾难。
  • “加上密码短语你就没事了。”这只对了一半。Coinkite 解释说,一个强大且唯一的密码短语会增加一层独立的保护。这是准确的,但制造商仍然建议迁移。弱密码短语已经无法保护任何东西,因为种子现在已经公开了。

有一点完全准确:掷骰子能保护你。Coinkite 确认,50到98次私下掷骰子本身就能带来至少128位随机性,而99次或更多能带来大约256位。如果你曾经花一个晚上掷骰子来创建种子,现在可以松口气了。其他品牌,Ledger 和 Trezor,不受影响。它们的设备和代码都不一样。

你是否受到影响,该怎么办?

规则简单而且残酷。重要的不是你今天拥有的型号。而是你创建种子那天使用的软件版本。

  • Mk3:4.0.1 到 4.1.9 版本受影响。4.2.0 已修复。
  • Mk4 和 Mk5:5.6.0 版本之前受影响,Edge 分支则是 6.6.0X 之前。
  • Q:1.5.0Q 版本之前受影响,Edge 分支则是 6.6.0QX 之前。

这里是最难接受的信息,也是你在动任何东西之前必须理解的事情:更新固件无法修复已经创建的种子。固件是设备的内部软件。更新固件只能修复未来密钥的创建。你的密钥只被生成过一次,有时已经是几年前的事了,当时用的是错误的骰子。它们将永远可以被猜出来。

Coinkite 发布的流程包含六个步骤。你需要更新设备,创建新种子,记录备份并进行验证,在设备屏幕上核对一个收款地址,发送一笔小额测试交易,然后转移剩余资金。你需要保留旧备份,直到所有资金都转移完毕。

最后还有一点,同样紧急:私信里充斥着假冒的客服账号。任何正规的制造商都绝不会向你索要你的24个单词。也不会给你发链接,让你去“保护”钱包。昨晚没有丢掉比特币的人,可能会在这周因为一场普通得多的骗局而丢掉比特币。

开源没有兑现它的承诺,这话必须说出来

Coldcard 的代码是公开的。它一直都是公开的。这个圈子的口号“不要信任,去验证”,十年来一直像祷文一样被反复念诵。漏洞整整五年都暴露在那里。直到一个小偷利用了它,才终于有人注意到。

这才是这起事件真正的教训。开放的代码不一定是有人审阅过的代码。“成千上万双眼睛”是一种修辞,不是审计。而且说实话,没人会在周日早上起床时,迫不及待地想去重新检查某个固件的编译选项。

最后一个耐人寻味的细节,至少对那些没有错过的人来说是这样:Coinkite 认为,有人使用人工智能仔细检查了它旧版本的固件。该公司还特别说明,几周前它自己就让“现有最优秀的模型之一”检查过自己的代码,却什么也没发现。安全界对此解释报以一挑眉。这个想法依然令人不寒而栗:机器可以耐心地重新阅读二十年的开源代码,只为找出那一行从来没人看过的代码。

那么,把比特币放在银行里更安全吗?

这是从昨天起所有人都在问的问题。这个问题值得一个比粉丝式回答更好的答案。

两幅画面,左边是一个人在家里亲自拿着一把大钥匙,右边是同一把钥匙挂在银行的玻璃后面

没有完美的答案。这里有两种完全不同的方式可以让你输掉一切。选择的关键在于,决定哪一种更让你害怕。

当你在银行或经纪商的应用里购买比特币时,你并不持有自己的密钥。公司替你保管着它们。你拥有的只是它登记册里的一行记录,以及一个承诺。行话把这叫作交易对手风险。如果公司倒闭、消失或被洗劫一空,你就会变成一个等着轮到自己的债权人。那些把币留在 FTX 或 Celsius 的人并没有丢掉自己的密钥。他们失去的是自己的交易对象。

在欧洲,情况已经变了。这里不再是蛮荒西部。从 2026 年 7 月 1 日起,欧洲加密资产条例过渡期结束,服务商必须取得牌照。更重要的是,该条例要求它们严格把客户资产与公司资产分开。这正是 2022 年那些破产事件中所缺少的东西。这并不会让破产变得不可能。它会让老板洗劫金库变得困难得多。

但这里还有一个很多人不知道的陷阱:这些加密资产不是银行存款。保护你活期账户资金的 100,000 欧元欧洲保障并不适用于它们。在和工资收入同一个应用里看到一行“比特币”,会让人产生一种受到保护的感觉。这种保护并不存在。

对一个普通家庭来说会怎样

如果要向一个不想把晚上时间都花在这上面的人介绍这个选择,我会这样说。

如果你只是投入 500 或 2,000 欧元试试,使用银行或受监管经纪商的应用很可能是正确的选择。不是因为它绝对更安全。而是因为普通人的绝大多数损失都来自丢失的备份、写在纸上后弄丢的密码、搬家,或者去世时没有留下交接安排。那些奇怪的密码学漏洞要远远排在后面。忘记的密码可以找回。丢失的助记词永远找不回来。

如果你持有一笔足以改变人生的钱,正确答案既不是这个也不是那个。不能把所有东西都放在同一个地方。本周,那些把资产分散在两个钱包品牌和一个受监管账户里的人,损失的是某些东西的三分之一。那些把一切都放在同一台设备里的人,什么都没了。这是全世界最无聊的建议。这也是过去十五年每次灾难中唯一奏效的建议。

如果你坚持自己保管密钥,这依然是一个完全站得住脚的选择,那么教训很具体:加入你自己的随机性。在这件事里,骰子是唯一有效的保护。掷五十次骰子,花一个晚上,你就不再依赖别人的随机数生成器。

如果你连一个 satoshi 都没有,这和你也有关系吗?

有关系。而且不是十年后,是今天,就在你的客厅里。

你在网上买东西时,浏览器地址栏里那个闭合的小挂锁?它依赖的是页面打开时由你的手机或电脑进行的一次随机抽取。你的互联网盒子送到家时附带的密码?在工厂里随机生成的。银行通过短信发给你的代码?随机生成的。你的银行卡本身也带着一个小型随机源。所有在网上保护你的东西,都从和这个故事里一样的问题开始:一开始抽出的那个数字,真的不可预测吗?

一个客厅,互联网盒子、电脑、银行卡和手机都连接着一台小型随机抽取机器

这个房间里没有任何东西能在没有一次良好随机抽取的情况下运行。这可能是最重要的组件,却从来没人谈论它。

这已经不是第一次出问题了。2006年,Debian 这个大型 Linux 发行版之一的一个开发者,因为某个分析工具一直在抱怨加密软件中的一行代码,便把它删掉了。将近两年的时间里,在这些机器上生成的所有密钥只能取 32,768 个值。三万二千多个!我们在2008年5月发现了这件事,还不得不重新生成全世界一半服务器的密钥。二十年后,我们又在一台唯一职责就是干这个的设备中,看到了完全一样的故事。

不过这里面还是有一件事让我觉得安心,我之所以说出来,是因为没人指出这一点:这次,我们可以把一切都数清楚。5,200个地址,1,816枚比特币,每一波的时间。传统银行系统里出现这么大的漏洞,你会在六个月后的一份三行公告中得知这件事,如果你能得知的话。在这里,任何人都可以亲自去核查。这不能让钱回来,但可以避免谎言。

我的看法

真正留在我心里的,不是那7,000万。这是一名男子在论坛上的留言。短短几行字里,他解释说自己八年的积蓄消失了。他39岁,本来希望在50岁前攒出一笔缓冲金,现在已经不知道自己是否还相信这一切。他还说,他之所以选择这台设备,正是因为它的代码是开放的,任何人都可以验证。他做过功课。正是这个细节,让这个故事如此难受。

比特币的承诺是不用依赖任何人。这周,我们发现所有人都依赖于一个在2021年3月某天写下的编译选项。有人把“存在”写成了“等于”。没有客服来修复这一切,没有保障基金,也没有申诉途径。这笔交易有效、不可撤销,而且永远对所有人可见。

这不是硬件钱包的末日。宣布它末日的人通常是在推销别的东西。这是天真想法的末日:相信一个东西是安全的,只因为它的代码是公开的,而且肯定已经有人替你检查过了。

Join the conversation

You need an account to comment on this article. Creating one is free and takes under a minute.

  • The XMLTV file, free to download every day
  • Comment on articles and reply to other readers
  • Get an e-mail when an article you follow is updated

No comments yet.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙