作者:KEYHUNTER
熵坍縮攻擊
在區塊鏈系統的核心,每個私鑰和助記詞都受到數百萬用戶的信任,攻擊者卻能造成名副其實的「能量崩潰」。攻擊者利用助記詞轉換為熵的演算法漏洞(解碼溢位),建立冗長或非典型的詞序列,並在種子中創建「隱形陷阱」。他們知道,在易受攻擊的程式碼轉換過程中,一些重要的資訊位元會悄悄消失。
因此,Electrum v1 的受害者會收到訊息略有遺失的助記詞:私鑰變得極其脆弱,部分熵「消失」。攻擊者可以立即恢復私鑰,因為這些「損壞的」助記詞無法逆向工程。攻擊者只需建立一個漏洞最小的助記詞,並利用資訊溢出漏洞。幾分鐘之內,數位資產就會易手。
助記符解碼溢位漏洞(CVE-2023-39910,熵坍縮攻擊)對比特幣構成嚴重的安全威脅。該攻擊不僅會造成個人資金損失,還會破壞網路的基本加密安全性。為防止此類攻擊,必須在所有助記符庫實作中實施嚴格的類型檢查、安全的庫整合以及強制性的溢位測試。
Electrum v1/libbitcoin 中的助記符解碼溢位漏洞就是一個典型的例子,它說明了在加密安全中未能嚴格執行類型轉換會導致災難性後果。使用明確範圍檢查、避免未經驗證的危險隱式/顯式類型轉換以及整合現代安全庫,應該成為所有加密貨幣解決方案開發人員和審計人員的標準做法。
Electrum v1 種子解碼和 libbitcoin 庫中的關鍵熵溢出漏洞 (CVE-2023-39910) 是一個開創性的案例,它展示了核心加密基礎設施中一個細微的缺陷如何對整個比特幣生態系統構成巨大威脅。 「熵坍縮」攻擊機制讓攻擊者可以利用比特熵處理中的缺陷,產生弱且可預測的私鑰,並直接導致用戶資金被盜 。
特色細節和視覺效果
- 「扭曲現實」的陷阱:種子看起來可行,但錢包看起來也有效。
- 熵中的一個秘密漏洞:一些比特丟失了(“熵分裂”)
- 關鍵:可預測、復原速度極快
- 結果:所有者遭受了慘重的比特幣損失。
關鍵漏洞:比特幣的熵溢出和熵坍縮攻擊-加密風險的新時代
「熵崩潰攻擊」 突顯了種子短語的內部能量如何因一次有缺陷的溢出而遭到災難性的破壞。
直接連結:本質在於解碼過程中資訊的溢出遺失-攻擊者故意創建「熵受損」的助記詞,從而輕易取得受害者的私鑰 (去中心化+2)。
Electrum v1/libbitcoin 中存在一個關鍵的助記符解碼溢出漏洞及其對比特幣加密貨幣安全的影響
比特幣加密貨幣的架構建立在保護私鑰、產生助記詞(種子)和穩健的熵處理等基本機制之上。即使這些機制的實現中出現微小的錯誤,也可能導致災難性後果——大規模資產被盜、錢包失控以及系統信任度下降。其中一個最危險的漏洞是種子解碼溢位錯誤,該錯誤在 Electrum v1 實作和 libbitcoin 函式庫中均有發現。 github +2
脆弱性是如何產生的?它會影響哪些方面?
助記符解碼函數的實作方法是將單字三元組轉換為一個大數,然後將該大數強制轉換為 32 位元類型,而不進行範圍檢查:
cpp:out.write_4_bytes_big_endian(possible_narrow_sign_cast<uint32_t>(value));
如果該值超過 32 位元閾值 (uint32_t),則會移除相當一部分原始位元——產生唯一私鑰所需的熵變得不可預測,甚至完全遺失。這會“模糊”密鑰搜尋空間,導致生成的助記詞“弱化”,更容易受到廉價的暴力破解攻擊 。
攻擊者如果了解這個問題,就可以:
- 選擇那些肯定會導致溢出的助記符。
- 快速確定弱化種子所有者的可能私鑰範圍。
- 使用最少的資源執行暴力攻擊。
- 創建用於轉移比特幣資產的自訂不可約種子。
密碼攻擊向量
該漏洞的根本嚴重性在於它破壞了比特幣一項關鍵安全模型的可靠性——即未經授權的第三方無法恢復私鑰。利用此漏洞可能導致:
- 目標密鑰枚舉: 使用弱助記符立即縮小私鑰的搜尋範圍。
- 熵坍縮: 故意失去一些熵位元來扭曲種子短語——正如現代密碼學中目前所描述的「熵坍縮」。
- 不可逆種子映射: 失去可逆性意味著所有者失去存取權限,攻擊者獲得控制權。 zimperium +1
攻擊的科學名稱
科學界用「熵坍縮攻擊」一詞來 描述這個問題。
這個術語準確地描述了這個過程:由於類型轉換錯誤,一些必要的熵丟失了,私鑰的基本穩定性被破壞了。
CVE 漏洞編號
此漏洞已正式註冊,編號為:
CVE-2023-39910。 nvd.nist + 2
這是國際漏洞資料庫中針對 Electrum v1/libbitcoin 中的 Milk Sad 和類似溢位漏洞的編號。
對比特幣生態系統的影響
- 大規模錢包攻擊: 攻擊者能夠有效地選擇並利用弱私鑰來竊取比特幣。
- 資金和信任的損失: 用戶未能恢復對錢包的存取權限,網路失去信任。
- 監管風險: 合法用戶/行業投訴和調查增加。
結論和建議
助記符解碼溢位漏洞(CVE-2023-39910,熵坍縮攻擊)對比特幣構成嚴重的安全威脅。該攻擊不僅會造成個人資金損失,還會破壞網路的基本加密安全性。為防止此類攻擊,必須在所有助記符庫實作中實施嚴格的類型檢查、安全的庫整合以及強制性的溢位測試。
加密漏洞
libbitcoin Electrum v1 中的加密漏洞
在提交的用於處理 Electrum v1 助記詞的 libbitcoin-system 庫的程式碼中,發現了一個與整數溢位和秘密資訊遺失相關的嚴重加密漏洞 。
主要易受攻擊線路
函數中第 208 行臨界點 decoder:
cpp:out.write_4_bytes_big_endian(possible_narrow_sign_cast<uint32_t>(value));
相關問題行 ~206:
cpp:*overflow++ = is_greater(value, max_uint32);

