← 返回文章列表

原文:Hunting Down the Coldcard Hacker. Wave 1 Thief May Be Known to FBI

追捕 Coldcard 黑客:第一波盗贼的身份或许已被 FBI 知晓

作者:Juan Galt· 2026-08-18· 12 分钟
追捕 Coldcard 黑客:第一波盗贼的身份或许已被 FBI 知晓

图片来源:Bitcoin Magazine

TL;DR — 快速摘要

  • 执法机构可能已经知道在 2026 年 7 月第一波、也是规模最大的 Coldcard 钱包被盗事件中,清空一千多枚比特币的盗贼是谁。Block 的调查认为,他们追踪攻击者的链上扫币活动到一家大型区块链数据服务商的付费账户,其内部日志与盗窃模式匹配得「异常精确」
  • 来自第一波攻击的 1,082.65 枚比特币仍留在攻击者的地址中,因此追回希望犹存;后续几波的损失估计超过 2,000 枚,超过 5,000 个地址,约 1.18 亿美元已获确认被盗
  • Galaxy Research 的 Alex Thorn 表示「第一波攻击者的身份,或许已被执法机构知晓」,且第二波的模式与其相似,可能出自同一行为者
  • 攻击仍在进行中,针对的是固件 4.0.1 及更早版本上生成弱私钥的设备。如你可能持有其中之一,请立即核对并尽快转移资金

执法机构可能已经知道在 2026 年 7 月第一波、也是规模最大的 Coldcard 钱包被盗事件中,清空一千多枚比特币的盗贼是谁。Block 的调查认为,他们追踪攻击者的链上扫币活动到一家大型区块链数据服务商的付费账户,其内部日志与盗窃模式匹配得「异常精确」。

提醒:攻击仍在进行中,针对的是 MK2 乃至更早、固件 4.0.1 及以后版本上生成弱私钥的设备。如你可能持有其中之一,请立即核对并尽快转移资金。参见 Coinkite 公告安全状态页

那一波的币——1,082.65 枚比特币——仍原封不动地躺在攻击者的地址里,为第一波被盗的受害者和合法持有人留下了一丝追回的可能。现在的问题是:黑客是谁,这条线索是指向一个高明的外部人士,还是那个让盗窃成为可能的、存在了五年的熵漏洞,其实更接近 Coinkite 自己曾警告过的那种内部「退休攻击」。

我们目前所知

2026 年 7 月 30 日,一名攻击者开始系统性地抽干 Coldcard 硬件钱包——这些钱包在存在漏洞的固件下生成了种子,而这个缺陷被发现前已隐匿多年。仅第一波、也是最大的一波就转移了 1,082.65 枚比特币。后续几波接踵而至,损失估计超过 2,000 枚。Galaxy Research 的 Alex Thorn 通过链上模式分析与受害者自愿上报的组合方式追踪了这一活动。截至 8 月初,已确认及估计的多波损失超过 1,800 枚比特币,涉及超过 5,000 个地址,随着新的上报不断涌来,最终确切总数仍在持续修正。以美元计,已被确认盗走的资产约合 1.18 亿美元。

Thorn 已公开讨论过执法机构可能已掌握最大一波幕后操作者的具体线索。在 Bitcoin Policy Institute 于 Bitcoin Magazine YouTube 频道主持的一期节目中,Thorn 表示:「第一波攻击者的身份,或许已被执法机构知晓。」他补充说,第一波仍是目前已识别出的最大单块赃款,币仍留在攻击者的地址中,并指出第二波的模式与之足够相似,可能出自同一行为者。第二波又为总数增加了约 76 枚比特币。

「黑客身份可能已知」这一说法的主要来源,是 Block 负责 Bitkey 的工程负责人 Clay Garrett。2026 年 7 月 31 日,Garrett 发布了 Block 调查的发现:

「在昨天调查 Coldcard 被盗事件的过程中,我们在扫币动作中发现了一个不寻常的模式。这个模式把我们引向一个随后得到证实的假设:操作者使用了一家知名区块链服务提供商的付费账户,在扫币期间查询源地址并执行其他相关活动。」

