新聞加密貨幣閉源時代的終結:模糊從來不是安全

閉源時代的終結:模糊從來不是安全

作者: Bitcoin Magazine·

重點速覽

  • Coldcard 硬體錢包中的預處理器漏洞將種子熵值降至約 40 位元,使攻擊者能夠利用消費級硬體列舉可能的種子,並在約 4,585 個地址中竊取了近 9,000 萬美元。
  • 該漏洞於 2021 年 3 月引入,在公開可讀的韌體中存在超過五年而未被人工審查發現。
  • 研究人員已展示多個前沿 AI 模型能在幾分鐘內從單一提示中識別出相同的熵缺陷,凸顯了 AI 在程式碼漏洞分析方面日益增長的能力。
  • 作者論述,隨著 AI 驅動的逆向工程變得更快、更普及,閉源軟體和分散式產品中的商業機密所提供的保護正在遞減。
  • 防禦者相對攻擊者仍保有結構性的時間優勢,應在發布前將前沿 AI 模型應用於自己的程式碼,實施可重現建置,並將金鑰分散到獨立的實作中。
閉源時代的終結:模糊從來不是安全

過去幾天,遵循了所有推薦安全做法的 Bitcoin 持有者仍然損失了他們的資金。他們購買了備受信賴的硬體簽署器,在該裝置上離線產生了種子短語——這是建立 Bitcoin 金鑰的標準 BIP39 方法,旨在編碼 128 至 256 位元的隨機性——並依賴它來履行簽署器存在的唯一最關鍵功能:產生一個沒有其他人能猜到的數字。

Coldcard 硬體簽署器未能做到這一點。一個檢查了錯誤條件的預處理器防護,悄悄地將種子生成引導至一個微弱的軟體偽隨機數產生器——MicroPython 的 Yasmarang——而非裝置的硬體熵源。在某些 Coldcard 型號上,有效熵值崩塌至約 40 位元——大約一兆個可能的種子,這個搜尋空間小到可以用消費級硬體進行列舉,比預期的安全等級減少了超過 200 位元。該缺陷於 2021 年 3 月引入,並在公開可讀的韌體中存在了超過五年。

在根本原因被釐清之前,攻擊者已掃描了 500 個地址。幾天內,Galaxy Research 的統計數字已達到 4,585 個地址,損失近 9,000 萬美元。截至本文發布日期,攻擊仍在進行中。

Coldcard 的製造商 Coinkite 的工作假設——在 X 上獲得了廣泛認同——是攻擊者利用 AI 梳理了公開可得的韌體來發現該漏洞。無論這次具體攻擊是否使用了 AI,下一個攻擊者幾乎肯定會使用。值得注意的是,在盜竊發生前幾週進行的一次 AI 輔助審計什麼也沒發現,這可能是由於模型的能力限制或搜尋的特定構建方式。自攻擊開始以來,研究人員已展示多個前沿 AI 模型能在幾分鐘內從單一提示中定位到相同的缺陷。

這段程式碼對人類審查開放了五年,沒有任何人類發現它。

改變了什麼都沒有的授權變更

Coinkite 此前已將其韌體從自由軟體授權轉為原始碼可檢視條款——具體來說是帶有 Commons Clause 的 MIT 授權——起因是 Foundation Devices 將該程式碼整合到一款競爭產品中。在修訂後的條款下,使用者可以閱讀原始碼,但不能基於它建立商業業務。

這一變更對安全性沒有任何影響。該漏洞存在於無論授權限制如何機器都能讀取的程式碼中。事實上,它正是在移除最後殘留的 GPL 授權程式碼的那次重寫中進入程式碼庫的。授權的修改並未增強保護;它只是改變了發現漏洞的經濟學。

閉源的幻覺

在 AI 能力日益增強的時代,所有被分發的東西都是可讀的——或者很快就會是。將二進位檔案剝離符號並通過反編譯器處理,會產生任何打開過 Ghidra(一套廣泛使用的逆向工程工具套件,最初由美國國家安全局(NSA)開發)的人都熟悉的偽 C 語言輸出:無名變數、平坦化的控制流程、標記為 FUN_00401a20 的函式。對大多數人來說,這種輸出是無法閱讀的。這道人類理解的高門檻,就是「閉源」全部的安全溢價。

然而,編譯後的程式別無選擇,只能說出真相。保持加密的程式碼無法運行。在執行的那一刻,處理器必須接收實際的指令,因此無論程式做什麼,它都向機器提供了完整且精確的操作說明。資訊完全存在於機器碼中。混淆並未、也無法將其移除。

如果閱讀二進位檔案對機器來說在不久的將來仍顯得過於困難,請考慮它們在更困難的問題上已經取得的成就。閱讀二進位檔案是一種分析練習:所有必要的事實都在眼前,工作是提取。數學發明則完全是另一個難度等級,因為它要求創造一個前所未有的物件。

7 月 20 日 UTC 時間 02:19,與 Anthropic 的 Claude Fable 5 合作的數學家 Levent Alpöge,發布了 Keller 雅可比猜想的一個反例——這是一個自 1939 年以來一直未解的問題,其重要性足以列入 Stephen Smale 的二十一世紀挑戰清單。好幾代的數學家都嘗試過。該反證由三個三變數多項式組成。Lean 在數小時內驗證了它,而且它簡短到任何人都能在電腦代數系統中約一分鐘內確認。

