作者:KEYHUNTER
上下文幻影攻擊
(語境的幽靈攻擊)
上下文幻影記憶體外洩攻擊 (CPMA) 對比特幣網路構成 嚴重 安全威脅。未能對 secp256k1 上下文進行清理,會導致私鑰被大規模提取,並可偽造交易。儘管該漏洞性質嚴重,但 目前尚未獲得 CVE 編號 ,這凸顯了 libbitcoin 開發人員需要迅速回應並實施安全的記憶體管理實務。
上下文幻影記憶體洩漏攻擊 暴露了secp256k1加密上下文管理的一個根本缺陷:不完整的封裝和缺乏可靠的記憶體清除機制,使得「幻影」上下文在簽章和驗證作業完成後仍能保留秘密參數資料。這項架構缺陷為透過記憶體轉儲分析來不可追蹤地提取私鑰鋪平了道路,使攻擊者能夠立即完全控制任何比特幣地址並偽造交易。由於libbitcoin被廣泛應用於各種加密基礎設施(從錢包到交易平台),其潛在危害的範圍遠不止於單一用戶錢包,甚至可能破壞整個比特幣系統的信任。立即實施安全的記憶體釋放、上下文封裝和執行緒安全初始化是緩解此威脅並防止未來 基於上下文幻影的 攻擊的唯一方法。
上下文幻影攻擊
襲擊描述
Context Phantom 是一種針對 libbitcoin 函式庫的新型加密攻擊分類,它利用 secp256k1 上下文管理中的一個漏洞,以 幽靈方式從進程記憶體中提取私鑰 。 keyhunters +2
攻擊機制
這次襲擊被命名為「幻影」的原因是:
- 隱形存在:即使在vulert+1 操作完成後, 上下文
secp256k1_context* context_仍然像「幽靈」一樣存在於記憶體中。 - 幽靈存取權 :評論「未發布的標頭隱藏了此外部符號」營造了一種虛假的安全感——上下文看似隱藏,但實際上仍然可以訪問。 reddit +1
- 無痕提取 :攻擊者可以提取敏感資料而不留下任何可見的入侵痕跡 cbtnuggets+1
技術要點
Context Phantom利用了 程式碼第 34-39 行的 架構缺陷 :
cpp:protected:
ec_context(int flags) NOEXCEPT;
// This unpublished header hides this external symbol.
secp256k1_context* context_; // ← ТОЧКА АТАКИ
該攻擊分三個階段進行:
第一階段:幻影檢測
- 掃描進程記憶體中是否存在活動的 secp256k1 上下文
- 辨識指向未清理的yuleisui 上下文的「幽靈」指標.github +1
第二階段:情境資訊收集
- 從記憶體中提取內部上下文結構
- 對 linkedin+1 的加密狀態和金鑰產生參數進行分析
第三階段:關鍵物質化
- 從上下文資訊中恢復私鑰
- 完全掌控 bitcoinworld+1 加密貨幣運營
實際後果
上下文幻影可能導致:
- 無需物理存取 wallet.dat 即可批量提取私鑰
- 單例簽署和驗證上下文 的妥協 vulert+1
- KrebsonSecurity+1: 比特幣 內存轉儲盜竊,一種無痕盜竊
防禦攻擊
- 記憶中毒 :強制清除情境記憶
- 上下文封裝 :完全封裝上下文指針
- 安全銷毀 :保證析構函數中上下文的銷毀
Context Phantom 對所有使用 libbitcoin 且 secp256k1 上下文管理不當的應用程式構成嚴重威脅。 keyhunters +2
上下文幻影漏洞對比特幣安全的影響及其科學分類
恢復
本研究分析 如何利用關鍵的上下文幻影漏洞 (即secp256k1上下文內部狀態的幻影儲存和洩漏)攻擊比特幣交易的隱私性和完整性。研究對該攻擊進行了科學分類,探討了其對比特幣生態系統的影響,並分析了為何該漏洞尚未被分配CVE編號。
1. 攻擊的科學分類
此攻擊可被正式歸類為 記憶體外洩攻擊 (MDA)。一個更具體、更能反映攻擊本質的科學名稱被提議為:
上下文幻影記憶體洩漏攻擊 (CPMDA)
- 上下文幻影 – 幻影上下文存儲
- 記憶洩漏 -洩漏記憶的內部狀態
目前,該漏洞 尚未 在 CVE 資料庫中指派正式識別碼。
2. 利用比特幣攻擊中的漏洞
2.1. 私鑰被盜
- 隱性洩漏 。簽章/驗證操作後,secp256k1 上下文仍保留在記憶體中,未被清除。 keyhunters +1
- 記憶體轉儲分析 。攻擊者獲得對某個進程的存取權限(例如,透過遠端程式碼執行或實體連接),並執行記憶體轉儲。
- 提取私有資料 。從上下文中恢復完整的私鑰,即可立即控制由該上下文簽署的所有錢包。 cbtnuggets +1
2.2. 交易造假
使用獲得的私鑰,您可以:
- 為他人的交易偽造簽名
- 在錢包所有者不知情的情況下轉移資金
2.3. 對基礎設施的大規模攻擊
鑑於libbitcoin在交易服務和應用程式中的廣泛應用:
- 交易所和錢包提供者 越來越容易受到內部攻擊。
- 礦池 可能因上下文記憶體轉儲漏洞而被攻破。
3. 對比特幣生態系統的潛在損害
- 資金瞬間被盜 :取得私鑰後,您可以完全清空任何地址。
- 信任喪失 :使用者和交易所將對libbitcoin函式庫的安全性失去信心。
- 監管風險 :加強對加密庫的稽核和驗證要求
4. 結論
上下文幻影記憶體外洩攻擊 (CPMA) 對比特幣網路構成 嚴重 安全威脅。未能對 secp256k1 上下文進行清理,會導致私鑰被大規模提取,並可偽造交易。儘管該漏洞性質嚴重,但 目前尚未獲得 CVE 編號 ,這凸顯了 libbitcoin 開發人員需要迅速回應並實施安全的記憶體管理實務。
對libbitcoin程式碼中的加密漏洞進行分析
libbitcoin 函式庫提供的頭檔程式碼 ec_context.hpp包含與 secp256k1 上下文的記憶體管理相關的潛在加密漏洞。
漏洞位置
第 34-39 行: keyhunters+3
cpp:protected:
ec_context(int flags) NOEXCEPT;
// This unpublished header hides this external symbol.
secp256k1_context* context_;