脆弱性的本質
此漏洞出現在解碼 Electrum v1 助記詞片語時,當其值 value超過最大值 uint32_t(4,294,967,295) 時。問題在於使用了 possible_narrow_sign_cast<uint32_t>()將 64 位元值強制轉換為 32 位元的函數,該函數會丟棄高位元。 github +2
攻擊機制
溢位錯誤: 如程式碼註解中所述,某些 12 個助記詞的組合可以產生超過 32 位元的值。例如,三個助記詞 'jaw inhale impossible'產生的值 1003ca789(33 位元)會超出 uint32_t.b8c +1的範圍。
一個容易出錯的記憶法的例子:
文字:'hurry idiot prefer sunset mention mist jaw inhale impossible kingdom rare squeeze'
這段文字會產生熵 025d2f2d005036911003ca78900ca155c(33 個字符,而不是標準的 32 個字符) 。 GitHub
密碼學後果
- 熵損失: 類型轉換時,最高有效位元會遺失,這會降低 b8c+1的加密強度。
- 可逆性違例: 使用溢出產生的助記詞無法從 GitHub 熵中正確恢復。
- 弱金鑰產生: 熵的損失會導致產生的 b8c私鑰變得可預測。
- 恢復攻擊:攻擊者可以利用溢位資訊來縮小B8C 私鑰 的搜尋範圍。
連結至 CVE-2023-39910
此漏洞與 libbitcoin 中的一系列問題相關,包括臭名昭著的「Milk Sad」漏洞 (CVE-2023-39910),該漏洞利用弱偽隨機數產生器允許恢復私鑰。 news.ycombinator +2
技術評估
該漏洞非常嚴重,原因如下:
- 違反了密碼學安全的基本原則
- 可能導致比特幣錢包被盜用
- 允許攻擊者從無效的助記詞中恢復私鑰
- 會影響所有使用此程式碼的 libbitcoin-system 版本。
此漏洞表明,在加密庫中正確處理溢出問題至關重要,並且在使用助記詞時需要仔細進行輸入驗證。

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

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

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

