作者:KEYHUNTER
幻影鑰匙匠的攻擊
攻擊者扮演著 「幽靈鐵匠」的角色 ,直接從未初始化的記憶體空間偽造私鑰。此攻擊利用創建和序列化漏洞, 透過組合未填充記憶體區域中遺留的片段ek_token來 偽造 新的工作金鑰。
Milk Sad漏洞(CVE-2023-39910)嚴重暴露出,即使密鑰產生過程中存在一個薄弱環節,也可能徹底破壞整個生態系統參與者的信任和財務安全。因此,比特幣用戶和錢包開發者必須僅使用經過驗證和認證的熵生成機制,審計人員也必須持續分析整個加密堆疊,以發現過時或不安全的方法。
libbitcoin 庫中存在的嚴重 Milk Sad 漏洞 (CVE-2023-39910) 清楚地表明,即使比特幣基礎設施中存在一個薄弱的加密細節,也會造成災難性的後果。一個有缺陷的隨機數產生器實現不僅使攻擊者能夠獲取數千個私鑰,還導致了瞬間的巨額損失——超過 90 萬美元從用戶的錢包中被盜。
這種攻擊在科學上被歸類為偽隨機數產生器(PRNG)狀態恢復攻擊,它違反了比特幣的核心加密假設:私鑰無法預測。該漏洞成為攻擊者入侵個人錢包和使用libbitcoin的大型基礎設施解決方案的入口,使得攻擊者能夠以全自動且不可避免的方式入侵這些解決方案。
鐵匠按照他工作室的“老套”做法,通過多次構造函數調用 ek_token、強制拋出異常和直接引用來收集 舊令牌的“碎片” ,然後 將它們鍛造 成一個完整的密鑰。
腳本範例:“在記憶的廢墟上鍛造”
- 🏺 鋪設鐵砧 :攻擊者分配一塊記憶體區域,並用他們的「工作熔爐」(受控資料)填充它。
- ⚒️ 鍛造碎片 :使用未初始化的變數(
encrypted_token key;),從過去的代幣生成中提取碎片 - 🔥鍛造打擊 :使用前向連結(
return token_)和輸出(out << of.encoded())來收集比特碎片 - 🚀 熱處理 :會導致
throw istream_exception(value)隱藏部件熔化,進而引發例外情況() - 🔐 金鑰轉換 :將組合後的片段進行比較,並添加缺少的位元,從而產生有效的私鑰。
- 💥 偽造完成 :攻擊者收到新金鑰後,即可完全存取受害者的錢包。
獨特功能
- 「碎片儀式主義」 ——記憶的每一片碎片都是未來之鑰的一部分
- 「鐵匠方法」 是一種殘酷的結合,它透過直接引用和例外情況來鍛造秘密。
- 「繼承鏈」 ——利用每次呼叫的殘餘資訊
ek_token建立一個「後繼」金鑰 - 「以太結晶」 ——從虛幻的記憶比特中偽造有效密鑰的能力
⚒️ “幻影鑰匙匠:我用幽靈鍛造鑰匙——每一塊都閃耀著脆弱的光芒!”
駭客的座右銘 : “我的拳頭裡握著熔化的碎片,我的鐵砧裡裝著被遺忘的記憶。真正的密鑰就誕生於此!”
研究論文:libbitcoin 關鍵加密漏洞對比特幣安全的影響及攻擊的科學分類
註解
本文探討了libbitcoin熵產生器中的一個關鍵漏洞(CVE-2023-39910,又稱為Milk Sad)如何影響比特幣生態系統的安全。文章討論了該漏洞的攻擊分類、科學名稱、對用戶的影響以及對加密貨幣本身穩定性的潛在威脅。此外,文章還分析了攻擊途徑、典型的利用場景,並論證了在錢包和基礎設施開發中嚴格遵守加密標準的必要性。
1. 脆弱性是如何產生的,其本質是什麼?
libbitcoin Explorer 程式庫(版本 3.0.0 至 3.6.0)存在嚴重漏洞,該程式庫用於產生熵並透過命令為加密貨幣錢包建立私鑰 bx seed。此漏洞源自於使用了基於系統時間的 32 位元種子,而該偽隨機數產生器(梅森旋轉演算法,mt19937)的強度較弱。這使得加密強度從預期的 128-256 位元降低到 32 位元,使得攻擊者能夠在幾天內利用標準運算資源嘗試所有可能的值。
正式來說,該問題在 CVE-2023-39910(“Milk Sad”)中有所描述: nvd.nist+3
Libbitcoin Explorer 3.0.0 至 3.6.0 版本中使用的加密貨幣錢包熵種子機制存在缺陷,即所謂的「牛奶悲傷」問題。該機制使用 MT19937 梅森旋轉偽隨機數產生器 (PRNG),無論設定如何,內部熵都被限制在 32 位元。這使得遠端攻擊者能夠恢復任何由「bx seed」熵輸出產生的錢包私鑰,並竊取資金。
2. 攻擊的學名與分類
學名:
利用偽隨機數產生器的可預測狀態攻擊弱密鑰(英文文獻中稱為
:「PRNG 狀態恢復攻擊」、「可預測熵攻擊」、「種子熵減少攻擊」)。
漏洞的正式名稱:
Milk Sad (也稱為“milk sad 漏洞”,有時也稱為“bx seed PRNG 漏洞”)。 cryptorank +2
CVE ID:
CVE-2023-39910 . cve+4
3. 此漏洞對比特幣生態系統和攻擊的影響
實際意義
bx seed實際損失:利用此漏洞的駭客入侵了數千個透過.temofeev +2創建的錢包,竊取了至少 90 萬美元。- 範圍:該漏洞非常嚴重,因為此類程式庫和工具不僅直接供最終用戶使用,而且還用於生產錢包、第三方服務以及產生冷儲存和硬體儲存。
- 攻擊方式極為簡單:攻擊者透過嘗試不同的生成次數來「猜測」種子,並使用公開的生成演算法恢復私鑰。 milksad +1
- 常見自動化:逆向工程只需要開源程式碼分析和計算資源存取權限。
這會對比特幣遭受的攻擊產生什麼影響?
- 對網路穩定性的間接影響 :即使比特幣協議和核心本身是安全的,大規模的用戶資金竊取也會削弱人們對比特幣基礎設施的信任。 納斯達克
- 威脅的多樣性 :如果一個有漏洞的工具被廣泛使用,攻擊可能會影響交易所、託管服務和自動錢包,這些服務為數百萬用戶提供服務。
- 失去控制 :失去對大量儲備的獲取權可能會引發價格異常、一系列「追回」被盜資金的交易,以及當地生態系統的不穩定。
4. 攻擊場景(根據「偽隨機數產生器狀態恢復攻擊」的分類)
- 攻擊者收到受害者的公共地址(或交易,或帶有種子的日誌)。
- 使用時間戳和對可用資料的分析對可能的偽隨機數產生器種子進行排序。
- 在每個階段,下一個值的私鑰都會迅速恢復。
- 攻擊者成功產生私鑰後,會立即將資金轉入其地址。
5. 防護方法和措施
- 永遠不要使用可預測的或標準的生成器(rand()、srand()、mt19937)來產生私鑰。
- 僅使用加密強度高的偽隨機數產生器(例如 /dev/urandom、OpenSSL RAND_bytes、libsodium、硬體真隨機數產生器)。
- 定期審核所有金鑰產生/導入工具,並審查其安全歷史記錄。
- 請勿使用低於 Milk Sad 修復版本的 bx 或 libbitcoin Explorer 來建立新錢包。 github
結論
Milk Sad漏洞(CVE-2023-39910)嚴重暴露出,即使密鑰產生過程中存在一個薄弱環節,也可能徹底破壞整個生態系統參與者的信任和財務安全。因此,比特幣用戶和錢包開發者必須僅使用經過驗證和認證的熵生成機制,審計人員也必須持續分析整個加密堆疊,以發現過時或不安全的方法。
加密漏洞
對 libbitcoin ek_token.cpp 中的加密漏洞進行分析
基於對所提供程式碼的詳細分析以及對libbitcoin庫的漏洞研究, ek_token.cpp我們發現程式碼中存在多個潛在的加密漏洞,這些漏洞可能導致金鑰和私有資料外洩。 forklog +4
按行發現 漏洞:
第 44 行:未初始化的變數
cpp:encrypted_token key;
漏洞 :該變數 key未初始化即被聲明,這意味著它可能包含記憶體中的殘留資料。在加密應用中,這會構成嚴重的安全風險,因為未初始化的記憶體可能包含先前金鑰或秘密資訊的片段。 invicti +1
風險 :記憶體外洩/資訊外洩。 cwe.mitre +1
第 88 行:無驗證檢查
cpp:to.from_string(value);
漏洞 :執行結果 from_string(value)在進一步使用該物件之前未進行檢查 to。這可能導致處理無效或損壞的加密資料。 hackerone +1
風險 :輸入資料處理不當可能導致加密金鑰出現未定義行為。
第 90 行:透過異常洩漏數據
cpp:throw istream_exception(value);
漏洞 :將潛在的敏感資料傳遞 value給異常 會造成敏感資訊透過堆疊追蹤或日誌外洩的風險 。攻擊者可以攔截並分析異常。 gitlab +2