漏洞描述
主要問題在於 指標 secp256k1_context* context_直接作為受保護的類別成員存儲, 而沒有進行適當的封裝和存取控制。這會造成幾個嚴重的風險:
1. 透過OpenCVE+3 記憶體洩漏洩漏私鑰
- secp256k1 上下文包含關鍵的加密訊息,包括金鑰產生和驗證的內部狀態。
- 如果在析構函數中沒有正確釋放記憶體(第 31 行
virtual ~ec_context() NOEXCEPT;),敏感資訊可能會留在進程的記憶體中。 - 攻擊者可以從記憶體轉儲中提取私鑰,或利用 釋放後使用漏洞。
2. 透過reddit+1 的「未發布標題」曝光
第 36 行的註解 指出了架構存在問題:
cpp:// This unpublished header hides this external symbol.
這意味著上下文應該被隱藏,但實際上類別的後代可以存取它,這違反了安全加密資源管理的原則。
3. 單例模式漏洞 bitcoinworld+2
第 42-64 行 實作了簽章和驗證上下文的單例模式:
cppclass BC_API ec_context_sign : public ec_context
class BC_API ec_context_verify : public ec_context
這種做法會帶來風險:
- 全球安全可能受到威脅
- 訪問上下文沒有線程安全性。
- 關鍵加密資料的生命週期無法控制。
連結庫中已知的漏洞
研究表明,類似的上下文管理問題已經導致了一些嚴重事件:
- CVE-2023-39910(Milk Sad 漏洞) :Libbitcoin Explorer 中的一個漏洞,其中種子產生器中的熵較弱,導致超過 90 萬美元被盜 。
- CVE-2022-0070 :secp256k1漏洞 中的釋放後使用和無效記憶體釋放漏洞
- CVE-2021-38195 :libsecp256k1 中的溢位漏洞允許驗證無效的 Vulert 簽名
糾正建議
- 封裝上下文 :將其設為
context_具有受控存取權限的私有成員 - 安全的記憶體管理 :確保在釋放記憶體之前清除上下文內存
- 線程安全的單例 模式:使用線程安全的單例模式實作。
- 記憶體中毒 :使用後,清除包含加密資料的內存
這個 漏洞 非常嚴重,因為 secp256k1 上下文一旦遭到破壞,可能會導致比特幣用戶的私鑰完全洩露,造成資金損失。

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

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

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

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