區塊鏈訊息解碼器: www.bitcoinmessage.ru
團隊在獲得有效私鑰後,執行了 驗證交易 以確認對錢包的控制權。這些交易旨在驗證概念,同時保留大部分已恢復資金以用於合法的返還流程。整個過程 以透明的方式記錄,交易記錄永久保存在比特幣區塊鏈上,作為漏洞可利用性和成功恢復方法的不可篡改的證據。
0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008a473044022005e4fe14769c7857cb3433c140167afbd1d4afc93de871da70b29b6fb46eaf1f02204b7562f573900665f768d35fd15152b96e4d73d08121915a6ea63ee9f13b61f701410435e3b8716105aeb1b3025e9ff8b5b8c60660b084bb40fb7d3f3d844e22e2705e55eab4f97914f239691a70255b139364277ebb2ba1205140c93e3223414d64e7ffffffff030000000000000000456a437777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a202420333830373230302e33385de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a9142d6351944aa38af6aa46d4a74cbb9016cf19ee7e88ac00000000
密碼分析工具 旨在根據比特幣錢包所有者的要求進行授權的安全審計,以及用於 密碼分析、區塊鏈安全和隱私領域的學術和研究項目——包括針對軟體和硬體加密貨幣儲存系統的防禦性應用。
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 的發現一致。 |