「我们直接联系了该服务商。他们的内部日志与所怀疑的工作流程匹配得异常精确,包括请求的数量、时机与顺序。该服务商是在正常情况下响应这些请求,而请求内容并未暴露其更广泛的用途。我们没有看到任何证据表明该服务商知情参与或协助了这起涉嫌的盗窃。」Garrett 说,并补充道:「我们正在把相关信息分享给相关当局。在不干扰调查的前提下,我们会提供进一步更新。」

Thorn 等人指出,随后规模更小的几波表现出不同的操作模式——一些是随后迅速洗钱的、机会主义的快速盗刷——表明在最初的公开披露之后,可能有额外的行为者逆向工程了同一个弱种子空间。自我上报的已确认盗刷似乎在 8 月 6 日之后急剧放缓,不过在 2021 年到 2026 年 7 月补丁之间、在受影响的固件上生成的许多潜在易受攻击的种子,在用户迁移之前仍处于风险之中。

一场退休攻击?

这种失败的性质引发了关于「内鬼攻击」的阴谋论,而 Coinkite 自己也曾公开讨论过这一点。2021 年 10 月,官方 COLDCARD 账号把「退休攻击」(retirement attack)定义为这样一幕:「项目制造者可能留一个『bug』在熵生成里,以备日后取回」。这条帖子至今仍可查见此处。2026 年的漏洞恰好造成了那样的结果:种子的熵远低于预期,让它们多年后仍可被搜索得到。如今比特币圈内有一些人相信这次黑客可能是 Coinkite 的内部人员所为,但也有人持不同意见,而公开记录中的证据仍太少,无法确知任何结论。进一步的证据很可能要等很多年、等到诉讼将其曝光之后才会浮出水面。

关键改动于 2021 年 3 月 1 日进入代码库,提交信息为「First pass w/ libNgU」(b18723dd)。那次提交用一个新的库 libngu 替换了剩余的 Trezor 衍生加密与 BIP-39 代码,并重写了种子生成逻辑。本意是让随机性调用解析到 STM32 硬件的真随机数生成器。然而,该 bug 把调用重定向到了 MicroPython 的软件 Yasmarang PRNG,导致在较旧型号上有效熵坍塌到约 40 位、在较新型号上约 72 位。这意味着生成的比特币私钥,实际上可被现代计算硬件暴力破解。这次加密库的替换是由 Doc-Hex 推入代码库的——他也就是 Peter Gray,Coinkite 的首席技术官。

据 Foundation Devices 首席执行官兼创始人 Zach Herbert 称,这一举动在相当程度上可能由许可证压力驱动,不过 Coinkite 已否认这是这次代码变更的主要动机,表示:「COLDCARD 必须做这次改动才能迁移到 libsecp256k1;许可证变更与此无关。libsecp256k1 是 Bitcoin Core 所用的标准库。」

Coldcard 之前一直使用 Trezor 衍生、以 GPLv3 开源许可证发布的代码。在 Foundation Devices 分叉了相关材料之后,Coinkite 试图把其余组件迁移到更严格的「MIT + Commons Clause」安排——该安排限制了商业复用。那次重写规模庞大,携带了复杂的工程目标;正是这次集大成,在熵路径上留下了一个无人察觉的隐患。

早在 2021 年 4 月 7 日,Coinkite Telegram 群的一位成员就对从 Trezor 加密库迁移提出了质疑,他写道:「我们真要用这么个东西去替换经过多年打磨、并经 Johoe 等白帽反复审查、被 wallet.fail 渗透测试过的 TrezorCrypto 代码吗?」又补充道「switch 可能是位才华横溢的匿名程序员,但他的提交历史糟糕透顶。」然而,这样的批评分量不足,很快被 NVK 挥手打发,他批评 Trezor 库是一场「shitcoin 烂摊子」。颇具讽刺意味的是,正因为以开放许可证与更广的加密市场共享这份代码,Trezor 的加密库在多年后仍远比 Libngu 接受过更深入的代码审查。

Switch 与 Peter Gray,又名 Doc-Hex

