大师投资投资 & 收益 · masterinvest.info

追踪 Coldcard 黑客。第一波窃贼可能为 FBI 所知

18-08-2026, 19:02
追踪 Coldcard 黑客。第一波窃贼可能为 FBI 所知

比特币杂志

追踪Coldcard黑客。第一波窃贼可能为FBI所知

执法部门可能已经知道谁在2026年7月的第一次和最大规模的盗窃中从Coldcard钱包中盗取了超过一千个比特币。Block的调查认为,他们追踪到了攻击者在链上的转移,发现其与一家主要区块链数据提供商的付费账户相匹配,其内部日志与盗窃模式“极其具体”地一致。

公告:攻击仍在进行中,目标是生成于MK2及其之后版本(固件4.0.1及以上)的弱私钥。如果您可能有这样的私钥,请尽快仔细检查并转移资金。请参阅Coinkite的建议和状态页面。

来自那一波的比特币——1,082.65 BTC——仍然静静地停留在攻击者的地址中,给受害者和第一波被盗比特币的合法拥有者留下了希望,可能会有追回的机会。现在的问题是,黑客是谁,以及同样的线索是否指向一个复杂的外部攻击者,或者使盗窃成为可能的五年旧熵漏洞是否更接近于Coinkite曾经警告过的内部“退休攻击”。

我们所知道的

在2026年7月30日,一名攻击者开始系统性地从Coldcard硬件钱包中提取比特币,这些钱包在易受攻击的固件下生成了种子,这个漏洞已经被忽视了多年。仅第一波和最大的一波就转移了1,082.65 BTC。随后又有几波,估计超过2,000 BTC。Galaxy Research的Alex Thorn通过链上模式分析和自愿受害者报告跟踪了这一活动。截至8月初,多个波次的确认和估计损失超过1,800 BTC,涉及超过5,000个地址,尽管随着新报告的到来,确切的最终总数仍在不断修正。按美元计算,确认被盗金额约为1.18亿美元。

Thorn公开讨论了执法部门可能已经掌握了关于最大一笔交易背后操作者的具体线索的可能性。在比特币政策研究所的一段节目中,Thorn表示:“第一波的身份,攻击者的身份,可能已为执法部门所知。”他补充说,第一波仍然是迄今为止识别出的最大单笔交易,币仍然存放在攻击者的地址中,并指出第二波的模式看起来相似,可能涉及同一行为者。第二波增加了大约76个比特币到总数中。

关于黑客身份可能被知晓的主要来源是Clay Garrett,他是Block的工程负责人,正在Bitkey项目上工作。2026年7月31日,Garrett发布了Block调查的结果:

“在我们对Coldcard泄露的调查中,我们发现了清扫过程中的一个异常模式。这个模式使我们提出了一个假设,后来得到了证实:操作员使用了一个知名区块链服务提供商的付费账户来查询源地址并在清扫过程中执行其他相关活动。”

“我们直接联系了该服务提供商。他们的内部日志与怀疑的工作流程高度一致,包括请求的数量、时间和顺序。该提供商在回应未透露其更广泛目的的请求时提供了其标准服务。我们没有看到任何证据表明该提供商故意参与或促进了怀疑的盗窃。”Garrett说,并补充道:“我们正在与相关当局分享相关信息。我们将在不干扰调查的情况下提供进一步的更新。”

Thorn 和其他人注意到,后来出现的较小波浪显示出不同的操作模式——一些快速的、机会主义的排水,随后是快速洗钱——这表明在初次公开披露后,可能有其他参与者逆向工程了相同的弱种子空间。自我报告的确认排水在 8 月 6 日后似乎急剧减缓,尽管在 2021 年至 2026 年 7 月补丁之间受影响的固件上生成的许多潜在脆弱种子仍然面临风险,直到用户迁移。

退休攻击?

故障的性质引发了关于内部攻击的阴谋论,Coinkite 曾公开讨论过这一点。在 2021 年 10 月,官方 COLDCARD 账户将“退休攻击”定义为“项目制造者可能在后续检索中存在熵生成的‘漏洞’的情景。”

关键的变化于2021年3月1日进入代码库,提交标题为“First pass w/ libNgU”(b18723dd)。该提交用新的库libngu替换了剩余的Trezor派生加密算法和BIP-39代码,并重新连接了种子生成。预期的结果是随机性调用解析为STM32硬件的真实随机数生成器。然而,错误将调用重定向到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 协议,以限制商业重用。重写工作量巨大,并且承载了复杂的工程目标;正是这种整合可以说留下了熵路径中的静默故障。

关于迁移离开 Trezor 加密库的怀疑早在 2021 年 4 月 7 日就出现了,来自 Coinkite Telegram 群组的一名成员写道:“我们真的想替换掉那段经过 Johoe 等白帽子严格审查的多年前的 TrezorCrypto 代码吗?并且被 wallet.fail 进行了渗透测试。”他补充道:“switch 可能是一个有才华的匿名编码者,但他们的提交历史糟糕。”然而,这一批评并不足以引起重视,很快就被 NVK 驳回,他批评 Trezor 库是一个“垃圾币的闹剧”。具有讽刺意味的是,与更广泛的加密市场共享该代码库,在开放许可证下意味着 Trezor 的加密库得到了比 Libngu 更深入的代码审查,即使在多年后也是如此。