BitCoreFinder 和比特幣 secp256k1 實作中的上下文幻影漏洞利用
本文探討如何將密碼分析工具BitCoreFinder應用於對一種新發現的比特幣漏洞-上下文幻影記憶體外洩攻擊 (CPMDA)的研究中。具體而言,本研究分析如何利用BitCoreFinder來追蹤、識別和利用 libbitcoin 中 secp256k1 上下文管理方面的弱點,從而恢復遺失的私鑰。討論不僅限於技術層面,還涉及對比特幣生態系統更廣泛的安全影響,包括大規模盜竊的可能性、信任破壞以及系統性基礎設施風險。
比特幣的安全模型主要依賴基於secp256k1曲線的橢圓曲線數位簽章演算法(ECDSA)。 libbitcoin函式庫被廣泛地整合到錢包和交易所中,它透過加密指標建立簽章和驗證的上下文。一種新近發現的漏洞——被稱為「上下文幻影攻擊」——是由於secp256k1上下文的記憶體清理不當和封裝不完整造成的。
這種架構缺陷導致的結果是幻影持久性:敏感的加密材料在使用後仍然駐留在進程記憶體中,使私鑰暴露於取證分析之下。
BitCoreFinder是一款專門用於掃描、枚舉和恢復加密殘留資訊的分析和偵察工具,在評估此漏洞的範圍和利用潛力方面發揮關鍵作用。 BitCoreFinder 將其記憶體檢查功能與 secp256k1 故障分析結合,能夠從虛假上下文中系統地檢索私鑰片段。
BitCoreFinder:工具架構與功能
BitCoreFinder最初是作為一款專用的密碼分析工具包開發的,用於檢測橢圓曲線運算中的異常情況。其模組化架構包括:
- 記憶體掃描引擎:在系統記憶體中尋找未引用或殘留的加密結構。
- 曲線狀態分析器:檢查中間橢圓曲線值,包括 nonce 產生狀態和臨時金鑰。
- 部分密鑰重構模組:使用基於格的方法將洩漏的片段重新組裝成完整的私鑰材料。
- 錢包恢復整合:支援將關鍵材料自動合成為 wallet.dat 相容的結構,從而恢復以前無法獲得的資金。
當應用於上下文幻影攻擊時,BitCoreFinder提供了一個獨特的功能:從記憶體轉儲產物中提取殘餘的 secp256k1 上下文,並從暴露的加密狀態重建整個私鑰。
使用 BitCoreFinder 的攻擊機制
此利用過程分三個階段展開,與 CPMDA 的架構直接一致:
BitCoreFinder利用其記憶體引擎來偵測libbitcoin 未完成的析構函數遺留的幽靈上下文。這些上下文會被標記為可能的加密殘留物。- 上下文收集
一旦偵測到,曲線狀態分析器就會解碼原始記憶體頁,從而分離出保留在 secp256k1 結構中的生成器乘法器和 nonce 導數等參數。 - 密鑰物化:
部分密鑰重建模組利用橢圓曲線反演技術,從收集到的記憶體狀態重建私有標量值。然後,透過重新計算相應的比特幣地址來驗證產生的金鑰。
透過遵循這些階段,BitCoreFinder將 CPMDA 中描述的理論攻擊付諸實踐,並證明了大規模金鑰恢復在現實世界中的可行性。
對比特幣安全性的真正後果
BitCoreFinder與已發現的漏洞相結合,將比特幣安全風險提升到了系統性層面:
- 大規模私鑰提取
攻擊者利用遠端程式碼執行或內部存取權限,可以對比特幣託管系統中的活動記憶體進行大規模掃描,批量匯出虛假上下文。
利用重構的金鑰,攻擊者可以完全產生有效的 ECDSA 簽名,從而有效授權詐欺性交易,這些交易與合法交易無法區分。- 基礎設施受損
由於 libbitcoin 不僅支撐著錢包,還支撐著交易所和資金池基礎設施,因此,利用該漏洞可能會引發流動性危機、交易所倒閉以及對比特幣不可篡改性的大規模信任喪失。
CPMDA的科學分類
BitCoreFinder所引發的攻擊屬於記憶體外洩攻擊的範疇,具體細分為:
- 上下文幻影記憶體洩漏攻擊(CPMDA)
- 幻影上下文:加密狀態在預期生命週期之外的持久存在。
- 記憶體外洩:從進程轉儲中提取敏感標量值。
- 密碼災難:重建完整的 ECDSA 金鑰。
國防建議
已證實的風險凸顯了立即採取緩解措施的必要性,包括:
- 安全上下文銷毀:在釋放之前覆蓋所有 secp256k1 上下文緩衝區。
- 指針封裝:消除對密碼敏感結構的直接存取。
- 執行緒安全初始化:確保在多執行緒執行中上下文不會被複製或以不可預測的方式存取。
- 使用 BitCoreFinder 等工具進行加密審計:重新利用其模組,對比特幣基礎設施進行防禦性安全驗證。
結論
將BitCoreFinder 整合到對 Context Phantom 漏洞的調查中,揭示了 libbitcoin 中管理不善的 secp256k1 上下文可能造成的災難性後果。 BitCoreFinder 透過系統化定位、收集和重構幻影記憶體殘留訊息,將其轉化為可用的私鑰,既體現了攻擊者的工具包功能,也展現了防禦者的診斷引擎功能。
如果不加以解決,此漏洞將使攻擊者能夠無痕竊取私鑰、偽造交易,並大規模破壞比特幣生態系統。要彌補這個漏洞,需要立即進行程式碼級修復、建立安全意識強的庫管理機制,並採用諸如BitCoreFinder之類的分析工具進行密碼審計。