雅可比猜想在一個下午就倒下了,而提問者顯然正在觀看 FIFA 世界盃決賽。5 月,一個 OpenAI 模型推翻了 Erdős 單位距離猜想,一個自 1946 年以來未解的問題。7 月下旬,一個懸而未決 30 年的圖論猜想被四個提示推翻。在這些里程碑之間,還有雅可比猜想的反證和一系列存續數十年的其他結果。

將這種進步速度與閱讀已發布在網際網路上的機器碼這項相對 modest 的任務進行比較。今天的模型處理原始碼和反編譯器輸出的效果優於原始位元組,因此完全閉合的二進位檔案只保留了極薄的保護餘地。這個餘地充其量只是一個成本減速帶,而它正以你在其他所有領域都能看到的相同速度被侵蝕。將安全性押注於它能維持多久,意味著與一個只會加速的時鐘對賭。

更安靜的受害者:商業機密

同樣能找到熵漏洞的 AI 能力,也能閱讀專有方法。這是更安靜的受害者,它影響的是那些從未認為自己會暴露在開源動態下的公司。已發布軟體中的商業機密從來不過是穿上正式外衣的模糊性。

法律一直以來都承認這一點,只要商業機密法存在就如此。對你合法擁有的產品進行逆向工程是正當行為,因此一個秘密只能在逆向工程仍然昂貴時存活。當提取成本降至一次訂閱和一個提示的價格時,嵌入在你交付給客戶的程式碼中的秘密就不再是秘密了。專有演算法、未公開的格式、嵌入二進位檔案中的競爭優勢——所有這些都變得對任何想看的人清晰可讀,時間線 increasingly 以分鐘計量。

開源不是保證

以上這些並不一定使開源變得安全。Heartbleed 在全球部署最廣泛的 TLS 程式庫中隱藏了兩年,因為沒有資金支持的關注什麼也發現不了。xz 後門表明,開源貢獻模式本身就是一個攻擊面——一個耐心的對手可以用友善的面孔和兩年的正當提交來穿越。

開放曾經是一面盾牌,但它不再是了。它所能提供的是被允許審查程式碼的審查者、可以獨立重現和驗證的建置、當供應商倒閉或轉向時的退出策略,以及對這一切都會發生的承認——無論你是否喜歡。

防禦者的優勢

我們現在必須假設每一行發布的程式碼都會被有意造成傷害的人閱讀,因為它確實會。防禦者擁有攻擊者永遠不會擁有的一項結構性優勢:時間。開發者可以在發布前,在提交與交付之間的間隔期內,將同樣的前沿模型應用於自己的程式碼,而攻擊者則在等待一個尚不存在的二進位檔案。

建置應該做到可重現——這意味著任何人都可以編譯相同的原始碼並驗證產生的二進位檔案與交付的內容逐位元組一致——這樣每個二進位檔案都能追溯到可以獨立檢查的原始碼。系統應設計為故障時關閉,且可信核心應保持足夠小,使得單一漏洞無法危及一切。

對於專門持有 Bitcoin 的人來說,Coldcard 正在即時傳授的教訓很清楚:掌控你承受不起被猜測的熵值,保持安全元件最小化並置於公開介面之後,並將金鑰分散到獨立的實作中——這樣就不會有任何單一裝置或任何單一供應商的錯誤構成你全部的風險暴露。

永久後果

對 Bitcoin 來說,後果是毫不留情的,這一點與其他領域不同,因為僅僅知道私鑰就授予了資金的完全所有權。熵漏洞留下了永久的傷疤。修補產生器對它已經產生的種子毫無幫助;微弱的金鑰空間永遠可以被掃描,而披露則將配方交給了攻擊者。

這種模式以前就出現過。libbitcoin 瀏覽器工具 bx 中的 Milk Sad 漏洞從一個 32 位元的值產生私鑰,攻擊者在該缺陷被公開披露之前就已經在抽取它所產生的錢包。攻擊者按照自己的時間表行事,無論是否受邀。對於一旦花費就無法追回的資金來說,「最終可被找到」就是「最終會消失」的同義詞。

Bitcoin 已經確立的標準

Bitcoin 從不依賴模糊性。協定是開放的,其規則可由任何人驗證,其安全性不建立在秘密之上,而是建立在數學和激勵機制上,這些在完全公開的視野中依然成立。圍繞它構建的硬體和軟體應當值得同樣的標準,因為替代方案已不再可行。

選擇從來不是開源與閉源之間。而是紀律與暴露之間。

Coldcard 事件的更深層教訓是,閉源軟體就像由壞掉的 Coldcard 產生的種子:它可能看起來完好,但根基根本是建立在沙子上的。每個人都能閱讀程式碼。唯一剩下的問題是,開發者是自願承認這一事實——還是他們和他們的使用者像 Coldcard 的使用者一樣,一個地址接一個地址地被抽空來學到這個教訓。

*本文為客座文章,作者 Colin Crossman 是 Fedi 的內容製作人。表達的觀點完全為其個人觀點,不一定反映 BTC Inc 或 Bitcoin Magazine 的立場。本文首發於 Bitcoin Magazine