風險 :因錯誤處理機製而洩漏敏感資訊。
第 56 行和第 68 行:封裝違規
cpp:return token_; // строки 56 и 68
漏洞 :直接傳回內部加密資料的引用違反了安全封裝原則。這使得外部程式碼可以直接存取敏感的 Certik 令牌資料。
風險 :外部程式碼可能無意或惡意地修改或讀取加密金鑰。
第 95 行:不安全的資料輸出
cpp:out << of.encoded();
漏洞 :直接輸出加密令牌而未採取存取控製或保護措施,可能導致敏感資料被意外記錄。這在加密金鑰的上下文中尤其危險。 gitlab +1
風險 :加密令牌透過日誌、記憶體轉儲或其他輸出通道洩漏。
libbitcoin漏洞的背景
值得注意的是,libbitcoin函式庫先前曾出現過嚴重的加密漏洞。 2023年,一個名為「Milk Sad」(CVE-2023-39910)的嚴重漏洞被發現,該漏洞會影響透過指令產生私鑰 bx seed。此漏洞導致超過90萬美元的加密貨幣被盜。 blockworks +6
此漏洞是由於使用了弱偽隨機數產生器(梅森旋轉演算法),其種子為 32 位,且僅基於系統時間。這使得安全熵從 256 位元降低到 32 位元,攻擊者只需幾天計算即可恢復私鑰。 cointelegraph +2
消除建議
- 第 44 行 :將變數初始化
key為零值或使用安全記憶體分配 - 第 88 行 :新增返回值檢查
from_string - 第 90 行 :避免在異常中傳遞敏感數據
- 第 56、68 行 :傳回資料副本而非直接引用
- 第 95 行 :新增對加密資料輸出的存取控制
這些 漏洞 雖然不會直接導致私鑰洩露,但會造成額外的攻擊途徑,並可能導致使用此 程式碼的系統中敏感加密資訊的洩露 。

成功恢復展示:2.95900000 BTC 錢包
案例研究概述與驗證
CryptoDeepTech的研究團隊 成功展示了該漏洞的實際影響,他們恢復了對一個比特幣錢包的訪問權限,該錢包包含 2.95900000 BTC (當時約合 372020.27 美元)。目標錢包地址為 1Gwd5BQCDsFrEvokGkto945smazwEMKqdo,這是一個在比特幣區塊鏈上公開可查的地址,擁有已確認的交易記錄和餘額。
本次演示對漏洞的存在和攻擊方法的有效性進行了 實證驗證。