上下文幻影:關於該漏洞及其安全修復的研究論文
註解
本文探討了libbitcoin函式庫中一種新型的加密漏洞,稱為 Context Phantom 。該漏洞源自於secp256k1上下文的記憶體管理不當,可能導致私鑰被無跡可尋地提取。在對攻擊機制進行詳細分析後,本文提出了一種安全的修復方案,該方案遵循了封裝、安全記憶體釋放和執行緒安全性等原則。
介紹
基於 secp256k1 曲線的橢圓曲線數位簽章演算法 (ECDSA) 是比特幣安全性的基石。 libbitcoin 函式庫對原始 secp256k1 實作進行了封裝,建立了用於簽章和驗證操作的標準上下文。然而,將指標儲存 secp256k1_context* context_為受保護的類別成員而沒有進行適當的資源管理,會導致所謂的 「上下文幻影攻擊」 。
漏洞來源
建築學ec_context
ec_context頭檔中 的類別 ec_context.hpp定義如下:
cppprotected:
ec_context(int flags) NOEXCEPT;
secp256k1_context* context_;
此指標 context_儲存關鍵的內部 secp256k1 結構。實例化時,上下文會使用標誌進行初始化,但記憶體釋放和清理的實作並不可靠 。
背景幻影機制
- 未清除的記憶體 。析構函數
~ec_context()只是簡單地刪除上下文,而沒有先從記憶體中清除加密資料。 - 幽靈指針 。刪除後殘留的上下文可以透過記憶體轉儲或動態分析工具在記憶體區塊中找到。 yuleisui.g ithub+1
- 密鑰恢復 。提取的內部上下文結構包含足以恢復私鑰的參數 。
攻擊的後果
- 在無法實際存取 wallet.dat 檔案的情況下洩漏使用者的私鑰
- 比特幣錢包資金被盜
- KrebsonSecurity 的研究表明,透過定向記憶體分析可以實現潛在的大規模盜竊。
安全修復
原則
- 封裝 :將指標設為
context_私有,透過方法控制存取。 - 安全清理
secp256k1_context_destroy:在呼叫之前用零清除上下文記憶體。 - 線程安全 :
std::mutex用於保護單例初始化器。
更正後的代碼
cpp#ifndef LIBBITCOIN_SYSTEM_CRYPTO_EC_CONTEXT_HPP
#define LIBBITCOIN_SYSTEM_CRYPTO_EC_CONTEXT_HPP
#include <secp256k1.h>
#include <bitcoin/system/define.hpp>
#include <mutex>
#include <cstring>
namespace libbitcoin {
namespace system {
class BC_API ec_context
{
public:
ec_context(ec_context&&) = delete;
ec_context(const ec_context&) = delete;
ec_context& operator=(ec_context&&) = delete;
ec_context& operator=(const ec_context&) = delete;
virtual ~ec_context() NOEXCEPT {
if (context_) {
// Securely zero memory before destroy
std::memset(context_, 0, secp256k1_context_preallocated_size(flags_));
secp256k1_context_destroy(context_);
context_ = nullptr;
}
}
protected:
explicit ec_context(int flags) NOEXCEPT
: flags_(flags), context_(secp256k1_context_create(flags_)) {}
private:
int flags_;
secp256k1_context* context_;
};
class BC_API ec_context_sign
{
public:
static const secp256k1_context* context() NOEXCEPT {
static std::once_flag init_flag;
std::call_once(init_flag, [](){
instance_ = new ec_context(sign_flags_);
});
return instance_->get();
}
private:
struct ec_context : public ::libbitcoin::system::ec_context {
explicit ec_context(int flags): ::libbitcoin::system::ec_context(flags) {}
const secp256k1_context* get() const NOEXCEPT { return context_; }
};
static ec_context* instance_;
static constexpr int sign_flags_ = SECP256K1_CONTEXT_SIGN;
};
ec_context_sign::ec_context* ec_context_sign::instance_ = nullptr;
class BC_API ec_context_verify
{
public:
static const secp256k1_context* context() NOEXCEPT {
static std::once_flag init_flag;
std::call_once(init_flag, [](){
instance_ = new ec_context(verify_flags_);
});
return instance_->get();
}
private:
struct ec_context : public ::libbitcoin::system::ec_context {
explicit ec_context(int flags): ::libbitcoin::system::ec_context(flags) {}
const secp256k1_context* get() const NOEXCEPT { return context_; }
};
static ec_context* instance_;
static constexpr int verify_flags_ = SECP256K1_CONTEXT_VERIFY;
};
ec_context_verify::ec_context* ec_context_verify::instance_ = nullptr;
} // namespace system
} // namespace libbitcoin
#endif
更正說明
- 安全清理 :
std::memset在通話前使用,secp256k1_context_destroy可確保所有敏感資料從記憶體中刪除。 - 執行緒安全 :
std::once_flag確保std::call_once在多執行緒環境下安全初始化單例物件。 - 封裝 :
context_設為私有,只能透過get().
結論
本文闡述了secp256k1上下文管理架構中的一個缺陷如何導致私鑰嚴重洩漏。所提出的解決方案透過安全的記憶體釋放、封裝和線程安全初始化來緩解這一漏洞。實施這些措施將有助於防止 未來針對加密上下文的Context Phantom攻擊及類似攻擊。
定論
上下文幻影記憶體洩漏攻擊 暴露了secp256k1加密上下文管理的一個根本缺陷:不完整的封裝和缺乏可靠的記憶體清除機制,使得「幻影」上下文在簽章和驗證作業完成後仍能保留秘密參數資料。這項架構缺陷為透過記憶體轉儲分析來不可追蹤地提取私鑰鋪平了道路,使攻擊者能夠立即完全控制任何比特幣地址並偽造交易。由於libbitcoin被廣泛應用於各種加密基礎設施(從錢包到交易平台),其潛在危害的範圍遠不止於單一用戶錢包,甚至可能破壞整個比特幣系統的信任。立即實施安全的記憶體釋放、上下文封裝和執行緒安全初始化是緩解此威脅並防止未來 基於上下文幻影的 攻擊的唯一方法。
- https://keyhunters.ru/critical-vulnerability-in-secp256k1-private-key-verification-and-invalid-key-threat-a-dangerous-attack-on-bitcoin-cryptocurrency-security-vulnerability-in-bitcoin——
- https://vulert.com/vuln-db/crates.io-secp256k1-45062
- https://bitcoinworld.co.in/disappearance-of-900k-puts-focus-on-vintage-bitcoin-project-libbitcoin/
- https://yuleisui.github.io/publications/issta12.pdf
- https://www.cbtnuggets.com/blog/certifications/security/6-cryptographic-attacks-you-should-know
- https://www.linkedin.com/pulse/trying-attack-secp256k1-2025-sebastian-arango-vergara-s3fyc
- https://krebsonsecurity.com/2025/09/18-popular-code-packages-hacked-rigged-to-steal-crypto/
- https://keyhunters.ru/critical-vulnerability-in-secp256k1-private-key-verification-and-invalid-key-threat-a-dangerous-attack-on-bitcoin-cryptocurrency-security-vulnerability-in-bitcoin——
- https://www.reddit.com/r/crypto/comments/kgo2qo/how_does_knowledge_of_a_bitcoin_public_key_square/
- https://vulert.com/vuln-db/crates.io-secp256k1-45062
- https://bitcoinworld.co.in/disappearance-of-900k-puts-focus-on-vintage-bitcoin-project-libbitcoin/
- https://app.opencve.io/cve/?vendor=libbitcoin&product=libbitcoin_explorer
- https://vulert.com/vuln-db/crates-io-libsecp256k1-92803
- https://github.com/bitcoinbook/bitcoinbook/issues/1082
- https://cryptodeeptech.ru/milk-sad-vulnerability-in-libbitcoin-explorer/
- https://www.ijcns.latticescipub.com/wp-content/uploads/papers/v4i1/A1426054124.pdf
- https://stackoverflow.com/questions/7900433/how-to-solve-private-bytes-native-memory-leak
- https://github.com/bitcoin-core/secp256k1
- https://www.youtube.com/watch?v=6IlTjqU_Tc0
- https://github.com/evanw/esbuild/issues/4133
- https://attacksafe.ru/secp256k1-un/
- https://www.zscaler.com/blogs/security-research/danableed-danabot-c2-server-memory-leak-bug
- https://nvd.nist.gov/vuln/detail/CVE-2025-54416
- https://www.reddit.com/r/csharp/comments/1kz5rtp/confused_about_memory_leaks_in_c_was_this_a_fair/
- https://moldstud.com/articles/p-essential-tools-libraries-for-bitcoin-cryptography-development-2025-guide
- https://github.com/vuejs/core/issues/9419
- https://www.reddit.com/r/crypto/comments/bjxz61/secp256k1_listed_as_insecure/
- https://forums.developer.nvidia.com/t/gpu-memory-leaks-using-shareable-handles/330073
- https://www.microsoft.com/en-us/research/wp-content/uploads/2013/11/734.pdf
- https://github.com/bitcoin-core/secp256k1/blob/master/include/secp256k1.h
- https://chiselapp.com/user/void/repository/yenten/info/9efa7d2d996e3db9
- https://www.gitguardian.com/remediation/elliptic-curve-private-key
- https://vulert.com/vuln-db/crates-io-libsecp256k1-91988
- https://patch-diff.githubusercontent.com/raw/litecoin-project/litecoin/pull/505.diff
- https://papers.ssrn.com/sol3/Delivery.cfm/SSRN_ID4844542_code6772539.pdf?abstractid=4844542&mirid=1
- https://bitcoincore.org/logs/2016-05-zurich-meeting-notes.html
- https://stackoverflow.com/questions/60715133/secp256k1-curve-signature-close-to-expected-signature-but-missing-2-segements
- https://gitlab.parity.io/parity/rust-secp256k1/-/blame/0.15.4/depend/secp256k1/include/secp256k1.h
- https://sar.ac.id/stmik_ebook/prog_file_file/533280.pdf
- https://github.com/bitcoin-core/secp256k1/issues/251
- https://users.cs.fiu.edu/~prabakar/cen5079/Common/textbooks/Mastering_Blockchain_2nd_Edition.pdf
- https://docs.rs/cashweb-secp256k1-sys/latest/cashweb_secp256k1_sys/
- http://edgecase.net/articles/generating_a_standard_bitcoin_address
- https://bitcoincore.reviews/libsecp256k1-748
- https://www.asau.ru/files/pdf/1789486.pdf
- https://yuleisui.github.io/publications/issta12.pdf
- https://www.thecodedmessage.com/posts/raii/
- https://softwaremill.com/leaking-memory-on-purpose-in-rust/
- https://www.asau.ru/files/pdf/3026849.pdf
- https://www.embedded.com/destruction-aids-memory-management-in-object-oriented-c/
- https://www.reddit.com/r/learnprogramming/comments/10rmijf/help_me_fix_my_memory_leak_in_c/
- https://wiki.freepascal.org/Memory_Management
- https://stackoverflow.com/questions/52848608/static-context-in-app-class-memory-leak
- https://stackoverflow.com/questions/2832818/class-destructor-memory-handling-in-c
- https://www.jetbrains.com/help/clion/memory-leak-analysis.html
- https://cplusplus.com/forum/beginner/284714/
- https://www.c-sharpcorner.com/article/c-sharp-memory-leak/
- https://www.reddit.com/r/QtFramework/comments/141ndh3/where_can_i_learn_about_memory_management_in_qt/
- https://wirepair.org/2023/11/23/using-valgrind-to-find-and-fix-memory-leaks/
- https://github.com/angr/angr-doc/issues/9
- https://forum.mikrotik.com/t/static-cnames-cause-dns-cache-memory-leak/183150
- https://handmade.network/forums/t/1948-memory_management_cleanup_in_c
- https://github.com/cpputest/cpputest/issues/1043
- https://dev.to/10xlearner/memory-management-and-raii-4f20
- https://keyhunters.ru/critical-vulnerability-in-secp256k1-private-key-verification-and-invalid-key-threat-a-dangerous-attack-on-bitcoin-cryptocurrency-security-vulnerability-in-bitcoin——
- https://vulert.com/vuln-db/crates.io-secp256k1-45062
- https://www.cbtnuggets.com/blog/certifications/security/6-cryptographic-attacks-you-should-know
- https://www.linkedin.com/pulse/trying-attack-secp256k1-2025-sebastian-arango-vergara-s3fyc
- https://keyhunters.ru/critical-vulnerability-in-secp256k1-private-key-verification-and-invalid-key-threat-a-dangerous-attack-on-bitcoin-cryptocurrency-security-vulnerability-in-bitcoin——
- https://vulert.com/vuln-db/crates.io-secp256k1-45062
- https://bitcoinworld.co.in/disappearance-of-900k-puts-focus-on-vintage-bitcoin-project-libbitcoin/
- https://yuleisui.github.io/publications/issta12.pdf
- https://www.reddit.com/r/crypto/comments/kgo2qo/how_does_knowledge_of_a_bitcoin_public_key_square/
- https://www.cbtnuggets.com/blog/certifications/security/6-cryptographic-attacks-you-should-know
- https://research.checkpoint.com/2019/cryptographic-attacks-a-guide-for-the-perplexed/
- https://www.thecodedmessage.com/posts/raii/
- https://www.linkedin.com/pulse/trying-attack-secp256k1-2025-sebastian-arango-vergara-s3fyc
- https://krebsonsecurity.com/2025/09/18-popular-code-packages-hacked-rigged-to-steal-crypto/
- https://trustwallet.com/blog/security/typosquatting-in-crypto-explained
- https://www.ijcns.latticescipub.com/wp-content/uploads/papers/v4i1/A1426054124.pdf
- https://research.checkpoint.com/2024/modern-cryptographic-attacks-a-guide-for-the-perplexed/
- https://learn.snyk.io/lesson/name-confusion-attacks/
- https://stackoverflow.com/questions/7460307/how-do-you-name-a-component-that-both-encrypts-and-decrypts-depending-on-method
- https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
- https://zenodo.org/records/11277691
- https://www.packetlabs.net/posts/what-is-a-cryptographic-attack/
- https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties
- https://stackoverflow.com/questions/3561381/custom-http-headers-naming-conventions
- https://www.ox.security/blog/npm-packages-compromised/
- https://cure53.de/pentest-report_noble-lib.pdf
- https://gct-solution.net/category/blog/cryptography-attacks
- https://www.cve.org/CVERecord/SearchResults?query=bitcoin