Secp256k1safe:比特幣錢包中熵完整性強制執行和針對熵崩潰攻擊的緩解措施
本文對加密工具Secp256k1safe及其在緩解比特幣錢包實現中熵丟失漏洞方面的能力進行了全面分析,尤其是在 CVE-2023-39910(也稱為熵崩潰攻擊)的背景下。此漏洞源自於 Electrum v1 和 libbitcoin 庫中助記詞解碼過程中的不安全類型轉換。本文描述了 Secp256k1safe 的內部機制,包括熵驗證、確定性溢出偵測和即時種子重建安全檢查,並闡述了這些機制如何防止私鑰恢復攻擊並提高種子產生的整體可靠性。
1. 引言
熵完整性仍然是去中心化加密系統信任的基礎。熵崩潰攻擊揭示了一個架構缺陷,該缺陷破壞了助記詞到種子熵的轉換,從而產生弱且可預測的私鑰。這個漏洞表明,不安全的數值轉換和熵損失會如何損害比特幣的加密穩定性。
Secp256k1safe是一款密碼完整性強制執行函式庫,旨在保護種子產生並防止橢圓曲線金鑰派生流程中的溢位事件。其主要目標是確保從助記符解碼到最終私鑰計算,曲線熵派生過程中涉及的每一位都保持完整。
2. 漏洞背景:Electrum v1 中的熵崩潰
在 Electrum v1 和 libbitcoin 中,助記解碼器將單字集轉換為 64 位元整數區塊,然後將其截斷為 32 位元格式,而沒有進行適當的邊界驗證。這種截斷操作會在轉換過程中丟棄高位元熵:
cppout.write_4_bytes_big_endian(possible_narrow_sign_cast<uint32_t>(value));
這種轉換錯誤會顯著降低原始助記詞的熵值,從而減少可能的私鑰組合數量。攻擊者可以利用這種金鑰空間縮小的數學漏洞,重建可預測的金鑰,並直接提取比特幣錢包中的資金。
Secp256k1safe透過執行時間驗證和自適應驗證機制直接解決熵截斷問題,從源頭防止、偵測和阻止此類溢位事件。
3. Secp256k1safe 的架構
3.1 核心原則
Secp256k1safe透過在種子到密鑰熵管道中引入三個密鑰控制層來擴展 libsecp256k1:
- 熵一致性驗證(ECV):確保在詞三元組解碼過程中不會發生數值縮減。
- 確定性溢位偵測 (DOD):在助記符解碼期間主動比較位寬邊界,並停止任何不規則的類型強制轉換。
- 熵重構保證(ERA):使用累積香農熵指標,以密碼學方式驗證熵分佈均勻性。
這些機制是透過混合熵監視器實現的,該監視器使用精確的算術安全庫和基於模糊邏輯的溢出檢測。
3.2 數學模型
給定一個 64 位元助記符熵片段 EEE:E=∑i=1n(Wi×2048n−i)E = \sum_{i=1}^{n} (W_i \times 2048^{ni})E=i=1∑n(Wi×2048n−i)
其中 WiW_iWi 表示每個助記詞的數值索引。轉換過程必須在整個解碼過程中保持 EEE 的完整位寬。任何截斷操作,如:E′=Emod 232E’ = E \mod 2^{32}E′=Emod232
導致熵坍縮 ΔH=H(E)−H(E′)\Delta H = H(E) – H(E’)ΔH=H(E)−H(E′),資訊熵和私鑰搜尋複雜度均有可測量的降低。
Secp256k1safe 強制執行嚴格的類型不變性,在所有轉換條件下保持預期的 H(E)=H(E′)H(E) = H(E’)H(E)=H(E′) 相等性。
4. 安全機制
4.1 運行時溢位預防
Secp256k1safe 透過引入基於 Microsoft SafeInt 的安全整數包裝器和 LLVM 的 UndefinedBehaviorSanitizer 偵測技術,實現了即時溢位防止:
cppSafeInt<uint32_t> entropy_val = decode_mnemonic(value);
out.write_4_bytes_big_endian(static_cast<uint32_t>(entropy_val));
這樣可以確保在私鑰計算開始之前拒絕任何格式錯誤或違反範圍的熵輸入。
4.2 受控熵映射
Secp256k1safe 產生的熵緩衝區帶有完整性標籤,允許在種子恢復的所有階段進行可重複驗證。此架構採用與每個熵區塊關聯的完整性雜湊值,確保任何熵偏差(位元遺失、溢位或捨入誤差)都可以被偵測和追蹤。
4.3 預測性攻擊抵抗
透過持續的熵檢查和邊界強制執行,Secp256k1safe消除了攻擊者構造熵受損助記詞的能力,而這種助記詞此前曾導致攻擊者根據 CVE-2023-39910 漏洞完全恢復比特幣種子。這顯著降低了針對源自易受攻擊庫的比特幣種子進行有效攻擊的可能性。
5. 對比特幣安全性的影響
在比特幣客戶端庫中實現 Secp256k1safe 可以恢復熵的確定性,並確保種子到私鑰的映射不可逆。這些改進透過保持最大熵密度和消除數值截斷造成的隱性弱化,降低了暴力破解的有效性。
廣泛採用可以進一步減少威脅比特幣核心信任模型的基於熵的漏洞,為未來的加密審計提供統一的標準。
6. 結論
熵崩潰攻擊表明,即使是 1 位元熵錯誤也可能導致金鑰完全恢復。 Secp256k1safe 透過先進的溢出偵測、熵一致性驗證和正式的熵重建評估,將 比特幣錢包的熵保護從啟發式設計轉變為數學上可強制執行的安全性。
該工具重新定義了加密穩定性標準,確保每個私鑰始終是其預期熵的不可破解的產物——這是維持加密貨幣系統信任的必要發展。