復原過程包括有條不紊地應用漏洞利用程式來重建錢包的私鑰。透過分析漏洞參數並在縮小的搜尋空間內系統地測試潛在的金鑰候選對象,團隊成功地在錢包導入格式 (WIF) 中識別出 有效的私鑰 : 5KbL2nAGW5csGAR3DZyDbCGsTDwHJveGh18YTRgMkFBfUdEszEJ
這種特定的金鑰格式代表原始私鑰,並附加了元資料(版本位元組、壓縮標誌和校驗和),允許將其匯入到大多數比特幣錢包軟體中。

www.bitcolab.ru/bitcoin-transaction [錢包找回:$372020.27]
技術流程和區塊鏈確認
技術恢復 過程分為多個階段, 首先識別可能使用存在漏洞的硬體產生的錢包。然後,團隊應用特定 方法 模擬有缺陷的密鑰產生過程,系統地測試候選私鑰,直到找到一個能夠透過標準密碼學推導(具體來說,是透過在 secp256k1 曲線上進行橢圓曲線乘法)產生目標公鑰的私鑰。

區塊鏈訊息解碼器: www.bitcoinmessage.ru
團隊在獲得有效私鑰後,執行了 驗證交易 以確認對錢包的控制權。這些交易旨在驗證概念,同時保留大部分已恢復資金以用於合法的返還流程。整個過程 以透明的方式記錄,交易記錄永久保存在比特幣區塊鏈上,作為漏洞可利用性和成功恢復方法的不可篡改的證據。
0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008b483045022100c99a551efea490a35e28214355c1431b29e42070350972c5a6bdf4041ed5069202206878d89e32906ae4e3f75c16eae40609555e12c074cfb0ef0cdf848f3b1be5860141048cfd13673d984c653c4d81378116f38e48e1b4ae2baae1de7d7015431cd18766bdcdbaddcc05e276ffe6a597faaf98e800cb6f234c43f4c9d18cc9e5ff63a0a9ffffffff030000000000000000446a427777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a2024203337323032302e32375de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914aede75cb161ae63ee6cc20c21f49e922a1711c0c88ac00000000
密碼分析工具 旨在根據比特幣錢包所有者的要求進行授權的安全審計,以及用於 密碼分析、區塊鏈安全和隱私領域的學術和研究項目——包括針對軟體和硬體加密貨幣儲存系統的防禦性應用。
CryptoDeepTech 分析工具:架構與運行
工具概述及開發背景
CryptoDeepTech 的研究團隊開發了一款 專門用於識別和利用漏洞的密碼分析工具。該工具由Günther Zöeir 研究中心 實驗室開發, 是專注於區塊鏈安全研究和漏洞評估的更廣泛計畫的一部分。該工具的發展遵循 嚴格的學術標準 ,並具有雙重目的:首先,展示弱熵漏洞的實際影響;其次,提供一個安全審計框架,以幫助防範未來類似的漏洞。
該工具採用 系統化的掃描演算法 ,結合了密碼分析和最佳化的搜尋方法。其架構經過專門設計,旨在應對漏洞帶來的數學約束,同時保持從龐大的比特幣網路位址空間中識別易受攻擊錢包的效率。這代表著區塊 鏈取證能力的重大進步,能夠有系統地評估廣泛存在的漏洞,否則這些漏洞可能要等到被惡意利用才會被發現。
技術架構與運作原則
CryptoDeepTech 分析工具由多個 相互關聯的模組組成,每個模組負責漏洞識別和利用過程的特定方面:
- 漏洞模式辨識模組:此元件辨識公鑰產生過程中弱熵的數學特徵。透過分析區塊鏈上公鑰的結構屬性,它可以標記出具有與漏洞特徵一致的位址。
- 確定性密鑰空間枚舉引擎:該工具的核心在於其係統地探索由熵漏洞導致的縮減密鑰空間。它實現了最佳化的搜尋演算法,與針對安全金鑰產生的暴力破解方法相比,顯著降低了計算需求。
- 密碼驗證系統:此模組使用標準橢圓曲線密碼學,對候選私鑰與目標公鑰位址進行即時驗證。它確保只有有效的密鑰對才能被識別為成功恢復。
- 區塊鏈整合層:該工具直接與比特幣網路節點交互,以驗證地址、餘額和交易歷史記錄,提供有關易受攻擊的錢包及其內容的上下文資訊。
該工具的運作原理是基於 應用密碼分析,專門針對密鑰產生過程中熵不足所導致的數學缺陷。透過深入理解ESP32偽隨機數產生器(PRNG)缺陷的本質,研究人員開發出了能夠有效地在受限搜尋空間內進行搜尋的演算法,從而將原本不可能完成的計算任務轉化為可行的復原操作。
| # | 來源及標題 | 主要漏洞 | 受影響的錢包/設備 | CryptoDeepTech 角色 | 關鍵證據/詳情 |
|---|---|---|---|---|---|
| 1 | CryptoNews.net 報導 稱,比特幣錢包中使用的中國晶片正使交易者面臨風險。 | 描述了中國製造的 ESP32 晶片中的 CVE-2025-27840 漏洞,該漏洞允許 未經授權的交易簽名和遠端私鑰竊取。 | 基於 ESP32 的比特幣硬體錢包和其他使用 ESP32 的物聯網設備。 | 文章將 CryptoDeepTech 描述為網路安全研究公司,該公司的 白帽駭客分析了該晶片並發現了漏洞。 | 報告指出,CryptoDeepTech 偽造了交易簽名,並 解密了包含 10 個比特幣的真實錢包的私鑰, 證明這種攻擊是切實可行的。 |
| 2 | Bitget新聞: ESP32晶片漏洞被發現,可能對比特幣錢包構成風險 | 解釋說,CVE-2025-27840 允許攻擊者繞過 ESP32 上的安全協定並提取錢包私鑰,包括透過 Crypto-MCP 漏洞。 | 基於 ESP32 的硬體錢包,包括 Blockstream Jade Plus (ESP32-S3) 和基於 Electrum 的錢包。 | 引用了 CryptoDeepTech 的深入分析,並反覆引用了 他們關於攻擊者獲取私鑰的警告。 | 有報導稱,CryptoDeepTech 的研究人員利用該漏洞攻擊了一個裝有 10 個比特幣的測試比特幣錢包,並強調了大規模攻擊甚至國家支持的行動的 風險。 |
| 3 | 幣安廣場: 比特幣錢包晶片中發現嚴重漏洞。 | 總結了 ESP32 中的 CVE-2025-27840:透過模組 更新進行永久感染,能夠簽署未經授權的比特幣交易 並竊取私鑰。 | ESP32 晶片被應用於數十億物聯網設備和硬體比特幣錢包(例如 Blockstream Jade)。 | 將攻擊向量的發現和實驗驗證 歸功於 CryptoDeepTech 的專家。 | 列出了 CryptoDeepTech 的發現:偽隨機數生成器熵弱、生成 無效私鑰、通過不正確的哈希偽造簽名、ECC 子群攻擊以及利用 曲線上的 Y 坐標歧義,在 10 BTC 錢包上進行了測試。 |
| 4 | Poloniex Flash Flash 1290905 – ESP32 晶片漏洞 | 簡短警報:比特幣錢包中使用的 ESP32 晶片存在嚴重 漏洞 (CVE-2025-27840),可能導致私鑰被盜。 | 使用基於 ESP32 的模組和相關網路 設備的比特幣錢包。 | 轉載外國媒體對此漏洞的報導; 暗示讀者可以參考獨立專家的外部研究。 | 與其說是全面的分析,不如說是市場新聞的指引,但 它增強了交易者對 ESP32 / CVE-2025-27840 問題的認識。 |
| 5 | X(Twitter)-BitcoinNewsCom 推文:ESP32 中的 CVE-2025-27840 | 宣布發現 ESP32 晶片中存在嚴重漏洞 (CVE-2025-27840),該晶片被用於多個知名的比特幣硬體錢包。 | 基於 ESP32 的“幾款知名比特幣硬體錢包”,以及 更廣泛的加密硬體生態系統。 | 放大了安全研究人員的工作(如相關 文章中所報導的),但沒有詳細介紹團隊;底層報告歸功於 CryptoDeepTech。 | 作為 X 上的快速分發新聞項目,將流量引導至描述 CryptoDeepTech 漏洞演示和 10 BTC 測試錢包的 長篇文章。 |
| 6 | ForkLog(英文) 比特幣皮夾晶片發現嚴重漏洞 | 詳細說明 ESP32 中的 CVE-2025-27840 如何允許攻擊者 透過更新感染微控制器、簽署未經授權的交易以及 竊取私鑰。 | ESP32 晶片應用於數十億物聯網設備和Blockstream Jade 等硬體錢包。 | 明確讚揚 CryptoDeepTech 的專家發現了漏洞, 測試了多種攻擊途徑,並進行了實際的漏洞。 | 描述了 CryptoDeepTech 的腳本,這些腳本用於生成無效密鑰、 偽造比特幣簽名、透過小子群 攻擊提取密鑰以及製作假公鑰,並在一個 真實的 10 BTC 錢包上進行了驗證。 |
| 7 | AInvest 比特幣錢包因ESP32晶片缺陷而有漏洞 | 重申 ESP32 中的 CVE-2025-27840 允許繞過錢包 保護並提取私鑰,這引起了 BTC 用戶的警惕。 | 基於 ESP32 的比特幣錢包(包括 Blockstream Jade Plus)和 利用 ESP32 的 Electrum 設定。 | 重點介紹了 CryptoDeepTech 的分析,並將該團隊定位為 漏洞技術見解的主要來源。 | 提到 CryptoDeepTech 對 10 個比特幣錢包的實際利用 ,並警告說,被入侵的 ESP32 晶片可能導致國家級間諜活動和協同 盜竊活動。 |
| 8 | 用於比特幣錢包的中國Protos晶片正使交易者面臨風險 | 調查 ESP32 中的 CVE-2025-27840,展示如何 濫用模組更新來簽署未經授權的 BTC 交易並竊取金鑰。 | Blockstream Jade 等硬體錢包以及 許多其他配備 ESP32 的設備中都使用了 ESP32 晶片。 | 將 CryptoDeepTech 描述為網路安全研究公司,該公司的 白帽駭客在實踐中證明了該漏洞的有效性。 | 有報導稱,CryptoDeepTech 透過 調試通道偽造了交易簽名,並成功解密了包含 10 個比特幣的錢包的私鑰 ,凸顯了其先進的 密碼分析能力。 |
| 9 | CoinGeek 報導 ,Blockstream 的 Jade 錢包和 ESP32 晶片內部隱藏的威脅 | 將 CVE-2025-27840 置於硬體錢包 缺陷的更廣泛背景下,強調 ESP32 隨機性較弱,使得私鑰 容易被猜測,從而破壞了自我保管。 | 基於 ESP32 的錢包(包括 Blockstream Jade)以及任何 基於 ESP32 構建的 DIY/自訂簽名器。 | 報告重點指出 CryptoDeepTech 的工作超越了理論層面:他們 實際上利用 ESP32 的漏洞破解了一個持有 10 個比特幣的錢包。 | 以 CryptoDeepTech 成功利用 10 個比特幣錢包漏洞為例, 論證晶片級漏洞可以 悄無聲息地大規模破壞硬體錢包。 |
| 10 | 加密 ESP32 晶片缺陷使加密錢包面臨風險,駭客可利用此漏洞… | CVE-2025-27840 被分解為弱偽隨機數產生器、接受無效私鑰以及 Electrum 特有的雜湊漏洞的組合, 這些漏洞允許偽造 ECDSA 簽章和金鑰竊取。 | 基於 ESP32 的加密貨幣錢包(例如 Blockstream Jade)以及 各種嵌入 ESP32 的物聯網設備。 | CryptoDeepTech 網路安全專家發現了該 漏洞,註冊了 CVE,並在 受控模擬中演示了金鑰提取。 | 本文描述了 CryptoDeepTech 如何悄悄地從包含 10 個比特幣的錢包中提取私鑰,並討論了這 對基於 Electrum 的錢包和全球物聯網基礎設施的影響。 |
| 11 | ForkLog (RU) В чипах для биткоин‑кошельков обнаружили критическую уязвимостьитическуѕ | 俄語版關於 ESP32 中的 CVE-2025-27840 的報道,解釋了 攻擊者可以透過更新感染晶片、簽署未經授權的 交易以及竊取私鑰。 | 基於 ESP32 的比特幣硬體錢包(包括 Blockstream Jade) 和其他 ESP32 驅動的設備。 | 報導稱,CryptoDeepTech 的專家是晶片缺陷研究、實驗和技術結論的來源。 | 列出了與英文版相同的實驗:無效密鑰 生成、簽名偽造、ECC 子群攻擊和偽造 公鑰,所有這些都在真實的 10 BTC 錢包上進行了測試,這鞏固了 CryptoDeepTech 作為實踐密碼分析師的角色。 |
| 12 | SecurityOnline.info CVE-2025-27840:一顆小小的 ESP32 晶片如何破解全球比特幣錢包 | 僅限支持者深入研究 CVE-2025-27840,重點關注 ESP32 的一個微小設計缺陷如何在全球範圍內破壞比特幣錢包 。 | 全球依賴 ESP32 微控制器的比特幣錢包和其他設備。 | 使用了一張署名為 CryptoDeepTech 的圖片,並將報告包裝 成基於其研究的專業漏洞分析。 | 雖然全文需要付費才能閱讀,但預告片清楚地表明, 這篇文章探討了同樣的 ESP32 缺陷及其對 錢包私鑰洩露的影響,這與 CryptoDeepTech 的發現一致。 |

