加密貨幣錢包的安全基石在於隨機性。最近安全公司 Coinspect 揭露了一個名為 Ill Bloom 的漏洞,導致超過 500 萬美元的資產被盜。這個漏洞的核心不在於駭客攻破了區塊鏈,而是在於部分錢包軟體在生成恢復短語時,使用了品質低劣的隨機數生成器。
對於初入行的工程師來說,理解這個漏洞需要先從種子金鑰的運作機制講起。
什麼是種子金鑰與隨機性
大多數自託管錢包(Self-custody Wallet)在初始化時會產生一組 12 或 24 個單字,這就是種子金鑰(Seed Phrase 或 Recovery Phrase)。從技術層面看,這組單字其實是將一個極大的隨機數字(熵,Entropy)透過特定演算法轉換而成的文字表示法。
理論上,這個隨機數的範圍極其巨大,導致駭客即便使用全球最強的運算能力,也幾乎不可能透過暴力破解(Brute Force)猜出你的金鑰。然而,Ill Bloom 漏洞的問題就在於隨機數生成器(Random Number Generator, RNG)失效了。
隨機數生成器的失效如何導致資產被盜
當錢包軟體使用的 RNG 缺乏足夠的隨機性時,原本天文數字般的可能性範圍會被大幅縮小。這就像原本應該從一百億個號碼中抽籤,結果因為程式碼缺陷,導致隨機數只會在其中一千個號碼中循環。
駭客發現了這個缺陷後,採取了以下攻擊路徑: 首先,他們重建了該缺陷 RNG 的所有可能輸出結果。 接著,將這些可能的隨機數轉換成對應的種子金鑰,再進一步推導出對應的錢包地址。 最後,將這些地址與區塊鏈上的公開數據比對,只要發現哪個地址裡面有錢,就直接使用推導出的金鑰將資產轉走。
這種攻擊方式不需要與用戶互動,也不需要透過釣魚網站,只要你的錢包是用該缺陷版本生成的,你的資產在區塊鏈上就等同於裸奔。
受影響範圍與實務影響
根據 Coinspect 的調查,此次受影響的主要是較舊或較冷門的行動 App 以及瀏覽器擴充功能(部分可追溯至 2018 年)。值得注意的是,硬體錢包(Hardware Wallet)以及大多數主流的軟體錢包並不受影響,因為它們使用了更成熟的隨機數生成標準。
此次攻擊呈現出高度的協同性。駭客在短時間內從數百個互不相關的錢包中抽走資金,並將其匯集到少數幾個收集地址中。即便某些錢包內金額較低(例如低於 5 美元)而暫時被駭客忽略,但其金鑰依然處於洩漏狀態,未來任何存入該錢包的資金都會立即被盜。
工程實務上的對策與建議
如果你或你的用戶使用了受影響的錢包,單純地重新安裝 App 或將舊金鑰匯入新軟體是完全沒有用的,因為問題出在金鑰本身的基因(隨機性)已損壞。唯一的解決方案是:
第一,生成一個完全新的錢包。這意味著必須由一個健康的 RNG 產生一組全新的 12 或 24 個單字。 第二,將所有資產從舊地址轉移至新地址。 第三,徹底廢棄舊的金鑰。
此外,在處理此類安全危機時,必須警惕二次詐騙。許多詐騙者會利用漏洞恐慌,要求用戶提供私鑰或種子金鑰來幫忙恢復資金。在區塊鏈的世界裡,任何要求你提供私鑰或種子金鑰的服務百分之百都是詐騙。
總結:隨機性即安全
Ill Bloom 並非首個此類案例,過去曾有類似的漏洞如 Milk Sad 或 Randstorm。這提醒了開發者,在處理加密金鑰生成時,絕對不能依賴語言內建的簡單隨機函數,而必須使用符合密碼學標準的加密安全隨機數生成器(CSPRNG)。
當隨機性消失,金鑰就失去了保護能力。對於使用者而言,選擇經過審計的主流錢包或使用硬體錢包,是降低此類底層實作風險的最佳手段。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。