Coldcard 遭駭事件證明,聲譽不是安全模型
重點速覽
- •攻擊者透過 Coldcard 韌體漏洞,從 709 個以上地址中盜走近 1.14 億美元的比特幣;該漏洞生成的錢包種子隨機性不足,首次掃蕩在 25 分鐘內清空約 500 個錢包。
- •有缺陷的種子生成程式碼是在 2021 年 3 月的提交中引入的——也就是移除最後一段 GPL 授權程式碼的同一個提交——而且在超過五年的時間裡公開存在,卻沒有人發現。
- •Coldcard 在 2020 年底從 GPL 授權改為 Commons Clause 授權,原因是有競爭對手建立了基於其程式碼的產品;Commons Clause 自己的 FAQ 也明白指出,這樣的軟體不再是開源。
- •先前揭露 Coldcard 漏洞的 Shift Crypto、Nunchuk 與 WalletScrutiny 研究人員,曾遭 Coinkite 執行長 Rodolfo Novak 公開嘲諷、質疑專業性,並受到法律訴訟威脅;作者認為這種做法抑制了獨立審查。
- •作者警告,更新韌體無法修復在脆弱版本中生成的種子,而這起漏洞已引發比特幣自我託管領域更廣泛的信心危機。

Coldcard 遭駭事件證明,聲譽不是安全模型
Foundation 執行長 Zach Herbert 寫道,一個建立在驗證之上的社群,卻花了五年時間把判斷外包給一個人。
攻擊者如今已利用 Coldcard 韌體漏洞,從 709 個以上地址 中盜走近 1.14 億美元的比特幣。該漏洞產生錢包種子時,只用了其原本承諾隨機性的一小部分。首次掃蕩在 25 分鐘內清空約 500 個錢包。這個錯誤於 2021 年 3 月進入程式碼庫,並在公開的開源視野中存在了五年多,提醒人們:程式碼可見,不代表程式碼已被審查。
很多人都在解釋發生了什麼;更難的問題是,為什麼沒有人發現它——而答案牽涉的不只是一行程式碼。
這個漏洞在公開環境中存在了五年
Coldcard 的原始碼一直都可供檢視。只有在具備資格的人真的去看時,「不要信任,請驗證」才會生效,而五年來,實際上幾乎沒有人這麼做。
圍繞漏洞引入的時間線值得注意。2020 年,Coldcard 的韌體採用 GPL 開源授權。競爭對手在兩天後宣布一款建立在該 GPL 程式碼上的裝置後,Coinkite 執行長 Rodolfo Novak(又名 NVK)在公開場合表示(於一則已刪除的推文中),他後悔選擇 GPL。當年 11 月,Coldcard 採用帶有 Commons Clause 的新授權,而 Commons Clause 自己的 FAQ 也明白指出,這樣的軟體已不再是開源軟體。
隨後出現大規模重寫,而 2021 年 3 月刪除最後 GPL 程式碼的提交,正是破壞種子生成的同一個提交。沒有人能衡量授權壓力在多大程度上影響了這次重寫的範圍或速度,而且這次改造也有合理的技術目標。但已知事實已足夠狹窄且同樣嚴重:為了限制競爭對手而進行的授權變更,先於一場倉促替換、且經過實戰驗證的密碼學程式碼,而替換後的程式碼正包含了如今正在盜取錢包的缺陷。在安全敏感軟體中,改變授權、程式碼所有權或發布流程的變更,與程式碼路徑本身同樣重要,因為它們會影響最終結果能被多少雙眼睛檢視。
自由與開源軟體的原則,正是為了讓安全不依賴任何一家公司的選擇。這些原則不能因為某個人的名氣而例外。
Zach Herbert 是 Foundation 的共同創辦人兼執行長。
研究人員學會了不要去看
更深層的失敗,在於那些真的去看的人後來遭遇了什麼。2020 年 8 月,來自 Shift Crypto 與 Nunchuk 的研究人員揭露了 Coldcard 的一項多重簽章驗證漏洞。Coinkite 承認了這個錯誤並發布修補;與此同時,NVK 在 Citadel Dispatch 播客 上把這次揭露稱為「PR terrorism」,並質疑沒有 CVE 的研究人員是否算專業。2023 年,當 WalletScrutiny 專案回報無法重現較舊版本的 Coldcard 建置時,回應將該專案描述為無能或惡意,並暗示提起訴訟(後續貼文)。後續的獨立驗證後來發現,較舊版本確實存在重現問題,並得出沒有人出於惡意行事的結論。
每一次對研究人員的公開攻擊,都會改變下一個人的計算方式。獨立審查既緩慢、困難,通常也沒有報酬。當研究人員衡量數月的工作與被嘲諷、被封鎖、面臨法律威脅的可能性時,往往會把時間用在別處。沒有人能證明這種文化導致熵值漏洞未被發現,但可以確定的是,安全依賴人們願意去看,而 Coldcard 周邊的環境懲罰了「去看」這件事。
聲譽成了證據
一個以「不要信任,請驗證」為創立口號的社群,怎麼會走到這一步?心理學對此有名稱:虛假真實效應會讓重複出現的說法,即使都源自同一個來源,也會讓人感覺像是被獨立驗證過;光環效應則會把地位、自信與熱門產品,轉化為被預設的技術權威。年復一年,同樣的說法在同樣的播客與資訊流中流傳:批評者是帶貨槍手,研究人員是恐怖分子,競爭者是複製品。重複取代了原本該由證據完成的工作,而自信成了證明的替代品。
這種結果最適合被描述為認知捕獲:一個社群逐漸把判斷外包給受信任的權威,直到權威本身成了證據。BTC Sessions 主持人 Ben Perrin 在近期一場直播中對這個機制做了罕見坦白的描述,承認自己對相關行為睜一隻眼閉一隻眼,因為他以為那種自負同時也包裝著更強的創造與保護能力。產業內很多人都做了同樣的判斷。如今在自我託管領域擴散的信心危機,正是這筆帳開始到期。
驗證所有人
在這次漏洞事件之後,整個產業的首要任務是用戶:傳播遷移指引,並明確指出,更新韌體無法修復在脆弱版本中生成的種子。接下來,產業還有幕後工作要做。舊的推薦頁、節目筆記和產品指南,承載著多年來不斷被轉述、卻未經查證的說法,應當附上原始來源進行更正。那些遭受攻擊的建設者與研究人員,應得到足夠的發聲空間來說明他們的工作。比特幣媒體也需要重新恢復對立性,對朋友、贊助商與廣告主採取與對陌生人相同的審視。
比特幣的設計假設是專家與機構終將失敗,而它的答案是透過驗證,讓信任變得不必要。建立這套原則工具的社群,卻讓自己最響亮的聲音脫離了這套原則。現在要做的修正,就是回到創始時的指令,而且這次不偏袒任何人。不要信任供應商。不要信任供應商的批評者。請驗證。
註:本專欄所表達的觀點僅代表作者本人,未必反映 CoinDesk, Inc. 或其所有者與關聯公司的觀點。