引入这个漏洞的加密库替换,是由 Doc-Hex 推入代码库的——他是 Coinkite 的首席技术官,也就是 Peter D. Gray。他用 Libngu 替换了 GPLv3 的 Trezor 加密库,而 Libngu 是一个鲜为人知的代码库,由一位化名「Switch」的人创建——在创建 Libngu 之前,这个化名显然没有任何可查的前史。Switch 这个账号于 2019 年 8 月 3 日出现在 X 上,提到 DEFCON——那场各国网络安全工程师通常会参加的国际黑客大会。

2020 年 10 月 16 日,Switch 在 X 上感谢 Doc-Hex 合并了他的代码:「多谢 merge@DocHex……我在做又一个比特币库。说不定哪天会用在@COLDCARDwallet上。」几天后,Switch 发推分享了 Libngu 的链接,为做出一件「有用的东西」而自豪。

然而,接下来的地方就诡异了。根据比特币核心贡献者 James O'Beirne 的研究,Switch 与 Peter D. Gray 曾用相同的 GPG 密钥签署代码提交。O'Beirne 通过 GPG 提交签名证明,数十个以 switck 署名的提交是用 Peter D. Gray 的个人密钥签的——Gray 是 Coinkite 联合创始人兼 CTO,也以 DocHex 身份运作。Zach Herbert 还声称,DocHex 与 switck 的 X 账号绑定的电话号码末两位相同(帖子)。另一些研究者指出了匹配的 DNS 注册模式。

截至本文发稿,Gray 和 Coinkite 都没有公开回应 GPG 签名的发现,面对就此事的置评请求,他们也没有回应。Switch 账号至今依然活跃,最近一次合并 Libngu 的代码改动是在 2026 年 8 月 17 日。

比特币业内许多人把这当作某种不端的旁证。为什么要费尽心机专门为一个加密库设一个化名?这被当作某种恶意的证据。然而,更深入的分析却得出了不同的结论。如果 Gray 真的想用这个 RNG bug 对 Coldcard 用户实施「rug」,他会偏偏用自己的个人 GPG 密钥签名提交吗?会不会有人如此狡猾,把 bug 藏了多年,等着它被广泛采用,与此同时却忘了给这个一次性化名配上一条专用的 GPG 签名?我不认为这说得通。

更可能的是,这是 Gray 在 DEFCON 上出于某种一时兴起的偏执,随手创建的一个随机身份,之后多年在某些项目上继续使用。毕竟,在比特币开发者圈子里,化名身份并不罕见。中本聪本人就是最著名的例子。因此,单凭这一条,Gray 与 Switch 之间的联系在追捕 Coldcard 黑客这件事上,恐怕并无太多分量。

MicroPython 贡献者

还有一小批其他开源开发者,最近也被确认接触或影响了在 Coldcard RNG 漏洞中扮演角色的代码。

数据分析师 LaurentMT 审视了 RNG 路径在 MicroPython 一侧的情况。MicroPython 是一个精简、开源的 Python 3 实现,专为微控制器和资源受限的计算机而设计。由于这个漏洞,Coldcard 固件最终调用了 MicroPython 的 Yasmarang 伪随机数生成器(PRNG)作为回退,导致了低熵生成。