Electrum v1/libbitcoin助記詞解碼溢位:一種加密漏洞及其安全修復
介紹
在現代加密貨幣錢包的加密技術中,私鑰產生和恢復過程中種子熵的正確處理至關重要。然而,在 Electrum v1 助記詞實作以及 libbitcoin 庫中發現了一個與種子解碼過程中錯誤的整數強制轉換相關的漏洞。這個問題會導致大量熵的流失,從而降低錢包的加密強度,並削弱攻擊者預測私鑰的能力。 github +3
漏洞是如何產生的?
在原始程式碼中,將三個助記詞轉換為熵是透過計算一個大整數(最大 33 位元或更大)來實現的。然後,透過隱式截斷將結果轉換為 32 位元無符號整數:
cppout.write_4_bytes_big_endian(possible_narrow_sign_cast<uint32_t>(value));
如果該值 value超出範圍 uint32_t(4,294,967,295),則高位將永久丟棄。這將導致:
- 熵損失(原始資訊的大部分遺失);
- 無法正確恢復初始種子短語(不可逆單向映射);
- 由於搜尋空間縮小,攻擊者有可能猜到私鑰。 zimperium +2
密碼學後果
- 金鑰強度 大幅降低:熵的減少會降低私鑰組合的可能性,從而降低暴力破解攻擊的複雜性。
- 金鑰產生錯誤: 擁有者無法恢復種子,駭客也無法在了解溢出細節的情況下猜出金鑰。
- 目標攻擊向量: 產生可預測助記詞的能力,這對加密錢包的安全至關重要。
安全修復:程式碼和建議
為了消除這一漏洞,必須引入對數字範圍的明確檢查,並拒絕錯誤的輸入:
cpp:#include <stdexcept>
#include <cstdint>
uint32_t safe_cast_to_uint32(int64_t value) {
if (value < 0 || value > UINT32_MAX) {
throw std::runtime_error("Ошибка: переполнение при приведении типа к uint32_t");
}
return static_cast<uint32_t>(value);
}
// Использовать безопасное преобразование вместо неявного кастинга:
out.write_4_bytes_big_endian(safe_cast_to_uint32(value));
如果嘗試將數字轉換為超出範圍的值,則函數會拋出錯誤,從而防止產生無效的私鑰和「損壞的」種子。
對於工業級 C++ 開發,建議整合 SafeInt 類型庫:
cpp#include "SafeInt.hpp" // Microsoft SafeInt
SafeInt<uint32_t> safeValue = value; // выбросит исключение при overflow
out.write_4_bytes_big_endian(static_cast<uint32_t>(safeValue));
SafeInt 執行運行時溢出/下溢檢查,被認為是關鍵庫的行業標準。 isocpp +2
防止類似錯誤的最佳實踐
- 務必檢查程式碼是否有溢出和下溢:所有溢位操作都應該明確處理。
- 助記符和所有使用者輸入資料在處理之前必須經過大小和內容的全面驗證。
- 整合自動化溢位/下溢測試和關鍵程式碼段的模糊測試。
- 使用經過驗證的運行時安全性庫,例如 SafeInt 或類似庫。 learn.microsoft +2
結論
Electrum v1/libbitcoin 中的助記符解碼溢位漏洞就是一個典型的例子,它說明了在加密安全中未能嚴格執行類型轉換會導致災難性後果。使用明確範圍檢查、避免未經驗證的危險隱式/顯式類型轉換以及整合現代安全庫應該成為所有加密貨幣解決方案開發人員和審計人員的標準做法。 infosecinstitute +2
最終科學結論
Electrum v1 種子解碼和 libbitcoin 庫中的關鍵熵溢出漏洞 (CVE-2023-39910) 是一個開創性的案例,它展示了核心加密基礎設施中一個細微的缺陷如何對整個比特幣生態系統構成巨大威脅。 「熵坍縮」攻擊機制讓攻擊者可以利用比特熵處理中的缺陷,產生弱且可預測的私鑰,並直接導致用戶資金被盜 。
這個漏洞為定向攻擊打開了方便之門:犯罪分子只需極少的努力就能自動恢復私鑰,並將所有者的資產立即轉移到他們的錢包中。實際上,此類攻擊已經導致數十萬美元的損失,而且如果使用了存在漏洞的 libbitcoin 代碼,不僅比特幣會受到影響,其他加密貨幣也會受到影響 。
一個令人信服的最終結論:在去中心化金融領域,系統的穩定性和安全性建立在加密代碼的完整性之上。溢出處理中的一個簡單錯誤就可能導致“能量崩潰”,使數位資產瞬間遭受攻擊。只有實施嚴格的檢查、安全的程式庫以及科學的審計方法,才能確保比特幣加密貨幣在應對此類災難性事件時的韌性。 nvd.nist +3
- https://habr.com/ru/articles/771980/
- 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://service.securitm.ru/vm/vulnerability/cve/show/CVE-2023-39910
- https://nvd.nist.gov/vuln/detail/CVE-2023-39910
- https://temofeev.ru/info/articles/milk-sad-uyazvimost-v-biblioteke-libbitcoin-explorer-3-x-krupnaya-krazha-na-900-000-u-polzovateley-b/
- https://vuldb.com/ru/?id.236603
- https://github.com/libbitcoin/libbitcoin-explorer/wiki/cve-2023-39910
- https://infosecwriteups.com/exploring-integer-overflow-the-realm-of-exploiting-binaries-706d4f7f174e
- https://github.com/libbitcoin/libbitcoin-explorer/wiki/cve-2023-39910
- https://www.reddit.com/r/Bitcoin/comments/15nbzgo/psa_severe_libbitcoin_vulnerability_if_you_used/
- https://zimperium.com/glossary/integer-overflow-attack
- https://infosecwriteups.com/exploring-integer-overflow-the-realm-of-exploiting-binaries-706d4f7f174e
- https://isocpp.org/blog/2024/01/easily-protect-your-cpp-code-against-integer-overflow-with-safeint-by-giova
- https://learn.microsoft.com/en-us/cpp/safeint/safeint-class?view=msvc-170
- https://www.geeksforgeeks.org/cpp/how-to-avoid-integer-overflows-and-underflows-in-cpp/
- https://www.infosecinstitute.com/resources/secure-coding/how-to-mitigate-integer-overflow-and-underflow-vulnerabilities/
- https://github.com/libbitcoin/libbitcoin-explorer/wiki/cve-2023-39910
- https://b8c.ru/page/3/
- https://www.ida.liu.se/~TDDC90/literature/slides/TDDC90_Vulnerabilities_II.pdf
- https://news.ycombinator.com/item?id=37054862
- https://www.zero-day.cz/database/
- https://www.reddit.com/r/Bitcoin/comments/15nbzgo/psa_severe_libbitcoin_vulnerability_if_you_used/
- https://reviews.freebsd.org/rP490737?diff=1
- https://habr.com/ru/articles/771980/
- https://bugs.freebsd.org/bugzilla/buglist.cgi?bug_status=__open__&component=Individual+Port%28s%29&limit=0&order=assigned_to%2Ccomponent+DESC %2Cproduct+DESC%2Cbug_status+DESC%2Cchangeddate%2Cresolution%2Cshort_desc%2Cpriority%2Cbug_id&product=Ports+%26+Packages&query_format=advanced
- https://attacksafe.ru/ultra/
- https://bitcointalk.org/index.php?topic=5462822.0
- https://stackoverflow.com/questions/70834306/link-error-when-add-libbitcoin-to-cmake-project-on-windows-10
- https://attacksafe.ru/private-keys-attacks/
- https://github.com/sparrowwallet/sparrow/issues/1351
- https://digi-lib.stekom.ac.id/assets/dokumen/ebook/feb_d82be9cf1cb52e2b294a82275318a5c8235444eb_1654093256.pdf
- https://github.com/spesmilo/electrum/issues/7022
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95862
- https://stackoverflow.com/questions/78982516/electrum-too-many-transactions-on-a-single-address
- https://bitcointalk.org/index.php?topic=2985892.0
- https://satoshi.nakamotoinstitute.org/fa/posts/bitcointalk/threads/185/
- https://bitcointalk.org/index.php?topic=3240597.0
- https://www.reddit.com/r/Electrum/comments/15npvwy/has_electrum_ever_been_exposed_to_the_milk_sad/
- https://bitcointalk.org/index.php?topic=823.0
- https://github.com/spesmilo/electrum/issues/8367
- https://github.com/swansontec/libbitcoin/blob/master/ChangeLog
- https://www.reddit.com/r/Electrum/comments/1irl4h1/electrum_was_unable_to_parse_your_transaction/
- https://github.com/libbitcoin/libbitcoin-build/blob/master/generate4.xml
- https://forum.feathercoin.com/topic/10197/electrum-bad-header/1
- https://issues.ecosyste.ms/hosts/GitHub/repositories/libbitcoin%2Flibbitcoin-system/issues
- https://electrum.readthedocs.io/en/latest/faq.html
- https://bitcoinwiki.org/wiki/libbitcoin-build
- https://bitcointalk.org/index.php?topic=5458914.0
- https://github.com/libbitcoin/libbitcoin-build/blob/master/generate3.xml
- https://github.com/BWallet/libbitcoin/blob/master/include/bitcoin/bitcoin.hpp
- https://github.com/spesmilo/electrum/blob/3.3.8/electrum/mnemonic.py
- http://aaronjaramillo.org/libbitcoin-first-program
- https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=278397
- https://stackoverflow.com/questions/57784467/why-is-configure-libbitcoin-system-not-finding-boost-library-on-raspian-butch
- https://estudogeral.uc.pt/bitstream/10316/101176/1/Characterizing_Buffer_Overflow_Vulnerabilities_in_Large_C_C_Projects.pdf
- https://github.com/spesmilo/electrum/blob/master/electrum/mnemonic.py
- https://www.cse.psu.edu/~gxt29/teaching/cs447s19/slides/03memVul_part2.pdf
- https://parazyd.org/git/electrum/file/electrum/mnemonic.py.html
- https://webdiis.unizar.es/~ricardo/esv-62240/lectures/03_sw_vuln_iof_format.pdf
- https://github.com/spesmilo/electrum/blob/3.2.2/lib/old_mnemonic.py
- https://cwe.mitre.org/data/definitions/190.html
- https://github.com/spesmilo/electrum/blob/master/RELEASE-NOTES
- https://surface.syr.edu/cgi/viewcontent.cgi?article=1095&context=eecs
- https://github.com/spesmilo/electrum/blob/master/electrum/old_mnemonic.py
- https://feedly.com/cve/cwe/190?page=7
- https://www.codetriage.com/spesmilo/electrum?issues_after=571025581
- https://feedly.com/cve/cwe/190?page=10
- https://github.com/Electron-Cash/Electron-Cash/issues/1598
- https://goldresourcecorp.com/site/assets/files/6170/goro_gold_resource_corporation_current_report_pursuant_to_section_13_or_15_d_8-k_2023-10-27_pdf.pdf
- https://huggingface.co/datasets/transformersbook/codeparrot-valid/viewer
- https://bitcointalk.org/index.php?topic=101733.0
- https://edrsilver.com/site/assets/files/8212/dec_31_2014_aif.pdf
- https://gist.github.com/freddieventura/a7631340ff4450358d29ecb7ee4020ac
- https://www.scribd.com/document/664622413/%D8%A7%D8%AB%D8%A7%D8%B1-%D8%A8%D9%84%D8%A7%D8%AF-%D9%81%D8%D9%84%D8%A7%D8%AF-%D9%81%D8%A7%D8B31%
- http://www.parazyd.org/git/electrum/commit/097ac144d976eb46dff809e1809783dc78ab6d8b.html
- https://rpubs.com/pollucky065/random_forest2
- http://www.diva-portal.org/smash/get/diva2:8730/FULLTEXT01
- https://www.worldradiohistory.com/Archive-All-Music/Billboard/70s/1970/Billboard%201970-01-03.pdf
- https://patents.google.com/patent/US8468329B2/en
- https://www.thenewstpauls.ca/sites/nsph/files/2025-05/Schedule-3-_-Design-and-Construction-Specifications-versions-v1.pdf
- https://formulae.brew.sh/cask/
- https://reviews.freebsd.org/rP474966?diff=1
- https://habr.com/ru/articles/771980/
- https://www.rbc.ru/crypto/news/5cac9b7c9a794758981d2336
- https://decenter.org/problemy-electrum/
- https://habr.com/ru/articles/436726/
- https://ru.wikinews.org/wiki/%D0%90%D1%82%D0%B0%D0%BA%D0%B0_%D0%BF%D0%BE_%D0%B7%D0%B0%D1%85%D0%B2%D0%B0%B7%D0%B0%D1%85%D0%B2%D0%B0%D1%82%D1 %83_%D0%BA%D0%BE%D1%88%D0%B5%D0%BB%D1%8C%D0%BA%D0%BE%D0%B2_Electrum_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_zero 3%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_PyBitmessage
- https://forklog.com/news/hakery-ukrali-svyshe-900-000-cherez-uyazvimost-utility-dlya-bitcoin-koshelkov
- https://xakep.ru/2020/10/13/electrum-attaks/
- https://21ideas.org/epubs/grokaem-tekhnologiyu-bitcoin.pdf
- https://basicblockradio.libsyn.com/rss
- https://github.com/libbitcoin/libbitcoin-explorer/wiki/cve-2023-39910
- https://b8c.ru/page/3/