Switch 和 Peter Gray 又名 Doc-Hex

引入该漏洞的加密库交换是由Coinkite的首席技术官Doc-Hex(也称为Peter D. Gray)推送到代码库的。他用一个鲜为人知的代码库Libngu替换了GPLv3 Trezor加密库,而这个Libngu是由所谓的“Switch”创建的,这个化名在创建Libngu之前没有明显的历史。Switch账户于2019年8月3日在X上出现,并提到了DEFCON,这是一年一度的国际黑客大会,通常会吸引各种网络安全工程师参加。

2020年10月16日,Switch在X上感谢Doc-Hex合并他的代码;“感谢合并 @DocHex … 我正在制作另一个比特币库。将来可能对 @COLDCARDwallet 有用。”几天后,Switch发推链接到Libngu,自豪地表示自己构建了一个“有用的东西”。

然而,这里变得奇怪。根据比特币核心贡献者James O’Beirne的研究,Switch和Peter D. Gray使用相同的GPG密钥签署了代码提交。O’Beirne通过GPG提交签名证明,作为switck创作的数十个提交是用Peter D. Gray的个人密钥签署的,他是Coinkite的联合创始人和CTO,同时也以DocHex的身份活动。Zach Herbert还声称,两个数字相同的电话号码与DocHex和switck的X账户有关(帖子)。其他研究人员指出了匹配的DNS注册模式。

截至目前,Gray 和 Coinkite 尚未公开回应 GPG 签名的发现,当被问及对此话题的评论时,他们也没有回应。Switch 账户至今仍然活跃,最近在 2026 年 8 月 17 日合并了对 Libngu 的代码更改。

比特币行业的许多人将此视为某种间接证据,表明存在不当行为。为什么要特意为某个特定的加密库创建一个化名?这被视为某种恶意意图的证据;然而,深入分析却提出了不同的看法。如果 Gray 真的是想通过这个 RNG 漏洞来欺骗 Coldcard 用户,他真的会用自己的 GPG 密钥签署提交吗?难道有人会如此狡猾,以至于隐藏一个漏洞多年,等待其被广泛采用;同时却忘记为这个临时化名创建一个专用的 GPG 签名?我认为这不成立。

更有可能的是,这是 Gray 在 DEFCON 上随机创建的一个身份,可能是出于一时的偏执。他在多年来的某些项目中继续使用这个身份。毕竟,在比特币开发者圈子中,使用化名的身份并不罕见。中本聪本人就是最著名的例子。因此,单凭 Gray 和 Switch 之间的这种联系,在追查 Coldcard 黑客时,似乎并没有太大意义。

MicroPython 贡献者

最近还有一些其他开源开发者被确认曾接触或影响了在Coldcard RNG漏洞中发挥作用的代码。

数据分析师LaurentMT检查了RNG路径的MicroPython部分。MicroPython是Python 3的一个精简开源实现,旨在运行在微控制器和资源受限的计算机上。由于该漏洞,Coldcard固件最终调用了MicroPython的Yasmarang伪随机数生成器(PRNG)回退,导致生成的熵低。

MicroPython中PRNG逻辑的代码更改始于2020年8月20日,GitHub上由一位名为‘mirko’的用户打开了问题(#6347)。他抱怨他的ESP32硬件在以某种方式调用‘random.choice()’函数时总是返回相同的结果。Mirko期望得到随机结果。GitHub问题记录了接下来几个月关于处理相关逻辑和预期行为的适当方式的讨论,Mirko透露该设计具有反直觉的特点。

Laurent指出,“robert-hh在2020年8月22日初始化了一个[Pull Request],实现了PRNG种子更改”。MicroPython的维护者Dpgeorge在2020年10月29日稍后合并了该拉取请求的稍微修改版本到主库,实现了“(UID+SysTick+RTC)以解决robert-hh解决方案中的一些限制。”

因此,当 Coldcard 将 MicroPython 的主代码库分叉以供 Libngu 使用时,这段与 RNG 相关的关键代码的更改已经在 MicroPython 的主代码库中,但在 MicroPython 正式发布该库的新版本之前。显然,在软件代码库的主版本上构建被认为是有风险的,因为主版本可能会随着代码更改而不断演变,而不是在官方的稳定发布版本上构建。MicroPython 的新版本直到 2021 年 2 月 3 日才发布,版本为 v1.14。更糟糕的是,RNG 逻辑的更改在发布公告中仅被简要提及,称“urandom 模块将在 stm32、esp8266、esp32 和 rp2 端口上导入时随机化其种子。”

来源:BitcoinMagazine