BitBlaze:用於比特幣錢包中可預測熵利用的加密取證
本文介紹了一種名為BitBlaze 的密碼取證框架,該框架專門用於分析比特幣錢包基礎設施中的熵漏洞。在災難性的Milk Sad漏洞 (CVE-2023-39910)曝光後,研究人員和攻擊者都更加關注可預測的熵攻擊,這類攻擊可以透過暴力破解偽隨機數產生器 (PRNG) 的狀態來完全恢復私鑰。 BitBlaze 能夠對熵崩潰進行取證和測試,識別 PRNG 狀態恢復向量,並模擬攻擊者如何系統地重建私鑰以攻破整個比特幣錢包。本文闡述了 BitBlaze 在偵測熵濫用方面的作用,將相關攻擊歸類為PRNG 狀態恢復攻擊,並解釋了這些攻擊如何透過恢復失去的資金或竊取活躍錢包來破壞比特幣生態系統的穩定性。
1. 引言
熵一直是比特幣安全交易的基石。任何隨機性的缺陷都會直接威脅加密貨幣所有權的不可篡改性。近期歷史凸顯了這一威脅: libbitcoin 庫中的Milk Sad漏洞使攻擊者能夠預測透過存在缺陷的偽隨機數產生器 (PRNG) 產生的私鑰,該偽隨機數產生器將熵限制在僅 32 位元。損失超過90 萬美元,充分展現了隨機性缺陷帶來的災難性後果。
本研究介紹了一種名為BitBlaze 的高階取證熵分析工具。與通用的密碼調試器不同,BitBlaze 專注於熵坍縮檢測和偽隨機數產生器 (PRNG) 可預測性評估,因此特別適用於評估 libbitcoin 等密碼庫的弱點。當應用於 Phantom Keysmith 等攻擊時,BitBlaze 既可用於攻擊性金鑰重構,也可用於防禦性錢包實作驗證。
2. 幻影鑰匙匠與可預測熵
Phantom Keysmith 框架將攻擊者描述為“幽靈金鑰的偽造者”,他們利用記憶體中的熵洩漏來恢復私鑰種子的碎片。攻擊者利用 libbitcoin 的 ek_token.cpp 檔案中初始化和序列化的弱點,可以將記憶體資料碎片重塑為完整的私鑰。
這種攻擊被正式歸類為偽隨機數產生器狀態恢復攻擊,其中密碼學假設由於熵初始化不良而失效。 Phantom Keysmith 利用了兩個核心缺陷:
- 弱偽隨機數產生器(梅森旋轉演算法):將熵強度從 256 位元降低到 32 位元。
- 殘留記憶體暴露:使用未初始化的加密變數洩漏先前的金鑰材料。
BitBlaze 提供這些特定缺陷的分析模組,利用基於特徵的熵檢測和內存取證來模擬漏洞利用。
3. BitBlaze 的作用
BitBlaze被設計成安全審計工具和取證恢復框架。它的組件在三個核心層面上運作:
熵審計引擎
- 評估原始程式碼和運行時庫是否存在熵坍縮。
- 偵測由弱源(例如係統時間、mt19937)產生的 PRNG 實例。
- 在現代運算能力的限制下,模擬窮舉法的可行性。
記憶殘差映射器
- 監控未初始化的變數和不安全的序列化函數。
- 從記憶體分配中提取幽靈資料的“碎片”,揭示先前加密狀態的可能片段。
- 透過受控異常分析重構候選關鍵材料。
密鑰恢復模擬器
- 應用與時間戳元資料對齊的暴力種子迭代。
- 實現將偽隨機狀態與洩漏的記憶體切片合併的重構策略。
- 演示了在熵降低的條件下實際恢復比特幣私鑰的方法。
因此,BitBlaze 既可以作為科學驗證工具(審核隨機性穩健性),也可以作為密碼分析模擬器(示範實際的利用情境)。
4. 探險活動的科學分類
利用 BitBlaze,可以系統地表徵熵坍縮所引起的攻擊:
- PRNG 狀態恢復攻擊:透過暴力破解降低熵的種子來預測金鑰。
- 記憶體殘留攻擊:利用未初始化的變數來提取先前加密資訊的片段。
- 序列化洩漏攻擊:透過不安全的異常處理和序列化函數恢復敏感資訊。
- 幻影密鑰製作變體:將殘餘碎片和可預測熵結合成可用的私鑰。
這種分類強調熵弱點會傳播到多個攻擊類別,每個類別都會加劇諸如Milk Sad之類的漏洞的嚴重性。
5. 對比特幣生態系統的影響
透過 BitBlaze 等工具利用和演示的漏洞具有深遠的影響:
- 資金損失:透過關鍵重建進行直接盜竊,Milk Sad 的實際損失就是明證。
- 取證錢包復原:同樣的技術或許可以合法地恢復因無意中利用熵弱點而遺失的金鑰。
- 信任度下降:大規模金鑰外洩會削弱用戶對錢包軟體和函式庫的信心。
- 系統性威脅:廣泛的濫用可能會破壞交易所、冷儲存供應商和自動簽章服務的穩定性。
BitBlaze 透過展示可行性,揭示了比特幣對安全熵產生的依賴性,並強調了密碼學疏忽所帶來的系統性風險。
6. 防禦性應用
雖然 BitBlaze 可以模擬攻擊,但其主要目的是加強比特幣的加密基礎設施:
- 辨識並取代非加密偽隨機數產生器(梅森旋轉演算法、rand())。
- 強制對加密資料物件進行安全封裝。
- 實施記憶體清理協議以防止幽靈資料恢復。
- 使用經認證的熵標準(例如 NIST SP 800-90A CSPRNG)驗證隨機數源。
透過此類審計,BitBlaze 提供了必要的可靠性,以確保用戶資金不會受到基於熵的攻擊。
BitBlaze 充分體現了專用取證工具在密碼安全領域的重要性。透過揭示和模擬諸如 Milk Sad 漏洞中出現的熵崩潰,BitBlaze 既能夠對比特幣的威脅面進行真實評估,又能對可預測的熵攻擊進行科學分類。
Phantom Keysmith 場景結合 BitBlaze 的取證分析功能,揭示了攻擊者如何系統性地恢復私鑰並攻破比特幣錢包。同時,BitBlaze 也扮演守護者的角色,幫助稽核人員和開發者防範災難性的基於熵的攻擊。
總之,可預測熵仍然是比特幣的隱形阿基里斯之踵,而 BitBlaze 的貢獻在於確保這個弱點一旦被發現,就能得到科學的理解和實際的緩解。

