作者:KEYHUNTER
Oracle Whisper攻擊( 私鑰外洩攻擊 )
攻擊描述:
在處理包含私鑰的 Base58 字串時,攻擊者註入一個「預言機」-I/O 函式庫中的一個輕量級代理,該代理會將金鑰的秘密部分直接透過隱藏的通訊通道進行洩漏。當字串通過 I/O 函式庫時 decode_base58,該代理程式會秘密地將其分段廣播:金鑰的每個位元組都轉換成一條逃逸出 RAM 的訊息,而應用程式則認為金鑰只是成功載入到了 I/O 函式庫中 argument.value_。
此嚴重漏洞可能導致 私鑰洩漏攻擊 或 金鑰洩漏攻擊 ,使攻擊者能夠完全且不可逆地控制比特幣錢包資金,如 CVE-2018-17144、CVE-2023-39910 及類似案例所示。為保護此漏洞,建議使用專用儲存工具並定期審核加密操作,消除不安全的資料流,清除內存,並停用敏感資料日誌輸出。 attacksafe +4
由於資料處理不當(例如,透過不安全的 base58 反序列化和儲存)導致私鑰洩露,這是一個關鍵漏洞,對整個比特幣生態系統的安全性和韌性構成根本性威脅。私鑰是管理數位資產的唯一手段,一旦私鑰洩露,攻擊者就能在不被察覺的情況下完全且不可逆轉地控制所有者的資金,簽署任何交易,並立即竊取加密貨幣 。
這種在學術界和產業界被稱為 私鑰洩漏攻擊 或 金鑰洩漏攻擊的攻擊 ,動搖了比特幣系統信任的根基,可能導致巨額經濟損失、聲譽受損以及惡意軟體的廣泛傳播。未能有效保護私鑰會為攻擊者敞開大門,使被盜資金無法追回,並威脅加密貨幣基礎設施的穩定性。 arxiv +2
攻擊場景:
- 攻擊者將標準的
std::istream「oracle」替換為呼叫追蹤oracleoperator>>。 - 讀取私鑰的 base58 表示時,oracle 模組會擷取並緩衝解包後的金鑰位元組。
- 每次通話後,
decode_base58這則訊息都會透過增量洩漏(微小的隱藏通道)發送到外部伺服器,不會被察覺,也不會被記錄在日誌中。 - 應用程式仍在運行,但私鑰卻被完全竊取,就像被悄悄告訴了一個秘密的聽者一樣。
“私鑰關鍵漏洞:危險的記憶體攻擊威脅比特幣加密貨幣的完整性”
該標題準確反映了文章的科學主題,突出了關鍵的攻擊途徑——透過記憶體洩露私鑰——並強調了比特幣生態系統面臨的安全風險。 keyhunters +1
Base58 處理中存在一個嚴重的私鑰洩漏漏洞,可能對比特幣網路安全造成災難性後果。本文將解釋該漏洞的機制、其對生態系統的影響、科學地對攻擊進行分類的方法,以及有關通用漏洞披露 (CVE) 的資訊。
漏洞對比特幣攻擊的影響
漏洞機制
當以 base58 格式(例如 WIF)編碼的私鑰被解碼並載入到應用程式記憶體中,而沒有進行有效的清理和保護時,就會出現此漏洞。如果惡意軟體或攻擊者獲得了對記憶體的存取權限,或者如果流處理和序列化過程中存在漏洞,則可以提取私鑰並用於存取用戶的資金。實際上,任何獲得私鑰的人都可以完全控制比特幣錢包 。
實際後果
- 攻擊者可以竊取私鑰,簽署任何交易,並提取所有資金——而且這是不可逆的,因為比特幣不支援交易撤銷。 arxiv +1
- 關鍵資訊外洩會對受害者的全部資金構成威脅:殭屍網路和腳本會迅速掃描公開洩露的資訊並自動竊取資金,最近的事件就證明了這一點,單次攻擊就可能竊取高達 90 萬美元的資金(例如,libbitcoin 漏洞) 。 bitcoinworld
- 漏洞的廣泛傳播(例如,在流行的錢包庫中)可能會對整個網路或大型服務的運作造成嚴重的系統性風險 。
攻擊的科學分類
在密碼學中,這類攻擊被稱為 私鑰 洩漏攻擊,有時也稱為 金鑰洩漏攻擊 或 私鑰外洩 。 密鑰獵人
的目標是利用任何可能導致錢包、RPC介面、記憶體、日誌或因粗心資料處理而意外或故意洩露私鑰的漏洞。
攻擊機制
- 被動記憶體轉儲:轉儲或分析 RAM 以取得密鑰。 密鑰獵人
- 不安全序列化攻擊:透過流函數攔截秘密材料。
- 側通道金鑰洩漏:透過側頻道進行的攻擊-定時、緩衝區、檔案系統。
這個類別被認為從根本上來說是危險的,因為它違反了比特幣的核心保證:資金完全由私鑰控制。
CVE標識符
此類漏洞沒有統一的 CVE 編號,每個特定的漏洞或缺陷實作都會有自己的編號:
- 真實 CVE 範例:
- 任何因儲存不當、串流功能或序列化而導致的新型實用密鑰洩漏漏洞,一旦被發現並確認,均可向 CVE 報告。 github +1
結果
此嚴重漏洞可能導致 私鑰洩漏攻擊 或 金鑰洩漏攻擊 ,使攻擊者能夠完全且不可逆地控制比特幣錢包資金,如 CVE-2018-17144、CVE-2023-39910 及類似案例所示。為保護此漏洞,建議使用專用儲存工具並定期審核加密操作,消除不安全的資料流,清除內存,並停用敏感資料日誌輸出。 attacksafe +4
加密漏洞
libbitcoin 提供的 base58 函式庫程式碼並未明確實作使用私密金鑰或金鑰的加密操作;它實作了串流 I/O 和 base58 資料的解碼/編碼。然而,如果私鑰或其他敏感資料未經適當保護或清理就透過 decode_base58 和 encode_base58 等函數傳遞,則不當地使用此類函數可能會導致與私鑰處理相關的安全漏洞。
洩漏分析的關鍵字串
- 該片段在將 base58 字串解碼為內部資料容器時可能存在漏洞:
cpp:std::istream& operator>>(std::istream& stream, base58& argument) THROWS
{
std::string base58;
stream >> base58;
if (!decode_base58(argument.value_, base58))
throw istream_exception(base58);
return stream;
}
- 如果透過串流傳遞 base58 格式(例如 WIF)的私鑰,則解碼後的資料將儲存在 argument.value_ 中,直到記憶體清除或變數被使用為止,都可以存取該資料。

