作者:Tal Be\’ery
資料來源:https://zengo.com/bitcoin-is-a-dark-forest-too/
翻譯:白話區塊鏈
Zengo 的研究人員揭示了惡意機器人在監控比特幣區塊鏈上存在的不安全隨機地址,並立即利用它們進行盜竊,造成了數百萬美元的損失—— 其中之一發生在2023 年11 月23日。
作為Zengo X 在區塊鏈安全領域持續研究的一部分,我們調查了最近失去的139 枚比特幣的案例,約合當時的550 萬美元。我們並不知道,透過這樣做,我們打開了比特幣黑暗森林的潘朵拉魔盒。
在2020 年,Paradigm 的研究人員Dan Robinson 和Georgios Konstantopoulos 發表了一篇具有重要影響力的博文,名為“以太坊是一個黑暗森林”:揭示了潛伏在以太坊內存池黑暗中的機器人,監視待處理交易,並試圖利用它們所創造的有利機會。
今天,我們揭示了這種現像不僅局限於以太坊區塊鏈,還適用於比特幣區塊鏈(可能也適用於許多其他區塊鏈)。
1、這起過高費用的案例
在11月23日,一筆比特幣交易引起了比特幣分析師的注意。這筆交易創下了支付費用的紀錄,支付了超過300萬美元(83比特幣)的費用,用於轉移價值200萬美元的比特幣。
儘管對於這些過高的費用(通常費用應該低於10美元)的即時解釋是將其歸咎於某種手動輸入錯誤,就像過去發生的情況一樣,但很快有用戶在X(之前的Twitter)上聲稱他們是原始所有者,並以某種方式被黑客攻擊。
X帳戶所有者透過使用相關的私鑰進行簽名,在密碼學上證明了他們實際擁有比特幣地址。
2、我們的調查開始了
當我們開始更深入地調查這筆過高費用交易時,出現了一些更微妙但有趣的事實。
標註的交易(來源:mempool.space)
上述顯示了一些有趣的見解:
CPFP:即“Child Pays For Parent”,意味著這筆交易的輸入是另一個未確認交易的輸出。在這種情況下,這意味著在第一筆交易在記憶體池中等待的同時,發生了這筆過高費用的交易。根據探索器的數據,實際上是在前一筆交易的同一分鐘發送的。費用正好是總花費的60%(83.65 / 139.4),因此不太可能是輸錯了,而可能是某種自動操作的結果。
RBF 停用:交易發送者停用了「Replace By Fee」(RBF)的選項,或禁止其他交易使用更高的費用覆蓋此交易。此外,另一個X 用戶注意到,最初有多個候選的過高費用交易,透過支付更高的費用相互替換(在探索器中已經看不到了,因為被替換的交易資訊在短時間內就被清除了)。
3.實際情況:先假設一下
根據數據,有多種可能的假設來解釋這筆過高費用交易:
原始所有者由於輸錯了而支付了過高的費用:在X 上所有者的聲明只是為了保全面子,因為聲稱被黑客攻擊聽起來更可接受,而不是承認自己笨拙。
注意:這似乎不太合理,因為這筆交易是在前一筆交易仍在內存池中的情況下發送的(見上文的CPFP),這需要技術專業知識,而且費用的確切性質(正好是總費用的60%)與輸錯或一般的笨拙的理論不符。
原始所有者的私鑰被駭客攻擊:攻擊者揭示了私鑰並等待所有者向該地址發送資金。
我們的觀點:這不太可能,因為這筆交易被RBF 搶佔,這意味著有多方知道這個私鑰。
原始所有者的私鑰是可預測的:私鑰是以某種可預測的方式創建的,例如透過對密碼短語進行哈希運算(“Brian-wallet”)或從一個太小的集合中選擇密鑰(32位元)。這些問題在我們最近的部落格文章中進行了深入討論。
攻擊者正在生成所有這些可預測私鑰及其相應地址的集合,每當出現向其中任何地址發送資金的交易在內存池中時,他們立即迅速並爭相發送後續交易將這些資金轉移到他們的地址。
這最後的假設解釋了一切:即時回應(上文的「CPFP」)和過高的費用是攻擊者為了擊敗其他攻擊者而必須採取的。費用的「固定」性質(60%)是由於操作的自動性質,這是為了擊敗其他方而必需的。禁用RBF 是攻擊者採取的另一種機制,以增加擊敗其他方的機會。
這個假設也與過高費用交易接收端位址的過去行為一致。流入該地址的許多交易具有與這筆高費用交易相同的特徵(儘管不像這筆數百萬美元的交易那樣利潤豐厚)。
攻擊者的行為是一致的(資料來源:X / Twitter)。
這個結論當然是一個非常可怕和大膽的解釋,需要進一步的證據。
4、證據
為了驗證我們的說法,我們決定產生一個可預測的私鑰,向其發送資金,並觀察結果。如果我們的假設是正確的,那麼資金應該會立即被盜取。為了創建一個非隨機的私鑰並獲得生成的地址,我們使用了伊恩·克洛曼(Ian Cloeman)廣受歡迎的網路工具(在過去也非常有效)。
將私鑰設定為“1”(注意產生的助記詞主要由索引為0的單字“abandon”組成)
使用這個工具,我們將私鑰設定為「1」並得到了產生的位址:bc1q4jgysxym8yvp6khka878njuh8dem4l7mneyefz。我們驗證過它以前沒有被使用過,以排除其他可能的解釋。
接著我們向這個地址發送了一筆10美元的交易…正如預期的那樣,我們發現,緊接著就是一筆過高費用的交易(5美元,或50%),將資金重定向到另一個地址!
此外,我們觀察到多方之間激烈的競爭,試圖用更高的費用通過RBF來取得優勢,費用甚至達到了資金的近99%,但由於第一筆交易禁用了RBF,這些嘗試都未能成功。
4筆RBF交易,最後一筆提供了總計10美元中的9.87美元作為費用。
5.結論:怪物確實存在
如果使用者的助記詞或私鑰以可預測的方式產生或受到不良隨機性的影響,一旦攻擊者了解到可預測生成的確切細節,它將被利用。
正如我們最近在部落格文章中詳細介紹的那樣,加密錢包中私鑰的安全生成問題大多數用戶都忽略了,但卻證明是一個困擾著錢包並造成巨大損失的問題。
由於用戶無法自行產生私鑰,但也不能證明私鑰是隨機的,因此用戶無法驗證其金鑰的隨機性,必須信任其錢包。
這個問題是依賴單一方錢包的更大核心問題的另一個體現。為了解決這個核心問題以及特定的隨機性問題,我們必須接受這樣一個事實:使用者需要信任一些外部實體,並轉向更健壯的架構,透過增加參與者的數量來減少對每個涉及方的信任。
增加參與者可以降低對每個參與者的所需信任,並使系統更加健壯(詳見我們最近的部落格文章)。