追查 Coldcard 駭客:第一波竊案嫌犯可能已為 FBI 所知
重點速覽
- •Coldcard 外流事件的第一波在 2026 年 7 月 30 日轉走了 1,082.65 BTC,而這些資金至今尚未從攻擊者地址移動。
- •Block 表示,其調查將這些清洗行為連到區塊鏈服務供應商的一個付費帳號,而該供應商的日誌與請求模式呈現異常精確的吻合。
- •截至 8 月初,多波事件的已確認與估算損失已超過 1,800 BTC,涉及超過 5,000 個地址,且已確認被盜金額約為 1.18 億美元。
- •漏洞源自 Coldcard 韌體中的種子生成熵值失效,影響範圍包括韌體 4.0.1 及之後版本、甚至可追溯至 MK2 等較舊裝置。
- •研究者表示,後續某些波次呈現不同的操作行為,暗示在公開揭露後,可能還有其他行為者利用同一弱種子空間。

執法單位可能已知道,是誰在 2026 年 7 月外流事件的第一波、也是最大一波中,從 Coldcard 錢包中清空了超過 1,000 枚 bitcoin。Block 的調查表示,他們已將攻擊者在鏈上的清洗行為追溯到一家大型區塊鏈資料供應商的付費帳號,而該供應商的內部日誌與這起盜竊模式呈現「異常精確」的吻合。
PSA: 這起攻擊仍在進行中,目標是使用舊至 MK2、且韌體為 4.0.1 及之後版本的裝置所生成的弱私鑰。如果你可能持有相關裝置,請務必再次檢查並盡快轉移資金。請參閱 Coinkite 公告 與 狀態頁面。
那第一波被轉出的資金——1,082.65 BTC——至今仍未在攻擊者地址中被動用。這意味著受害者仍有可能追回至少部分被盜資金。現在的關鍵問題是,駭客究竟是誰,以及這條線索指向的是技術高明的外部攻擊者,還是更接近 Coinkite 曾經警告過的內部「退休攻擊」。
這件事的影響不僅限於 Coldcard 使用者。由 Coinkite 製造的 Coldcard 裝置,是市場上較知名、用於自我託管 bitcoin 的硬體錢包之一;其私鑰在離線環境中生成與儲存,而非放在連網伺服器上。用於生成這些私鑰的隨機性若出現缺陷,會直接動搖這種模式的基礎。
我們目前知道什麼
2026 年 7 月 30 日,一名攻擊者開始系統性地清空 Coldcard 硬體錢包中的 bitcoin,而這些錢包所生成的種子是在存在漏洞的韌體下產生的,這個漏洞多年來一直未被發現。第一波、也是最大一波,轉走了 1,082.65 BTC。隨後又出現多波,估計總量超過 2,000 BTC。Galaxy Research 的 Alex Thorn 透過鏈上模式分析與受害者自願回報追蹤這些活動。到了 8 月初,多波事件的已確認與估算損失已超過 1,800 BTC,來自超過 5,000 個地址;不過,隨著新回報持續出現,最終總數仍在修正中。以美元計算,已確認被盜金額約為 1.18 億美元。
Thorn 曾公開表示,執法單位可能已經掌握了這筆最大批次背後操作者的具體線索。在 Bitcoin Magazine YouTube 頻道上、由 Bitcoin Policy Institute 主持的一段節目中,Thorn 表示:「第一波的身分、攻擊者身分,可能已經為執法單位所知。」他補充說,Wave 1 仍是目前已識別出的最大單一批次,相關資金仍留在攻擊者地址中;他也指出,Wave 2 的模式看起來相似到足以可能涉及同一名行為者。Wave 2 又增加了大約 76 枚 bitcoin。
關於駭客身分可能已知的主要線索,來自負責 Bitkey、任職於 Block 的工程主管 Clay Garrett。2026 年 7 月 31 日,Garrett 公布了 Block 調查的發現:
「在昨天對 Coldcard 資金外流事件的調查中,我們在清洗行為中發現了一個異常模式。該模式讓我們形成了一項假設,而這項假設後來已被確認:操作者在清洗過程中,使用一家知名區塊鏈服務供應商的付費帳號,查詢來源地址並進行其他相關活動。」
「我們已直接聯繫該供應商。他們的內部日誌與我們推測的工作流程以異常精確的方式相符,包括請求的數量、時間與順序。該供應商是在回應未揭示其更廣泛目的之請求時,提供其標準服務。我們沒有看到任何證據顯示該供應商明知或參與、協助了這起疑似盜竊。」Garrett 說,並補充:「我們正在把相關資訊分享給適當的當局。待這麼做不會干擾調查時,我們會提供進一步更新。」
對調查人員而言,這項發現之所以重要,是因為它跨越了通常把鏈上盜竊與現實世界身分區隔開來的那道鴻溝:這些清洗行為綁定到一個付費帳號,而該帳號的請求日誌——查詢的數量、時間與順序——由供應商留存,形成了一條鏈下書面痕跡,Garrett 表示 Block 現正將其提供給適當當局。
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 bits,在較新型號上約為 72 bits。這代表所生成的 bitcoin 私鑰在現代運算硬體下幾乎可被猜測。作為對照,正確生成的 Bitcoin 種子通常應具備 128 到 256 bits 的熵值,因此降至約 40 bits 會讓攻擊者需要搜尋的空間縮小好幾個數量級——差別就像幾乎無法猜測的金鑰,變成可被直接枚舉的金鑰。
這次加密函式庫的替換,是由 Doc-Hex,也就是 Coinkite 的技術長 Peter Gray 推進到程式碼庫中的。
根據 Foundation Devices 執行長兼創辦人 Zach Herbert 的說法,這個變動可能是受到授權條款壓力所驅動;不過,Coinkite 已否認授權是這次程式碼變更的主要動機,並表示:「COLDCARD 必須做出這項改動,以遷移到 libsecp256k1;授權變更與此無關。libsecp256k1 是 Bitcoin Core 使用的標準函式庫。」
Coldcard 原本在 GPLv3 開源授權下使用 Trezor 衍生程式碼。Foundation Devices 分支出相關材料後,Coinkite 試圖把剩餘元件移轉到更具限制性的 MIT + Commons Clause 安排,以限制商業再利用。這次重寫規模龐大,且具有複雜的工程目標;正是這次整合,可能留下了熵值路徑中的靜默失效。
對於這次從 Trezor 加密函式庫移轉的疑慮,早在 2021 年 4 月 7 日便已出現。當時 Coinkite Telegram 群組的一名成員寫道:「我們真的想把那段存在很多年的 TrezorCrypto 程式碼替換掉嗎?那段程式碼已被像 Johoe 這樣的白帽仔細審視,還經過 wallet.fail 的滲透測試」,並補充說:「switch 也許是個有天分的匿名程式設計師,但他的 commit 紀錄很糟。」然而,這些批評很快被 NVK 直接帶過;他把 Trezor 函式庫稱為「shitcoin shitshow」。諷刺的是,將那個開源程式碼庫暴露給更廣泛的加密貨幣市場,反而意味著 Trezor 的加密函式庫所獲得的程式碼審查,遠比 Libngu 在多年後能得到的還要深入。
Switch 與 Peter Gray,亦即 Doc-Hex
導致這個 bug 的加密函式庫替換,是由 Coinkite 技術長 Peter D. Gray,也就是 Doc-Hex 推進的。他以 Libngu 取代了 GPLv3 的 Trezor 加密函式庫;Libngu 是一個知名度不高的程式碼庫,由名為「Switch」的化名所建立,而在 Libngu 出現之前,這個化名看不出明顯的既有歷史。
Switch 帳號首次出現在 X 上,是 2019 年 8 月 3 日,內容提到 DEFCON——一個國際駭客會議,通常會有各類資安工程師出席。2020 年 10 月 16 日,Switch 在 X 上感謝 Doc-Hex 合併他的程式碼:「Thanks for merge @DocHex … I’m making yet another bitcoin library. Could be useful on @COLDCARDwallet someday.」幾天後,Switch 又貼出 Libngu 連結,表示自己做出了一個「useful thing」。
然而,事情奇怪的地方在這裡。根據 Bitcoin Core 貢獻者 James O’Beirne 的研究,Switch 與 Peter D. Gray 似乎使用了相同的 GPG 金鑰簽署程式碼提交。O’Beirne 透過 GPG commit signatures 證明,數十筆以 switck 名義撰寫的 commit,是由 Peter D. Gray 的個人金鑰所簽署;Peter D. Gray 是 Coinkite 的共同創辦人兼 CTO,同時也以 DocHex 身分運作。Zach Herbert 也聲稱,尾號相同的電話號碼與 DocHex 和 switck 兩個 X 帳號相關聯(貼文)。其他研究者則指出,相關 DNS 註冊模式也相互吻合。
截至本文撰寫時,Gray 與 Coinkite 均未公開回應這些 GPG 簽章的發現,也沒有在被要求評論時做出答覆。Switch 帳號至今仍在活動,並且最近一次合併 Libngu 的程式碼變更是在 2026 年 8 月 17 日。
比特幣業界中有不少人把這視為某種間接的不當行為證據。但單憑這項連結,並不足以定論。如果 Gray 真的打算利用這個 RNG bug 來坑害 Coldcard 使用者,那他為何還會用自己的個人 GPG 金鑰簽署 commit?一個隱藏多年、等待擴散採用的 bug,似乎也與用可追蹤方式建立一次性化名不相符合。化名身份在 Bitcoin 開發者圈並不罕見,Satoshi 就是最著名的例子。就其本身而言,Gray 與 Switch 的連結,似乎不足以終結對 Coldcard 駭客的追查。
MicroPython 貢獻者
還有一些其他開源開發者,近期也被辨識為曾接觸或影響到與 Coldcard RNG bug 有關的程式碼。
資料分析師 LaurentMT 已檢視 MicroPython 在 RNG 路徑中的部分。MicroPython 是一個輕量、開源的 Python 3 實作,設計用於微控制器與資源受限電腦。由於這個 bug,Coldcard 韌體最終呼叫了 MicroPython 的 Yasmarang 偽隨機數生成器備援,導致低熵生成。
MicroPython 中 PRNG 邏輯的程式變更始於 2020 年 8 月 20 日,當時一名名為「mirko」的使用者在 GitHub 開啟了 issue #6347。他抱怨自己的 ESP32 硬體在以某種方式呼叫 random.choice() 時總是回傳相同結果,而他原本預期應該得到隨機結果。這個 issue 在接下來數月引發了關於正確邏輯與預期行為的討論,而 Mirko 指出,這種設計其實相當反直覺。
Laurent 指出,2020 年 8 月 22 日,「robert-hh 初始化了一個實作 PRNG 種子變更的 [Pull Request]」。之後在 2020 年 10 月 29 日,MicroPython 維護者 dpgeorge 將該 pull request 的稍作修改版本合併進 master repository,實作了「(UID+SysTick+RTC) 以解決 robert-hh 解法的一些限制」。因此,當 Coldcard fork 這段程式碼並用於 Libngu 時,相關的 RNG 程式碼已在 MicroPython 的 master repository 上,但 MicroPython 尚未釋出正式的新版本。
這點很重要,因為以 repository 的 master 分支為基礎進行開發可能有風險:程式碼仍在演進,而非像正式穩定版那樣固定。MicroPython 的下一個版本直到 2021 年 2 月 3 日才發布,即 v1.14。即便如此,這次 RNG 變更在發布公告中也只被簡短提及,內容寫道:「the urandom module will randomize its seed on import on stm32, esp8266, esp32 and rp2 ports.」
Laurent 在接受 Bitcoin Magazine 訪問時明確表示:「如果沒有這項修改,Coldcard 程式碼中的 bug 會立刻被偵測到。」他也評論這一連串事件,說:「這段時間線中有很多『巧合』」,並補充:「雖然它們不能證明任何事,但我不明白為什麼官方調查可以完全忽略它們。」
需要注意的是,沒有證據顯示上述任何開發者是刻意透過這些變更引入 Coldcard RNG bug。最終,負責實作這段關鍵程式碼的,是硬體錢包公司 Coinkite。MicroPython 也是一個大型、廣泛使用的開源專案。即便如此,這整個事件序列,至今仍可被稱為一場悲喜交織的錯誤連鎖。
為何內部作案看起來不太可能
有幾個因素削弱了「這是一場經過長期策畫的內部退休攻擊」的說法。首先,switck 這個身分的隔離做得很差;共享的 GPG 金鑰與其他重疊之處,使研究者一旦著手調查,便相對容易將其歸因為 Doc-Hex,也就是 Peter Gray。這個帳號多年來也幾乎已被棄置。與此同時,MicroPython 的貢獻者是在一個高能見度專案中公開作業。
Hodlonaut 的 Citadel21 調查與其他技術審查,都沒有發現熵值失效是刻意造成的明確證據。工程師 Alekos Filini 的技術報告明確寫道:「My goal is to purely present facts and NOT make any conclusions.」Wizardsardine 的技術屍檢則描述了多個防護機制失敗,並指出失效發生在「across a submodule boundary, which is precisely where reviewers stop looking」。Steven Geller 的技術深度分析也沒有對此事做出強烈定論。DK27ss 對這個 bug 的概念驗證重建,則將問題描述為「a chain of four flaws, each harmless in appearance」。
如果這些外流真的是典型的內部退休攻擊,或某種長線詐局,今天的討論大概會完全不同。比特幣業界上一次看到重大的長線詐局駭案,可能是 QuadrigaCX——這家加拿大中心化交易所的創辦人 Gerald Cotten,於 2018 年在失蹤資金被發現後不久,便在神祕情況下被報導為「dead in India」。安大略證券委員會指控創辦人在多年內挪用交易所用戶將近 1.7 億加幣的存款,之後人間蒸發。
相較之下,Coinkite 的管理層仍公開活躍。他們對這次事件做出回應、推送修補韌體、協助用戶遷移,並參與技術細節討論。其創辦人與營運者至今仍在經營公司,並未在資金失蹤的同時消失。
與此同時,Wave 1 的資金——超過 1,000 BTC——仍集中在三個地址中,被數百名工程師以及很可能包括 FBI 在內的執法單位監看。若 Coinkite 真的在進行一場「5D chess」式的退休攻擊,他們在竊取資金時本該更為謹慎;他們不會把資金集中到少數幾個很容易追蹤的地址,而其創辦人也大概不會在場討論此事。
現在,幾個未解問題正在定義後續發展:Wave 1 資金是否會離開這三個被監看的地址;截至本文撰寫時,Gray 或 Coinkite 是否會公開回應 GPG 簽章的發現;以及在 2021 年到 2026 年 7 月修補之間生成、但仍具風險的那些種子的擁有者,是否會在後續波次的機會主義者搶先之前,把資金遷走。
目前尚無最終結論,調查很可能還會持續多年。就目前而言,證據指向的是 Bitcoin 極簡主義與自我託管社群的一次文化性失敗、對良好開源衛生缺乏廣泛教育,以及回頭看時 Coinkite 早期領導層的過度自信。
本文最初刊載於 Bitcoin Magazine,作者為 Juan Galt。