潛在風險
- 如果解碼後私鑰沒有從記憶體中清除,則第三方進程、記憶體轉儲或攻擊者可以存取它——這是一個典型的私鑰洩漏漏洞。
- 該程式碼缺乏明確清理或保護 value_ 中資料的機制(例如在使用後將資料清零),這增加了資料外洩的風險。
突出顯示潛在漏洞的線路
- 主要危險代碼:cpp
if (!decode_base58(argument.value_, base58)) throw istream_exception(base58); - 這裡,argument.value_ 包含解碼後的數據,其中可能包含私鑰或其他敏感資訊。
安全工作建議
- 使用秘密資料(私鑰)後,即使物件超出作用域,也要清除記憶體。
- 為儲存關鍵資訊的容器添加明確清理功能。
- 確保未受保護的私鑰不會透過 operator>>、decode_base58 進行解碼。
結果
一種可能導致私鑰洩漏的加密漏洞可能與將 base58 字串解碼到內部資料容器中的字串有關:
cpp:if (!decode_base58(argument.value_, base58))
throw istream_exception(base58);
如果私鑰透過這些函數傳遞,並且在使用後沒有清除內存,則可能會發生洩漏。

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

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

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

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

BitBugMaster 和 Oracle Whisper 攻擊:利用漏洞偵測提取比特幣私鑰
本文深入分析了 BitBugMaster 框架,將其作為識別和利用比特幣相關軟體庫漏洞的關鍵工具。我們重點關注 BitBugMaster 的漏洞挖掘能力與近期發現的 Oracle Whisper 攻擊的交集。 Oracle Whisper 攻擊是一種私鑰外洩途徑,源自於不安全的 Base58 反序列化例程。研究表明,BitBugMaster 可以揭示記憶體處理中潛在的弱點,這些弱點可能導致私鑰洩露,從而使攻擊者能夠完全控制錢包。同時,本文也強調了製定標準化密碼安全實踐的迫切性。
比特幣的安全模型完全依賴私鑰的機密性和完整性。 Oracle Whisper 攻擊表明,不安全的 Base58 解碼和不當的記憶體清理會如何破壞這一基礎,導致私鑰逐漸洩漏。偵測此類漏洞需要專門的工具,能夠分析底層程式碼路徑和執行時間行為。 BitBugMaster 正是此類工具的代表——一個混合漏洞發現平台,它系統地檢測比特幣生態系統軟體中的加密漏洞、追蹤記憶體管理不當以及識別序列化缺陷。
BitBugMaster 概述
BitBugMaster是一個模組化的漏洞分析和利用框架,專為加密貨幣安全研究而設計。其核心功能包括:
- 記憶體安全偵測:識別對秘密緩衝區的不當處理、缺少明確清零以及 RAM 中殘留的私鑰資料。
- 加密路徑分析:定位 libbitcoin 及相關庫中 Base58Check 解碼等解碼/編碼例程的不安全使用。
- Oracle 模擬與洩漏追蹤:在 I/O 操作中註入模擬的“Oracle 低語者”,以觀察敏感資訊是否意外洩漏。
- CVE 映射和文件:將發現的行為與現有漏洞(例如 CVE-2018-17144、CVE-2023-39910)進行交叉引用,以驗證其可利用性。
- 漏洞利用原型設計:自動產生概念驗證,以演示已發現的漏洞如何升級為私鑰完全洩漏。
Oracle Whisper攻擊與漏洞暴露
Oracle Whisper 攻擊利用了某些比特幣庫反序列化 Base58 編碼金鑰的方式。 BitBugMaster 重點介紹了三種導致該攻擊的關鍵漏洞類型:
- 不安全的串流介面:營運商
operator>>未能強制執行資料清理,將解碼後的私鑰推送到未受保護的記憶體容器。 - 缺乏清理機制:解碼後的密鑰在使用後仍保留在記憶體中,這使得記憶體轉儲分析或惡意攔截成為可能。
- 隱蔽側頻道攻擊機會:透過隱藏 I/O 或記憶體洩漏引入的「耳語」以小增量傳遞私鑰字節,從而繞過偵測。
BitBugMaster應用模糊 Base58 有效載荷和動態記憶體檢查來發現這些缺陷,而其追蹤子系統則精確地映射私鑰在進程記憶體中的位置、持續時間以及提取方式。
對比特幣生態系統安全的影響
使用 BitBugMaster 模擬 Oracle Whisper 攻擊場景,可以揭示其災難性後果:
- 錢包完全被攻破:提取的私鑰可以完全控制錢包資金,從而實現交易簽名和盜竊而不被發現。
- 快速資金抽取:基於腳本的詐騙引擎和殭屍網路自動監控洩漏的金鑰庫,並即時抽取資金。
- 系統性風險:如果比特幣錢包或流行的函式庫(例如 libbitcoin、Electrum 分叉)共享這種有缺陷的解碼邏輯,則可能會發生數百萬個錢包被廣泛入侵的情況。
這種情況與先前現實世界中的案例類似,密鑰產生或序列化中的漏洞(例如 CVE-2018-17144)導緻密鑰在幾分鐘內被大規模竊取。
對此次襲擊的科學分類
BitBugMaster 的方法能夠根據標準化的攻擊分類進行分類:
- 私鑰外洩攻擊(PKC-A)
- 不安全序列化導緻密鑰洩露
- 預言機輔助側頻道攻擊
此分類有助於系統地記錄漏洞,以用於學術界、產業界和 CVE 報告。這種分類框架對於建立共享的防禦語言至關重要。
基於 BitBugMaster 的緩解策略
BitBugMaster 雖然主要是漏洞偵測工具,但它也能幫助人們深入了解有效的防禦措施:
- 強制清理層:離開函數作用域時自動將秘密緩衝區清零。
- 序列化強化:消除私鑰反序列化的不安全運算子重載。
- 生命週期限制:嚴格限制敏感資料的記憶體生命週期。
- 稽核自動化:使用 BitBugMaster 模組主動掃描錢包原始碼,以防止靜默漏洞傳播。
這些措施直接打擊了 Oracle Whisper 攻擊所利用的管道。
結論
BitBugMaster 是一款新一代漏洞發現工具,能夠清楚揭示比特幣軟體基礎架構中潛在的加密風險。應用於 Oracle Whisper 攻擊案例中,它被證明在暴露不安全的 Base58 解碼和記憶體管理漏洞方面具有不可估量的價值,這些漏洞可能導致災難性的私鑰洩漏。該工具證明了建立系統化的偵測和審計框架對於保障比特幣生態系統的韌性至關重要。如果沒有這些積極主動的措施,比特幣生態系統仍然容易受到嚴重的私鑰洩漏攻擊,從而威脅用戶資金、市場穩定以及去中心化系統賴以生存的根本信任。
本文詳細描述了在 C++/libbitcoin 中使用 base58 處理私鑰時出現的加密漏洞,並提供了一個安全的修復方案,以防止對關鍵資料的攻擊。
脆弱性的出現
一個典型的漏洞場景是,程式透過串流介面接收 base58 格式(例如 WIF)的私鑰,對其進行解碼並儲存在內部容器中 。如果包含秘密資料的記憶體未受到保護或在使用後未清除,攻擊者可以透過記憶體轉儲、流劫持或隱藏序列化argument.value_來存取私鑰。
原因
- 無法控制秘密資料的生命週期(其內容在使用後不會被刪除)。
- 私鑰沒有被隔離或加密儲存。 cheatsheetseries.owasp +1
- 串流介面允許輕鬆存取未打包的私有資料。
典型後果
- 密鑰保存在 RAM 中,可以透過幽靈記憶體轉儲或序列化器懺悔攻擊洩漏。
- 惡意軟體可以在不留下任何痕跡且不與檔案系統互動的情況下提取私鑰 。 pdfs.semanticscholar+1
安全修復漏洞的方法
保護原則
- 密鑰應僅在必要的最短時間內儲存在 RAM 中。 ssldragon +1
- 所有包含私鑰的物件必須在使用後立即清理。
- 建議使用具有保證在生命週期結束時進行清理的特殊資料類型。
- 包含機密資訊的容器必須鎖定,防止未經授權的存取。
C++ 中的安全實作
以下是一個使用 RAII 的安全方法範例,該方法可以自動清理關鍵資料並避免使用串流 API 傳輸私鑰:
cppclass SecureKeyBuffer {
public:
explicit SecureKeyBuffer(size_t n) : data_(n) {}
~SecureKeyBuffer() { cleanse(); }
std::vector<uint8_t>& get() { return data_; }
const std::vector<uint8_t>& get() const { return data_; }
void cleanse() {
std::fill(data_.begin(), data_.end(), 0);
}
private:
std::vector<uint8_t> data_;
};
// Безопасная десериализация приватного ключа из base58:
bool secure_decode_base58(SecureKeyBuffer& out, const std::string& base58) noexcept {
std::vector<uint8_t> tmp;
if (!decode_base58(tmp, base58)) {
return false;
}
std::copy(tmp.begin(), tmp.end(), out.get().begin());
std::fill(tmp.begin(), tmp.end(), 0); // очистка временного буфера
return true;
}
// Пример использования:
SecureKeyBuffer key(32);
if (!secure_decode_base58(key, wif_string)) {
throw std::runtime_error("Ошибка декодирования");
}
// ... использование ключа ...
// Когда key выходит из области видимости, память автоматически очищается
關鍵決策 :
- 將密鑰儲存在一個特殊的類別中,以確保記憶體清理。 cheatsheetseries.owasp +1
- 使用密鑰後立即清除臨時緩衝區和工作緩衝區。
- 禁用流運算符以使用私鑰。
- 關鍵生命週期管理應遵循標準最佳實務(請參閱 OWASP、FIPS、NIST)。 ssldragon +1
最終建議
- 僅將私鑰儲存在受特殊保護的物件中,並自動清理私鑰。 cheatsheetseries.owasp +1
- 不要使用流運算子(
operator>>/<<)反序列化私鑰。 - 處理機密資訊時,請務必清除臨時緩衝區,盡量減少密鑰在 RAM 中儲存的時間。
- 採用加密標準,實施定期安全審計和自動化檢查。
這些措施能夠可靠地消除私鑰洩漏管道,徹底杜絕先前所述的魅力攻擊。 pdfs.semanticscholar +2
最終的科學結論強調: 「由於資料處理不當(例如,透過不安全的base58反序列化和儲存)導致私鑰洩露,這一關鍵漏洞對整個比特幣生態系統的安全性和韌性構成根本威脅。私鑰是管理數位
資產的唯一工具,一旦私鑰洩露,攻擊者便可在被察覺的情況下完全且不可逆轉
這種在學術界和產業界被稱為 私鑰洩漏攻擊 或 金鑰洩漏攻擊的攻擊 ,動搖了比特幣系統信任的根基,可能導致巨額經濟損失、聲譽受損以及惡意軟體的廣泛傳播。未能有效保護私鑰會為攻擊者敞開大門,使被盜資金無法追回,並威脅加密貨幣基礎設施的穩定性。 arxiv +2
解決這個問題需要實施嚴格的儲存、程式設計和稽核標準,包括消除不安全的金鑰處理方法、記憶體清理、硬體保護以及杜絕明文金鑰。只有系統化、科學驗證的私鑰管理方法才能在不斷演變的威脅面前保障用戶和比特幣加密貨幣本身的安全 。
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
- https://habr.com/ru/articles/430240/
- https://www.itsec.ru/articles/upravlenie-uyazvimostyami-v-kriptokoshelkah
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://forklog.com/news/v-chipah-dlya-bitcoin-koshelkov-obnauzhili-kriticheskuyu-uyazvimost
- https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_1_12055351
- https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
- https://opennet.ru/56670/
- https://forum.bits.media/index.php?%2Ftopic%2F135324-%D0%BD%D0%B0%D1%83%D1%87%D0%BD%D0%BE-%D0%BF%D0%BE%D0%BF%D1%83%D00%D0%BF%D0%BE%D0%BF%D1%83%D00%D1% %D1%8B%D0%B9-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82-%D0%BE-%D0%BF%D1%80 %D0%B8%D0%B2%D0%B0%D1%82%D0%BD%D1%8B%D1%85-%D0%BA%D0%BB%D1%8E%D1%87%D 0%B0%D1%85-%D0%B1%D0%B8%D1%82%D0%BA%D0%BE%D0%B8%D0%BD-%D1%84%D0%BE%D1%80%D0%BA%D0%B0%D1%85%2F
- https://keyhunters.ru/critical-vulnerabilities-of-private-keys-and-rpc-authentication-in-bitcoinlib-analysis-of-security-risks-and-attack-methods-on-bitcoin-cryptocurrency/
- https://bitcoinworld.co.in/disappearance-of-900k-puts-focus-on-vintage-bitcoin-project-libbitcoin/
- https://arxiv.org/html/2109.07634v3
- https://www.semanticscholar.org/paper/Identifying-Key-Leakage-of-Bitcoin-Users-Brengel-Rossow/32c3e3fc47eeff6c8aa93fad01b1b0aadad7e323
- https://core.ac.uk/download/pdf/301367593.pdf
- https://www.koreascience.kr/article/JAKO202011161035971.page
- https://keyhunters.ru/critical-vulnerabilities-of-private-keys-and-rpc-authentication-in-bitcoinlib-analysis-of-security-risks-and-attack-methods-on-bitcoin-cryptocurrency/
- https://crystalintelligence.com/investigations/the-10-biggest-crypto-hacks-in-history/
- https://www.usenix.org/system/files/conference/woot12/woot12-final24.pdf
- https://cheatsheetseries.owasp.org/cheatsheets/Key_Management_Cheat_Sheet.html
- https://pdfs.semanticscholar.org/c678/d64aa220af62d1397da19f43c1fef0f08316.pdf
- https://www.ssldragon.com/blog/best-practices-to-store-the-private-key/
- https://arxiv.org/pdf/2312.00942.pdf
- https://www.iij.ad.jp/en/dev/iir/pdf/iir_vol39_focus1_EN.pdf
- https://arxiv.org/pdf/1708.08749.pdf
- https://bitcointalk.org/index.php?topic=258678.20
- https://stackoverflow.com/questions/8970715/how-do-i-base58-encode-a-string
- https://www.feistyduck.com/library/bulletproof-tls-guide/online/configuration/keys-and-certificates/secure-private-keys.html
- https://onlinelibrary.wiley.com/doi/10.1155/2022/4618007
- https://stackoverflow.com/questions/21977408/the-steps-to-base58-encode-a-peercoin-public-key
- https://bip39-phrase.com/private-key-btc/
- https://forums.ni.com/t5/LabVIEW/Need-Help-with-Base58-encoding/td-p/4080171
- https://www.reddit.com/r/programming/comments/h7kmff/best_practices_for_managing_storing_secrets_like/
- https://www.blackduck.com/blog/cryptography-best-practices.html
- https://keyhunters.ru/critical-vulnerabilities-of-private-keys-and-rpc-authentication-in-bitcoinlib-analysis-of-security-risks-and-attack-methods-on-bitcoin-cryptocurrency/
- https://bitcoinworld.co.in/disappearance-of-900k-puts-focus-on-vintage-bitcoin-project-libbitcoin/
- https://arxiv.org/pdf/2506.17988.pdf
- https://b8c.ru/page/11/
- https://attacksafe.ru/ultra-5/
- https://github.com/libbitcoin/libbitcoin-explorer/wiki/cve-2023-39910
- https://www.semanticscholar.org/paper/Identifying-Key-Leakage-of-Bitcoin-Users-Brengel-Rossow/32c3e3fc47eeff6c8aa93fad01b1b0aadad7e323
- https://publications.cispa.de/articles/conference_contribution/Identifying_Key_Leakage_of_Bitcoin_Users/24612726
- https://inst.eecs.berkeley.edu/~cs161/fa16/slides/lec_bitcoin.pdf
- https://www.microsoft.com/en-us/research/wp-content/uploads/2013/11/734.pdf
- https://bitcointalk.org/index.php?topic=5372940.0
- https://www.iij.ad.jp/en/dev/iir/pdf/iir_vol39_focus1_EN.pdf
- https://github.com/Alirezarv700/CryptoDeepTools
- https://attacksafe.ru/ultra/
- https://attacksafe.ru/private-keys-attacks/
- https://b8c.ru/author/wallet/page/7/
- https://www.reddit.com/r/Bitcoin/comments/1cmmh5f/private_key_modifications_ive_been_watching_and/
- https://stackoverflow.com/questions/16727206/regular-expression-for-base-58-private-key
- https://github.com/demining/CryptoDeepTools
- https://patch-diff.githubusercontent.com/raw/litecoin-project/litecoin/pull/505.diff