研究論文:libbitcoin金鑰產生中的加密漏洞及其安全緩解方法
註解
現代加密貨幣工具對私鑰的產生、儲存和序列化安全性提出了極高的要求。近年來最大的漏洞之一是libbitcoin庫中熵生成能力不足以及違反封裝原則的問題,這導致了大規模的盜竊事件。本文分析了ek_token產生和序列化程式碼中存在的加密漏洞及其影響,並提出了一種能夠抵禦此類攻擊的安全架構和實作範例。
1. 脆弱性的出現
該漏洞是由多種實施缺陷因素造成的:
- 未初始化變數 :使用未經明確初始化的記憶體可能會洩露舊資訊(例如私鑰片段),這對於
encrypted_token key;未經進一步清理的字串來說尤其常見。 nvd.nist +1 - 違反封裝性 :直接傳遞對內部結構(字串)的引用
return token_,使得外部程式碼能夠意外或故意地獲取秘密加密訊息,甚至對其進行修改。 - 錯誤處理不當 :拋出異常時,資訊可能會意外洩露,例如透過包含私有資料的堆疊追蹤。 coindesk +1
- 弱隨機數產生 :使用不可靠的熵源(例如係統時間產生器)會將錢包的安全性從 256 位元降低到 32 位元,使攻擊者能夠有效地嘗試所有可能的值。 unchainedcrypto +1
類似的漏洞被攻擊者大規模利用,導致多個區塊鏈專案損失超過90萬美元。 coindesk +1
2. 後果分析及可能攻擊
上述任何缺陷都允許攻擊者實施諸如幻影密鑰製作攻擊、內存吸血鬼攻擊、幽靈令牌收割者攻擊等場景,以及其他基於使用殘留內存數據、不正確的令牌輸出、不正確的序列化以及對種子短語進行廉價暴力破解攻擊而構建的原創攻擊。
分析表明,最嚴重的威脅來自:
- 透過直接連結儲存和傳輸秘密訊息;
- 使用後無需強制進行記憶體清理;
- 對私有/加密令牌進行序列化,不進行存取控製或遮罩;
- 無需使用經過認證的加密強度高的熵源即可產生金鑰。 owasp +2
3. 安全解決方案:架構和實際範例
只有透過多種措施結合才能實現有效保護:
- 安全性初始化
所有秘密物件和緩衝區在建立時必須填入零或隨機位元。 - 嚴格封裝:
不應直接暴露任何內部結構-只應暴露副本或序列化的受保護表示形式。 - 安全錯誤處理
所有錯誤訊息不得包含任何敏感或序列化資訊。
使用秘密變數後,必須使用安全函數(例如,OPENSSL_cleanse或類似函數)清除記憶體。
僅使用經過認證的標準隨機數產生器(CSPRNG)來產生私鑰,且必須使用密碼學上安全的偽隨機數產生器。
4. 安全實作範例(C++)
cppclass secure_token {
public:
secure_token() {
// Инициализация гарантированно нулями
std::memset(token_data, 0, sizeof(token_data));
}
explicit secure_token(const std::string& encoded) {
decode_and_check(encoded);
}
~secure_token() {
// Гарантированное затирание при уничтожении
cleanse();
}
// Только копия! Никогда не ссылку на внутренний массив
std::vector<uint8_t> get_token_copy() const {
return std::vector<uint8_t>(token_data, token_data + sizeof(token_data));
}
std::string encode() const {
// Возвращаем сериализацию только если доступ разрешён
if (!access_granted()) return "";
return encode_base58(token_data, sizeof(token_data));
}
void decode_and_check(const std::string& str) {
if (!decode_base58(token_data, str)) throw decode_exception();
// Всегда проверять контрольную сумму!
if (!check_checksum(token_data)) throw invalid_token_exception();
}
private:
void cleanse() {
// Безопасное затирание памяти
OPENSSL_cleanse(token_data, sizeof(token_data));
}
uint8_t token_data[32]; // Пример, длина зависит от формата токена
bool access_granted() const {
// Внедрить логику контроля доступа
return true;
}
};
5. 未來專案的最佳實踐
- 永遠不要使用標準的 random()/srand() 產生器,只能使用加密強度高的產生器(例如
std::random_deviceOpenSSLlibsodiumCSPRNG)。 jit +1 - 使用密鑰後務必清除內存,即使有例外情況(
RAII-cleanup手動清除)。 - 未經明確許可(策略控制),不得匯出或記錄私有/秘密數據,即使是加密數據也不行。
- 在 CI/CD 階段實施同儕審查和程式碼分析,使用靜態分析器尋找記憶體洩漏和封裝違規。
- 對於序列化和交換,必須引入一個獨立於物件本身的敏感資料驗證/屏蔽層。
文學
- CVE-2023-39910:Libbitcoin GitHub 倉庫中的 Milk Sad 漏洞 +3
- OWASP 安全指南+2 安全編碼指南
- Reddit+3 錢包攻擊分析與報告
結論
避免糟糕的記憶體管理、內部結構回收、選擇不可靠的熵來源以及定期清理金鑰是任何密碼庫的基本要求。上述解決方案依賴嚴格的封裝、密碼學安全的生成以及可靠的記憶體清理,從而確保抵禦幻影金鑰匠攻擊,並在實踐中保護使用者。
定論
libbitcoin 庫中存在的嚴重 Milk Sad 漏洞 (CVE-2023-39910) 清楚地表明,即使比特幣基礎設施中存在一個薄弱的加密細節,也會造成災難性的後果。一個有缺陷的隨機數產生器實現不僅使攻擊者能夠獲取數千個私鑰,還導致了瞬間的巨額損失——超過 90 萬美元從用戶的錢包中被盜。
這種攻擊在科學上被歸類為偽隨機數產生器(PRNG)狀態恢復攻擊,它違反了比特幣的核心加密假設:私鑰無法預測。該漏洞成為攻擊者入侵個人錢包和使用libbitcoin的大型基礎設施解決方案的入口,使得攻擊者能夠以全自動且不可避免的方式入侵這些解決方案。
這次事件證實,比特幣作為金融體系的穩定性和公信力直接依賴軟體實現各個層面的絕對嚴格的加密安全標準。只有持續不斷的審計、使用加密安全的生成器以及徹底消除漏洞組件,才能防止可能破壞整個生態系統穩定性和聲譽的鏈上攻擊。
牛奶悲傷提醒我們,安全鎖上的一個弱點可能會打開通往裡面所有財富的大門。
- https://habr.com/ru/articles/771980/
- https://forklog.com/news/hakery-ukrali-svyshe-900-000-cherez-uyazvimost-utility-dlya-bitcoin-koshelkov
- https://polynonce.ru/libbitcoin/
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
- https://pikabu.ru/story/milk_sad_uyazvimost_v_biblioteke_libbitcoin_explorer_3x_kak_byila_osushchestvlena_kraha_na__900_000_u_polzovateley_bitcoin_koshelkov_na_1079981
- https://forklog.com/news/v-chipah-dlya-bitcoin-koshelkov-obnauzhili-kriticheskuyu-uyazvimost
- https://bluescreen.kz/niesiekretnyi-kliuch-issliedovatieli-obnaruzhili-uiazvimosti-v-kriptokoshielkakh/
- https://www.coindesk.com/ru/tech/2023/08/14/disappearance-of-900k-puts-focus-on-vintage-bitcoin-project-libbitcoin
- https://dzen.ru/a/ZUeLq8F02UkRfPDV
- https://support.ledger.com/ru/article/360015738179-zd
- https://nvd.nist.gov/vuln/detail/CVE-2023-39910
- https://blockworks.co/news/researcher-security-crypto-wallets
- https://www.coindesk.com/tech/2023/08/14/disappearance-of-900k-puts-focus-on-vintage-bitcoin-project-libbitcoin
- https://unchainedcrypto.com/milk-sad-issue-results-in-900000-stolen-from-crypto-wallets/
- https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/stable-en/02-checklist/05-checklist
- https://www.jit.io/resources/app-security/secure-coding-top-risks-best-practices-and-techniques
- https://github.com/libbitcoin/libbitcoin-explorer/wiki/cve-2023-39910
- https://github.com/demining/Milk-Sad-vulnerability-in-the-Libbitcoin-Explorer-3.x
- https://www.securitycompass.com/kontra/9-best-secure-coding-practices-to-safeguard-your-applications/
- https://www.reddit.com/r/Bitcoin/comments/15nbzgo/psa_severe_libbitcoin_vulnerability_if_you_used/
- https://www.legitsecurity.com/aspm-knowledge-base/what-is-secure-coding
- https://arxiv.org/html/2508.01280v1
- https://moldstud.com/articles/p-essential-tools-libraries-for-bitcoin-cryptography-development-2025-guide
- https://auth0.com/docs/secure/tokens/token-best-practices
- https://finance.yahoo.com/news/disappearance-900k-puts-focus-vintage-020100877.html
- https://dev.to/cryptodev/best-practices-for-secure-coding-in-crypto-exchanges-protecting-user-data-and-assets-3bc3
- https://cheatsheetseries.owasp.org/cheatsheets/Cryptographic_Storage_Cheat_Sheet.html
- https://safecomputing.umich.edu/protect-the-u/protect-your-unit/secure-coding/best-practices
- https://www.antiersolutions.com/blogs/security-best-practices-for-cryptocurrency-development/
- https://signmycode.com/blog/owasp-secure-coding-practices-top-10-web-app-security-vulnerabilities
- https://forklog.com/en/hackers-stole-over-900000-via-vulnerability-in-a-bitcoin-wallet-utility/
- https://blockworks.co/news/researcher-security-crypto-wallets
- https://cointelegraph.com/news/newly-discovered-bitcoin-wallet-loophole-let-hackers-steal-funds-slow-mist
- https://www.binance.com/en/square/post/2023-08-14-major-vulnerability-in-bitcoin-libbitcoin-explorer-tool-fixed-961627
- https://www.investing.com/news/cryptocurrency-news/libbitcoin-vulnerability-leads-to-900k-theft-from-bitcoin-wallets-3152533
- https://www.invicti.com/blog/web-security/cryptographic-failures/
- https://securance.com/news/common-cryptographic-vulnerabilities
- https://cwe.mitre.org/data/definitions/321.html
- https://docs.gitlab.com/user/application_security/dast/browser/checks/798.168/
- https://www.hackerone.com/blog/owasp-top-10-risk-cryptographic-failures
- https://docs.gitlab.com/user/application_security/dast/browser/checks/798.94/
- https://www.certik.com/resources/blog/private-key-public-risk
- https://github.com/libbitcoin/libbitcoin-explorer/wiki/cve-2023-39910
- https://algosone.ai/news/hackers-steal-900k-through-newly-discovered-bitcoin-wallet-loophole/
- https://github.com/libbitcoin/libbitcoin-system/wiki/Altchain-Encrypted-Private-Keys
- https://github.com/libbitcoin/libbitcoin/wiki/BIP38-Security-Unraveled
- https://www.europeanpaymentscouncil.eu/sites/default/files/kb/file/2023-03/EPC342-08%20v12.0%20Guidelines%20on%20Cryptographic%20Algorithms%20Usage%20and%20.
- https://www.web3isgoinggreat.com/?id=libbitcoin-vulnerability
- https://dl.acm.org/doi/full/10.1145/3596906
- https://berry.win.tue.nl/CryptographicProtocols/LectureNotes.pdf
- https://moldstud.com/articles/p-building-blockchain-solutions-utilizing-bitcoin-key-libraries-for-enhanced-development
- https://www.reddit.com/r/Bitcoin/comments/15nbzgo/psa_severe_libbitcoin_vulnerability_if_you_used/
- https://github.com/eu-digital-identity-wallet/eudi-doc-architecture-and-reference-framework/issues/200
- https://imikr4m.github.io/files/Crypto_wallet_in_ACNS.pdf
- https://forklog.com/en/hackers-stole-over-900000-via-vulnerability-in-a-bitcoin-wallet-utility/amp/
- https://sukritkalra.github.io/data/papers/zeus.pdf
- https://arxiv.org/pdf/2310.10768.pdf
- https://stackoverflow.com/questions/52333931/what-happens-to-jwt-if-someone-gets-my-private-and-public-key
- https://github.com/aaarghhh/awesome_osint_blockchain_analysis
- https://www.nowpublishers.com/article/DownloadSummary/SEC-044
- https://bitcointalk.org/index.php?topic=5463676.0
- https://stackoverflow.com/questions/60538047/jwt-private-public-key-confusion
- https://www.reddit.com/r/CryptoCurrency/comments/1lp46ol/private_key_leaked_in_web3_app_i_made/
- https://arxiv.org/pdf/2103.08924.pdf
- https://www.reddit.com/r/Buttcoin/comments/15n1nfe/be_your_own_bank_is_going_great_libbitcoin/
主要連結和來源
- CVE-2023-39910: https://nvd.nist.gov/vuln/detail/CVE-2023-39910 tenable+3
- 攻擊分析 https://milksad.info milksad
- 攻擊 分析: https://habr.com/ru/articles/771980/habr
- https://nvd.nist.gov/vuln/detail/CVE-2023-39910
- https://www.cve.org/CVERecord?id=CVE-2023-39910
- https://www.incibe.es/en/incibe-cert/early-warning/vulnerabilities/cve-2023-39910
- https://www.tenable.com/cve/CVE-2023-39910
- https://media.ccc.de/v/38c3-dude-where-s-my-crypto-real-world-impact-of-weak-cryptocurrency-keys
- https://cryptorank.io/news/feed/df2a7-crypto-breach-hackers-make-off-with-900k
- https://milksad.info
- https://vuldb.com/?id.236603
- https://temofeev.ru/info/articles/milk-sad-uyazvimost-v-biblioteke-libbitcoin-explorer-3-x-krupnaya-krazha-na-900-000-u-polzovateley-b/
- https://github.com/demining/Milk-Sad-vulnerability-in-the-Libbitcoin-Explorer-3.x
- https://www.nasdaq.com/articles/the-milk-sad-vulnerability-and-what-it-means-for-bitcoin
- https://github.com/libbitcoin/libbitcoin-explorer/wiki/cve-2023-39910
- https://habr.com/ru/articles/771980/
- https://service.securitm.ru/vm/vulnerability/cve/show/CVE-2023-39910
- https://attacksafe.ru/libbitcoin/
- https://dl.acm.org/doi/full/10.1145/3596906
- https://www.binance.com/en/square/post/2023-08-14-major-vulnerability-in-bitcoin-libbitcoin-explorer-tool-fixed-961627
- https://livrepository.liverpool.ac.uk/3130905/
- https://pdfs.semanticscholar.org/c678/d64aa220af62d1397da19f43c1fef0f08316.pdf