对 MicroPython 中 PRNG 逻辑的代码修改始于 2020 年 8 月 20 日,当时一个名叫「mirko」的用户在 GitHub 上开了问题(#6347)。他抱怨自己的 ESP32 硬件在以一种特定方式调用代码中的 `random.choice()` 函数时,总是返回相同的结果,而他期待的是随机的结果。这个 GitHub 问题记录了随后几个月关于如何正确处理相关逻辑与预期行为的讨论,而 mirko 透露该设计有违直觉。

Laurent 指出,「robert-hh 于 2020 年 8 月 22 日初始化了一个实现 PRNG 种子变更的 Pull Request」。MicroPython 的维护者 Dpgeorge 随后于 2020 年 10 月 29 日把该 PR 的一个略微修改版本合并到主仓库,实现了「(UID+SysTick+RTC) 以解决 robert-hh 方案中的一些局限」。

因此,这段关键 RNG 相关代码的改动,在 Coldcard 分叉 MicroPython 供 Libngu 使用时就已经躺在 MicroPython 的 master 仓库中——但当时 MicroPython 尚未正式发布该库的新版本。众所周知,构建在软件仓库的 master 版本之上是有风险的,因为 master 很可能仍在持续变动,而不是构建在一个官方、稳定的发布版本之上。MicroPython 的新版本直到 2021 年 2 月 3 日才以 v1.14 发布。更糟的是,RNG 逻辑的变更在发布公告里只被一笔带过,仅提到「urandom 模块将在 stm32、esp8266、esp32 和 rp2 端口上于导入时对种子随机化」。

在接受 Bitcoin Magazine 采访时,Laurent 用毫不含糊的话得出结论:「没有这次修改,Coldcard 代码里的这个 bug 会立刻被发现。」谈到导致这个 bug 的系列事件,他还说「这条时间线上有太多『巧合』」,并补充道「虽然它们不能证明任何东西,但我不认为一项官方调查可以把它们完全忽略。」

重要的是要指出,没有任何证据表明上述任何开发者是故意借这些改动引入 Coldcard 的 RNG 漏洞。说到底,这笔关键代码的实现由硬件钱包公司 Coinkite 负责。MicroPython 是一个庞大、被广泛使用的开源项目。尽管如此,从我们不妨暂时称之为——一出悲剧性的错误喜剧——的事情里,大概还有很多教训可学。

为何内鬼作案似乎不太可能

有几个因素反对这是一场蓄意、长期策划的「退休式」内鬼攻击。「switck」这个身份的隔离做得很差;共享的 GPG 密钥与其他重叠之处,让研究者们一旦动手查看,就相对容易地把归属指向 Doc-Hex 亦即 Peter Gray。这个账号多年来基本上被弃置。MicroPython 的贡献者则在一个高可见度的项目上公开运作。

Hodlonaut 的 Citadel21调查及其他技术审查,都没有发现熵失效是故意的明确证据。工程师 Alekos Filini 关于该 bug 的技术报告明确追踪了技术事实,写到「我的目标是纯粹地呈现事实,而**不是**下任何结论。」Wizardsardine 在他们的技术尸检中详述了多层失效的安全防护,并把失败描述为「坐落在子模块的边界上——恰恰是审查者不再看下去的地方。」

Steven Geller 的技术深度解析在这件事上也没有下任何强结论。DK27ss 对 bug 的概念验证重构把它描述为「一条由四个缺陷组成的链,每个看起来都无伤大雅。」

如果这次盗刷是经典的「退休式」内鬼攻击,或者有人所说的长期骗局,那么今天的对话会大不相同。上一次我们看到比特币业内一桩重大长期骗局,大概要数 QuadrigaCX——那家中心化的加拿大交易所,其创始人 Gerald Cotten 在 2018 年神秘失踪的资金被发现后不久,据报「死于印度」。创始人被安大略省证券委员会指控多年来盗用交易所用户约 1.7 亿加元的存款,然后人间蒸发。

相反,Coinkite 的领导层至今公开活跃,回应事件、发布打过补丁的固件、协助用户迁移,并就技术细节发声。Coinkite 的创始人及运营者在写作本文时仍然相当知名、仍经营者这家公司;他们没有在资金失踪的同时消失。

与此同时,第一波资金总计超过 1,000 枚比特币,如今汇集在三个地址中,被数百名工程师、也可能是 FBI 之类的执法机构盯着。如果 Coinkite 真想上演一出五维国际象棋式的退休攻击,他们在偷币时本会小心得多。他们不会把所有币都汇集到那几个易于追踪的地址里,他们的创始人恐怕也早已「神秘死于印度」了。

虽然没有定论,调查恐怕还要持续多年,但就目前而言,证据指向的是比特币至上主义与自我托管社区里的一场文化失败——未能广泛教育用户和有影响力的人什么是开源文化的善恶之道——坦率地说,还有 Coinkite 老将们的傲慢,事后看来,他们对自己的能力过于自信了。