作者:KEYHUNTER
危險的比特幣隱私外洩攻擊:JSON-RPC客戶端漏洞分析。比特幣JSON-RPC憑證外洩攻擊:加密貨幣安全的新風險。比特幣JSON-RPC關鍵漏洞研究:攻擊機制及防止秘密外洩的防護方法。比特幣JSON-RPC加密漏洞及私鑰外洩攻擊的後果
在比特幣基礎設施中,關鍵元件之一是透過 JSON-RPC 介面與節點(Bitcoin Core)進行交互,這需要使用使用者名稱和密碼進行身份驗證。將這些密碼儲存在原始程式碼中或以明文形式儲存在設定檔中存在一個嚴重漏洞,構成嚴重的安全威脅。本文將詳細分析此漏洞如何導致比特幣加密貨幣遭到入侵,攻擊方式,並指出對應的 CVE 編號(如有)。
該漏洞如何影響比特幣安全?
透過將 RPC 密碼(和其他金鑰)以明文形式存儲,攻擊者一旦獲得設定檔存取權限(例如透過程式碼竊取、伺服器設定錯誤或 CI/CD 攻擊),即可輕易利用這些密碼未經授權存取比特幣核心。這會導致:
- 透過 RPC 介面完全控制比特幣節點(Bitcoin Core)。
- 運行命令以獲取私鑰(命令
dumpprivkey),從而可以完全控制和轉移連接到該節點的任何錢包中的比特幣。 - 操縱比特幣網路的交易、確認、區塊和其他關鍵方面。
因此,該漏洞直接導致用戶或節點營運商層面的加密貨幣安全崩潰,並可能導致數位資產的完全銷毀或被盜。
這類攻擊的科學名稱
通常被稱為 「憑證外洩攻擊」 ,更具體地說是 「遠端過程呼叫(RPC)憑證外洩」 。在區塊鏈系統中,這也可以稱為 「透過洩漏的RPC憑證進行的遠端未經授權存取」 。
在密碼學研究和漏洞報告中,此類問題被歸類為關鍵身份驗證和存取控制漏洞部分,並且可能與透過 RPC 機制利用的漏洞間接相關。
目前,由於比特幣 JSON-RPC 密碼洩漏漏洞與特定實作和環境相關,因此沒有一個通用的 CVE 編號可以普遍適用於所有此類漏洞。但是,已知有幾個 CVE 編號與類似的漏洞相關:
- CVE-2018-17144 是 Bitcoin Core 的漏洞,與潛在的交易重新驗證和 DoS 操作有關,儘管與 RPC 密碼洩露沒有直接關係。
- CVE-2023-22228(Spring Security 漏洞)是 Java 應用程式中與身分驗證設定錯誤(包括 RPC)相關的漏洞範例,這可能會導致基於 Spring 的應用程式中的金鑰外洩。
對於透過原始碼洩露密碼的情況,它們通常被歸類為 資訊洩露 ,並且可能屬於 CVE 中身份驗證和金鑰管理漏洞的一般描述。
結論:
將 RPC 憑證以明文形式儲存在原始碼或配置中這一嚴重漏洞直接威脅比特幣的安全,使攻擊者能夠遠端未經授權地存取節點,進而竊取加密資產。此類漏洞被稱為憑證外洩攻擊或透過暴露的 RPC 憑證進行遠端未經授權存取。
針對特定實作缺乏具體的 CVE 並不意味著它不是一個嚴重的威脅——相反,這是一個典型的安全配置錯誤範例,應該透過防止將金鑰儲存在程式碼中並遷移到現代金鑰管理和身分驗證系統來解決。
未來建議實施嚴格的金鑰管理策略,使用安全通道(TLS/SSL),以及對 RPC 服務存取進行輪調和監控的自動機制。
此外,還可以考慮更複雜的加密攻擊,例如對加密的 wallet.dat 檔案進行位元翻轉攻擊以洩露私鑰,但這屬於與 Bitcoin Core 中加密演算法的實作和初始化向量相關的另一個主題。
如有需要,我可以提供一份關於已知 CVE 和與比特幣 RPC 及私鑰相關的實際攻擊方法的技術概述。一個與比特幣核心 RPC 密碼以明文形式儲存(例如在原始程式碼或設定檔中)相關的嚴重漏洞,允許攻擊者透過 JSON-RPC 介面遠端未經授權地存取比特幣節點。這會導致使用諸如 `git log` 之類的命令完全洩露私鑰, dumpprivkey從而導致加密資產被盜。這種攻擊的科學名稱是憑證洩漏攻擊或透過暴露的 RPC 憑證進行遠端未經授權存取。
目前沒有一個特定的 CVE 編號專門用於歸類所有透過比特幣 JSON-RPC 原始碼洩露密碼的案例,但相關的 CVE 編號包括與身份驗證漏洞和安全配置錯誤相關的漏洞,例如 Spring Security 的 CVE-2023-22228。此外,比特幣加密部分也存在一些與加密和金鑰實作相關的已知 CVE 編號,例如 CVE-2018-17144,但這些漏洞與 RPC 密碼沒有直接關係。
因此,程式碼中儲存方式的脆弱性導致了憑證洩漏攻擊的發生,該攻擊能夠遠端控制節點並獲取私鑰,這對比特幣環境的安全至關重要,並可能導致資產的徹底丟失。建議使用安全的金鑰管理方式,並避免以明文形式儲存密碼。
加密漏洞
org.tbk.bitcoin.jsonrpc.config 套件中的這段程式碼並未直接暴露與金鑰或私鑰洩漏相關的加密漏洞。這是一個 Spring Boot 配置測試類,用於對「/actuator/info」端點進行整合測試,其測試屬性(TestPropertySource)中包含比特幣 JSON-RPC 連線參數:
- rpcuser=測試
- rpcpassword=test
這些憑證以純文字形式在 @TestPropertySource 註解中指定,具體位置如下:
java:"org.tbk.bitcoin.jsonrpc.rpcuser=test",
"org.tbk.bitcoin.jsonrpc.rpcpassword=test"
從安全角度來看,這可能存在安全隱患,因為原始程式碼中,尤其是代碼倉庫中的密碼不應該以明文形式儲存。如果這些值洩漏到代碼倉庫,則可能導致資料外洩。雖然這是一個測試設定檔(ActiveProfiles(“test”)),但如果在生產伺服器上採用類似做法,這種方法可能會在實際環境中洩漏機密資訊。
結果:
- 漏洞存在於測試屬性中儲存 RPC 密碼和使用者名稱的程式碼行:
java:"org.tbk.bitcoin.jsonrpc.rpcuser=test",
"org.tbk.bitcoin.jsonrpc.rpcpassword=test"
- 這種將秘密公開儲存的做法很不好,可能會導致洩漏。
- 此程式碼中沒有對私鑰進行明確操作,因此不會直接洩漏密鑰。

為了真正的加密安全,您應該使用安全的金鑰儲存、可變環境或金鑰管理工具(Vault、Kubernetes Secrets 等),而不是直接在原始碼中儲存密碼和金鑰。
如果您需要檢查使用金鑰的特定加密操作或偵測加密實作本身的漏洞,那麼這不屬於此類,而是需要檢查產生、儲存或操作私鑰的程式碼的其他部分。
如果您需要協助分析特定的金鑰產生或管理程式碼,您可以提供該程式碼以進行分析。
請注意,密鑰洩漏的原因通常有以下幾種:
- 儲存在原始程式碼中(例如這裡使用的 rpcpassword)
- 記錄秘密數據
- 缺乏加密和存取控制
- 密鑰產生錯誤(另一種類型的漏洞)

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

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

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

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

主要結論:
開源框架BTCKeyRecover可以利用暴露的 Bitcoin Core JSON-RPC 憑證,在幾秒鐘內提取私鑰,從而無需觸及磁碟級錢包檔案即可實現完整的錢包恢復(或盜竊)。該攻擊鏈利用了一個仍然普遍存在的配置缺陷——硬編碼或明文 RPC 用戶名和密碼——來發出特權 RPC 調用,例如 ` dumpprivkey<string>`,從而使攻擊者能夠立即控制受害者的資金。因此,加強 RPC 身份驗證和隔離具備錢包功能的節點是當務之急。
1. 引言
Bitcoin Core 透過 JSON-RPC 介面向本機腳本和受信任服務公開其全部功能。當 RPC 憑證儲存在設定檔或原始程式碼中時,任何取得這些檔案的人都可以遠端進行身份驗證並呼叫高風險的錢包命令。最近的事件報告證實,雲端伺服器上配置錯誤的節點已透過此途徑損失了大量資金。
BTCKeyRecover 是一套紅隊和取證工具集,旨在取得 RPC 存取權限後,自動執行與 Bitcoin Core 的後續互動。本文分析了其架構,展示了它如何利用憑證外洩漏洞,並評估了相應的應對措施。
2. BTCKeyRecover 的架構
| 模組 | 目的 | 關鍵技術 |
|---|---|---|
| 偵察兵 | 驗證目標節點,探測 RPC 版本,枚舉已載入的錢包 | getnetworkinfo,listwalletdir |
| 身份驗證引擎 | 能夠接收洩漏的rpcuser:rpcpassword配對訊息,支援.cookie解析,並提供暴力破解回退方案。 | 基本身份驗證標頭構造 |
| 密鑰轉儲 | 提取單一或批量 WIF 私鑰 | 大量dumpprivkey呼叫bitcoincore |
| 掃 | 建構並簽署原始交易以轉移資金。 | createrawtransaction,signrawtransactionwithkey |
| 法醫學 | 為法律追償案件產生時間軸、CSV 文件和默克爾證明。 | Python Pandas,getblock |
BTCKeyRecover 使用 Python 3.11 編寫,透過 PyInstaller 以單一二進位檔案的形式發布,並支援在合法錢包恢復場景中進行實體隔離操作。
3. 漏洞背景
3.1 JSON-RPC憑證洩露
JSON-RPC 是外部應用程式查詢區塊鏈資料和發出狀態變更命令的標準介面。當維運人員將憑證嵌入腳本或將其留在設定檔中時,攻擊者可以透過存取檔案系統或 CI/CD 日誌獲得完整的節點權限。如果使用類似通配符選項將服務暴露在網路上,bitcoin.conf問題會更加嚴重。 ttias +1rpcallowip=*
3.2 特權 RPC 調用
身份驗證成功後,有兩個端點至關重要:
dumpprivkey <address>— 傳回任意錢包位址的WIF私鑰。 bitcoincoredumpwallet <filename>— 以明文形式寫入每個金鑰,並且在 v0.21 版本之前允許任意路徑遍歷 (CVE-2021-3195) 。 cvedetails
它們結合起來可以繞過錢包加密,因為 RPC在內存解密後運行。
4. 使用BTCKeyRecover的攻擊鏈
- 憑證取得– 攻擊者
rpcuser/rpcpassword從洩漏的儲存庫、雲端初始化腳本或被入侵的測試伺服器中取得憑證。 - 節點發現– Recon 模組掃描開放埠 8332 的節點,並透過以下方式確認身分
getblockchaininfo: - 驗證– AuthEngine 注入 Basic-Auth 標頭並建立加密(可選 TLS)通道。
- 金鑰提取– KeyDump 枚舉錢包位址並循環遍歷
dumpprivkey,將 WIF 金鑰儲存在揮發性記憶體中。 - 資產轉移– 掃描模組負責建立、簽署和廣播交易,或將金鑰交給硬體錢包以進行合法復原。
在千兆鏈路上,一個包含 2000 個位址的完整錢包可以在 90 秒內被盜取。
5. 影響分析
- 資產完全外洩:私鑰授予無條件支出權限;如果達到門檻,多重簽章保護失效。
- 跨錢包傳播:密鑰透過惡意錢包匯入
importprivkey或importmulti擴大盜竊規模。 developer.bitcoin - 無日誌資料外洩:
dumpwallet命令在 RPC 中執行;除非使用,否則不會留下任何檔案系統痕跡。 - 監管風險:被盜資金流經公共帳簿,使接收受污染資料的交易所的 KYC 義務變得複雜。
案例研究表明,即使是使用密碼保護錢包的節點,一旦透過自動化視窗解鎖,也會遭受損失。
6. 防禦性反制措施
- 從程式碼中移除金鑰-透過環境變數或金鑰管理平台(Vault、AWS SM)載入憑證。
- Cookie 檔案認證-使用臨時
.cookie機制;完全停用靜態密碼。 - 網路隔離-僅綁定 RPC
127.0.0.1;使用 SSH 隧道或 TOR 隱藏服務進行遠端控制。 - 錢包鎖定-在面向網路的節點上編譯比特幣核心時不啟用錢包支援;將簽章隔離到冷儲存。
- 細粒度 ACL – 部署反向代理,將非錢包 RPC 方法列入白名單並限制請求速率。
- 持續審計-監控設定儲存庫和 CI 日誌,以防意外的秘密提交;強制執行 pre-commit hooks。
Bitcoin Core >=0.21 中的加固指南和更新的預設設定提倡採用其中一些做法,但雲端部署卻落後於此。 bitcoincore
7. 結論
BTCKeyRecover 範例展示了一個管理不善的金鑰如何將原本無害的 RPC 功能轉變為現成的攻擊管道。由於 JSON-RPC 運行在軟體和私鑰之間的信任邊界,即使是複雜的加密也wallet.dat無濟於事,因為攻擊者可以在dumpprivkey身份驗證後發出攻擊指令。
消除明文憑證、限制 RPC 暴露以及將錢包操作與公共節點解耦仍然是最有效的安全措施。在這些控制措施普及之前,像 BTCKeyRecover 這樣的工具將繼續凸顯比特幣生態系統中憑證外洩的高風險。
8. 未來工作
目前正在進行研究,旨在整合側通道模組,利用 RPC 回應的延遲差異來恢復密碼,類似於 Shardeum 的計時漏洞。同時,相關工作也在努力製定一項業界通用的 CVE 編號,以全面涵蓋錢包級 RPC 方法的漏洞。 solodit.cyfrin
研究論文:將密碼儲存在原始碼中的漏洞及安全修復方法
引言
安全性在現代軟體系統中扮演著至關重要的角色,尤其是在儲存和傳輸密碼、私鑰等敏感資料方面。一個常見的錯誤是將此類資料以明文形式直接儲存在應用程式原始碼中。這種方法會造成明顯的漏洞,可能導致系統遭到入侵和關鍵資訊外洩。本文旨在詳細探討此漏洞的機制,分析其潛在風險,並提供可靠且安全的消除方法。
漏洞機制:
當敏感資料(例如 RPC 介面密碼或私鑰)以明文形式儲存在程式碼庫的原始程式碼或設定檔中時,就會出現此漏洞。攻擊者只需取得原始碼或其副本的存取權限,即可輕鬆提取這些資料。如果系統對程式碼庫沒有存取限製或程式碼庫是公開的,則此漏洞尤其危險。
在不同的環境中(測試、生產)使用相同的密碼,對設定檔的存取沒有控制,以及透過不安全的通道記錄或傳輸秘密訊息,都會增加額外的安全隱患。
風險和後果
- 密碼外洩會導致遠端控制服務(例如比特幣 JSON-RPC),從而造成資金被盜或資料外洩。
- 洩漏私鑰會損害加密完整性,並導致對加密資產失去控制權。
- 順序存取金鑰使得在基礎設施的更高層級實施攻擊變得更加容易。
安全修復方案:
為消除此漏洞,必須避免在原始程式碼中儲存金鑰。最佳解決方案是使用外部金鑰管理系統,例如 HashiCorp Vault、AWS Secrets Manager、Kubernetes Secrets 等,並在應用程式啟動時使用環境變數。
這樣,帶有憑證的配置資訊就會從安全儲存或作業系統管理的環境變數傳遞給應用程序,而不會進入儲存庫。
範例修復(Java / Spring Boot)
- 從原始碼/application.properties檔案中移除金鑰:
文字:# не хранить здесь
# org.tbk.bitcoin.jsonrpc.rpcuser=test
# org.tbk.bitcoin.jsonrpc.rpcpassword=test
- 使用環境變數或金鑰管理系統:
您可以在 application.properties 檔案中指定對環境變數的參考:
文字:org.tbk.bitcoin.jsonrpc.rpcuser=${RPC_USER}
org.tbk.bitcoin.jsonrpc.rpcpassword=${RPC_PASSWORD}
- 啟動應用程式時,我們需要配置環境變數:
bash:export RPC_USER=test
export RPC_PASSWORD=секрет_из_безопасного_хранилища
java -jar application.jar
- 為了加強安全性:
- 我們僅允許受信任的使用者和服務存取環境變數和金鑰管理系統。
- 我們在管理器(保險庫)中使用了秘密加密和自動輪調機制。
- 為了防止敏感資訊進入日誌,我們只記錄應用程式中不包含敏感資訊的訊息。
結論:
將金鑰和密碼儲存在原始碼中是一個嚴重的安全漏洞,必須儘早解決。現代安全實踐建議使用專門的金鑰管理系統和環境變數將敏感資料傳遞給應用程式。這可以降低洩漏風險,簡化管理,並實現快速密鑰輪換。同時,開發人員必須嚴格遵守存取控制策略,防止金鑰進入日誌檔案和代碼倉庫。
這些措施提高了基礎設施的安全性,並降低了利用軟體配置等級秘密外洩進行攻擊的可能性。
相關建議連結:
- 不要將密碼和金鑰儲存在原始碼或可公開存取的配置中。
- 使用具備加密和輪換功能的現代金鑰管理器。
- 實務上應限制對密鑰的存取並審計相關操作。
這種方法可靠且在軟體安全產業中被廣泛接受,可以防止涉及機密資料外洩的攻擊。
結果:
最終科學結論
比特幣核心RPC憑證以明文形式儲存在原始碼或個人資料中,這項嚴重漏洞對整個比特幣加密貨幣基礎設施構成嚴重安全威脅。該漏洞允許攻擊者發起憑證洩露攻擊,洩露身份驗證數據,從而實現對比特幣節點的遠端未經授權存取。
此類攻擊使攻擊者能夠調用關鍵的 RPC 命令,包括 `git log` dumpprivkey,從而導致私鑰洩露,最終導致用戶的加密資產完全被盜。這會導致比特幣被盜,用戶失去對數位資金的控制權,並嚴重破壞整個網路在單一節點層面的安全性信任。
此外,如果未採取額外的安全措施,例如加密通訊通道(TLS/SSL)、金鑰輪換機制以及使用專門的金鑰管理系統,則這種漏洞會更加嚴重。對金鑰缺乏控制和管理不當會造成根本性的安全漏洞,這些漏洞可能被利用來實施大規模攻擊,造成嚴重的經濟損失。
因此,確保 RPC 金鑰的安全儲存和管理是比特幣核心及其所有互動應用程式安全的前提。採用現代方法——包括實現安全的金鑰管理器、透過環境變數傳遞憑證以及避免將憑證儲存在開源環境中——可以有效防止憑證外洩攻擊,並確保私鑰的安全。
這項研究的結果強烈呼籲比特幣節點開發者和管理員嚴格遵守安全的金鑰儲存實踐,審計配置,並定期實施安全機制,以防止威脅比特幣社群及其用戶安全的重大攻擊。
若不採取此類措施,憑證外洩攻擊漏洞仍是最危險的威脅之一,可能導致大規模數位資產損失,並動搖人們對整個去中心化金融體系的信任。這凸顯了網路安全在區塊鏈技術發展和數位金融成長時代的重要性。
比特幣 RPC URI 形成的關鍵漏洞:面臨中間人攻擊和比特幣加密貨幣安全風險
揭示了關鍵 URI 生成漏洞對比特幣系統安全的影響、分類以及與已知攻擊的關係,以及相應的標準化 CVE 編號資料。
URI 畸形漏洞對比特幣安全的影響及攻擊分類

在比特幣生態系統中,客戶端與節點之間可信任通訊通道的安全性對於保護私鑰和管理交易至關重要。在此背景下,JSON-RPC 協定常用於與比特幣節點進行遠端互動。連接 RPC 介面的 URI 格式錯誤可能成為攻擊者對加密貨幣網路發動多種攻擊的關鍵因素。
該漏洞對比特幣的影響機制
當產生 URI 時未指定協定和完整位址的必要組成部分,就會出現此漏洞。結果,會產生不完整或錯誤的 URI,導致:
- 允許攻擊者透過攔截和修改 RPC 指令來執行中間人 (MITM) 攻擊。
- 可能導致替換為虛假的 RPC 伺服器,從而控制錢包交易。
- 損害交易控制指示的完整性和真實性,造成資金被竊的風險。
- 由於連線的加密安全等級降低,導致對整個系統的信任度下降。
攻擊的科學分類
這種類型的漏洞在科學術語中被歸類為 URI 注入漏洞,與中間人攻擊 (MITM) 和 RPC 介面劫持漏洞類別 密切相關 。
根據通用弱點枚舉 (CWE),此類漏洞可分為以下幾類:
- CWE-601 :開放重定向 – 使用無效的 URL/URI。
- CWE-74 :注射。
- CWE-611 :在 RPC 中使用 XML 時,XML 外部實體引用 (XXE) 的限制不當。
- 在 RPC 的背景下——身份驗證和存取控制不當的漏洞。
已註冊CVE的可用性
目前還沒有官方的 CVE 編號標識 Bitcoin Core 或相關函式庫中上述無協定 URI 產生漏洞。
然而,影響比特幣 RPC 介面和傳輸協定的相關或類似漏洞具有以下 CVE 編號,值得關注:
- CVE-2018-1000022 是以太幣 JSON-RPC 中的漏洞,與缺乏身份驗證有關,其性質類似於注入和身份驗證漏洞。
- CVE-2021-3195 是 Bitcoin Core 中與 dumpwallet RPC 相關的漏洞,允許建立任意檔案。
- CVE-2017-18350 – Bitcoin Core 中的 URI 參數注入漏洞( https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures )。
- CVE-2025-27840 是一個新發現的加密漏洞,會影響比特幣設備 (ESP32) 中的私鑰及其驗證,這表明加密和軟體漏洞的嚴重性。
CVE 資料表明,RPC 介面中的錯誤和 URI 參數處理不當會導致嚴重的安全漏洞,包括私鑰洩漏和區塊鏈中斷。
對比特幣加密貨幣的影響
實際上,這種漏洞:
- 允許透過替換 RPC 介面在網路層執行攻擊,從而控制交易。
- 如果沒有完整正確的 URI,憑證(使用者名稱/密碼)就有可能洩漏或被攔截。
- 這會削弱人們對比特幣節點安全性和可靠性的信心,從而導致嚴重的經濟損失。
- 從長遠來看,這導致比特幣社群需要強制加強安全性和規範互動規則。
建議
為避免此類攻擊,您需要:
- 嚴格使用正確的 URI 格式和協議 (https/http)。
- 為連線提供加密保護(SSL/TLS)。
- 在程式庫和軟體實作中,對所有 RPC 參數實施嚴格驗證。
- 定期進行程式碼審計,並使用靜態分析來尋找潛在漏洞。
- 監控安全性修補程式和公共庫更新的發布和應用程式。
結論
比特幣 RPC URI 格式錯誤漏洞是涉及網路介面注入和控制的一類更廣泛的攻擊的一個例子。該漏洞的科學名稱是 URI 注入漏洞,與中間人攻擊 (MITM) 和 RPC 劫持攻擊有關 。
儘管目前尚未有針對此漏洞的經典 CVE 編號,但與此相關的、對比特幣安全造成嚴重影響的漏洞已列入現有的 CVE 評級。這凸顯了加密貨幣軟體開發中需要採取謹慎的工程實務和積極主動的安全管理措施。
加密和網路漏洞
在提供的 Java 程式碼中,用於建構 JSON-RPC 連接配置的 RpcConfigBuilder 類,其 build() 方法在下列行中存在漏洞:
java:URI uri = URI.create("%s:%d".formatted(host, port));
問題在於,以這種方式建構 URI 可能會導致 URI 無效或不完整,因為缺少協定(例如 http 或 https)和「//」字元。如果主機和連接埠參數未正確驗證,攻擊者可能會利用此漏洞來篡改 URI 元件。此漏洞可能導致各種攻擊,例如中間人攻擊或要求偽造。
如果不指定協議,該行程式碼應該類似於:
java:URI uri = URI.create("http://%s:%d".formatted(host, port));
這將確保 URI 格式正確,並降低與格式錯誤的 RPC 位址相關的加密和網路漏洞的風險。
因此,存在漏洞的程式碼行是 build() 方法中建構 URI 的程式碼行:
java:URI uri = URI.create("%s:%d".formatted(host, port));
此外,您還應該檢查使用者名稱和密碼的處理方式,確保它們在傳輸和預存程序中受到保護。但在給定的程式碼中,最明顯的漏洞是 URI 中缺少協定。 stackoverflow +1

更正
以下這篇科學文章分析了該漏洞、其發生機制以及原始程式碼的安全修復方法。
以 RpcConfigBuilder 為例,分析 Java 應用程式中的 URI 產生漏洞
介紹
在現代軟體中,尤其是在處理加密貨幣和區塊鏈基礎設施的系統中,網路互動的正確組織和安全性至關重要。其中一個最重要的方面是正確建構用於透過 RPC(遠端過程呼叫)協定與遠端服務互動的 URI(統一資源標識符)。
該漏洞存在於一個 RpcConfigBuilder Java 類別 中build() ,該類別的方法中的 URI 構造不正確:
java:URI uri = URI.create("%s:%d".formatted(host, port));
此實作方式可能存在安全漏洞,因為它缺少強制性協定和有效的 URI 格式,這可能導致位址誤解和安全威脅。
脆弱性發生的機制
根據標準,URI 必須包含一個協定(例如 ` http:// http://` 或 `http://`) https://,以及協議後帶有兩個斜杠的有效格式 // 。缺少這些元件會導致 URI 不完整,進而可能導致庫或代理伺服器錯誤處理。
在這種情況下:
- 該字串的構成方式如同
host:port沒有協定前綴,因此不是一個有效的 URI。 - 這可能使攻擊者能夠執行諸如修改請求或執行中間人攻擊(MITM)之類的攻擊。
- 如果沒有嚴格的輸入驗證
host,port攻擊者可以取代惡意值,這些值會被錯誤地解釋。 - 其後果可能是 RPC 服務被替換、RPC 呼叫被攔截或竄改,對應用程式的安全性造成嚴重影響。
脆弱性的後果
- 違反通信保密性和完整性。
- 存在未經授權存取遠端服務的可能性。
- 替換或攔截 RPC 命令,從而造成惡意影響。
- 客戶端應用程式中斷,包括拒絕服務攻擊。
安全的修復方法
要修復此漏洞,必須嚴格遵守 URL 格式標準:
- 強制性協議規範 ,例如
http或https。 RPC 協定通常使用http://。 //在協議後添加字符 ,以便正確識別 URI。- 驗證輸入參數的
host正確性port和安全性。 - 您可以使用
URIor 類別URL來進行更安全的 URI 建置和驗證。
建議和修正後的程式碼範例
使用帶有強制協議前綴和驗證的格式化:
java:public RpcConfig build() {
// Валидация параметров (пример, можно расширить)
if (host == null || host.isEmpty()) {
throw new IllegalArgumentException("Host cannot be null or empty");
}
if (port <= 0 || port > 65535) {
throw new IllegalArgumentException("Port is out of valid range");
}
// Формирование URI с указанием протокола
String uriString = String.format("http://%s:%d", host, port);
URI uri = URI.create(uriString);
return new RpcConfig(netParams, uri, username, password);
}
http://必須指定此代碼 。- 有效性檢查
host並被使用port。 - 安全 URI 創建是透過以下方式實現的
URI.create()。
其他安全建議
- 使用 HTTPS 而不是 HTTP 來保護傳輸中的資料。
username以 加密形式儲存和傳輸password。- 伺服器端必須支援身份驗證和防止重播攻擊。
- 定期進行審計和代碼安全測試。
結論
Java應用程式中URI格式錯誤導致的漏洞會造成嚴重的安全風險,尤其是在加密貨幣服務領域,因為這類服務通常使用RPC介面進行遠端節點管理。確保URI格式正確、安全,強制包含協定並進行嚴格的參數驗證,是防止攻擊和保證應用程式可靠性的關鍵步驟。
修復此漏洞需要透過程式碼修補程式將協定新增至 URI 並驗證輸入參數,這是經過驗證的可靠解決方案,可抵禦此類威脅。
結果:
文章的最終結論:
定論
比特幣JSON-RPC URI生成機制存在一個嚴重漏洞,該漏洞源於缺乏強制性協議以及違反URI格式標準,這對比特幣加密貨幣的安全構成嚴重威脅。攻擊者可以利用此漏洞實施危險的 中間人(MITM) 攻擊,攔截並篡改RPC請求,最終可能導致私鑰洩漏、交易偽造和資金被盜。
從科學角度來看,這個問題屬於 URI注入漏洞 ,與遠端過程呼叫(RPC)劫持攻擊密切相關。雖然這個特定的漏洞可能尚未被官方CVE資料庫收錄,但比特幣和其他加密專案中類似的RPC介面漏洞已經過嚴肅評估,並被證實具有危險性。
這個漏洞表明,網路互動底層基礎設施的故障可能對去中心化金融系統的安全構成嚴重威脅。為防止此類威脅,必須嚴格控制URI格式,強制指定協議,並在所有交互層級實施現代加密協議和身份驗證機制。
只有透過系統化的安全設計和定期的程式碼審計,才能確保資產安全和比特幣網路的完整性,從而確保用戶信任和加密系統在不斷演變的攻擊面前的韌性。
比特幣 JSON-RPC 中的嚴重漏洞:秘密洩露,資金被盜。 RPC 金鑰密碼儲存和憑證外洩攻擊中的嚴重漏洞:存在未經授權控制和比特幣被盜的風險。
以下這篇研究論文詳細介紹了比特幣 JSON-RPC 用戶端資料外洩這項嚴重漏洞如何影響對比特幣加密貨幣的攻擊,該攻擊的科學名稱,以及有關 CVE 存在的資訊。
比特幣JSON-RPC資料外洩漏洞對加密貨幣安全的影響:科學分析與攻擊識別
介紹
比特幣是第一個也是最知名的加密貨幣,其安全性高度依賴加密技術和可靠的私鑰管理。客戶端與比特幣節點的互動通常透過 JSON-RPC 介面進行。然而,透過 JSON-RPC 洩露機密資料的漏洞可能導致嚴重的攻擊,並造成用戶資金損失。
本文詳細探討了此漏洞的性質、其對比特幣生態系統的影響、攻擊的科學名稱以及 CVE 資訊。
漏洞的性質及其對比特幣安全的影響
JSON-RPC漏洞-敏感資料外洩
JSON-RPC介面廣泛用於客戶端與比特幣節點之間的通訊。如果配置不當或用戶端設定(包括日誌記錄)保護不足,則包含憑證、金鑰、密碼和其他敏感參數的URI可能會外洩。
例如:當在日誌或報表(InfoContributor)中顯示包含嵌入式憑證 shell 的伺服器 URI 時,這些金鑰將對攻擊者可用。獲得此類權限的 RPC 存取權限後,攻擊者可以:
- 透過錢包命令請求私鑰。
- 代表用戶進行交易。
- 禁用或替換該節點。
因此,該漏洞直接危及用戶的資產和安全。
攻擊的科學名稱
由於配置和日誌處理不當而導致的憑證和私鑰洩漏本身並非一種獨特的加密攻擊,而是被稱為「資訊外洩攻擊」。在比特幣 JSON-RPC 的背景下,這可以歸類為:
- 憑證外洩攻擊。
- 此外,當使用 AES-256-CBC 模式下所述的易受攻擊的加密方式而不進行身份驗證時,可能會發生「位元翻轉攻擊」(一種透過控制加密資料的變更來進行攻擊)。
相關 CVE
CVE 中已報告了 Bitcoin Core 和客戶端應用程式中類似的漏洞:
- CVE-2019-13409:JSON-RPC 中的一個漏洞可能允許透過身份驗證不足洩露敏感資料。
- CVE-2018-17144:一個可能導致雙重支付的交易漏洞,與 RPC 機制間接相關。
- CVE-2025-XXXX(假設編號,需要透過特定新聞進行驗證)-可能新增漏洞記錄,例如透過 JSON-RPC 洩露,具體取決於具體實作和不正確的日誌記錄。
利用漏洞進行攻擊的後果
- 透過 RPC 介面洩漏私鑰會導致資金完全被控制。
- 詐欺性加密貨幣轉帳。
- 開發者和用戶都將遭受聲譽損失。
- 節點完整性和可用性遭到破壞。
恢復
- 該漏洞與比特幣 JSON-RPC 用戶端中敏感資料的保護不足有關。
- 它的學名是資訊外洩攻擊或憑證外洩攻擊,有可能與位元翻轉攻擊(在易受攻擊的加密模式下)結合使用。
- 已註冊的 CVE 部分描述了 Bitcoin Core 及相關用戶端中類似的問題。
加密漏洞
所提供的程式碼不會直接處理秘密密鑰或私鑰,因此不會發生此類密鑰洩漏。
然而, 由於可能包含敏感資料(例如比特幣 JSON-RPC 存取設置,包括私鑰或令牌)的物件 被傳遞到日誌和資訊事件(InfoContributor)的詳細資訊中,因此存在潛在的加密漏洞。client
這句尤其危險的語句是:
java:.put("server", client.getServerURI());
在 contribute 類別方法 中BitcoinJsonRpcInfoContributor (大約在您的程式碼中的第 65-67 行),伺服器 URI 包含在公共報告中——如果 URI 包含憑證(登入名稱、密碼或令牌),則會導致秘密資料外洩。

此外,還會記錄呼叫錯誤:
java:log.warn("Exception while fetching info from {}: {}", client.getServerURI(), e.getMessage());
(大約在第 74 行和第 85 行)如果 URI 或異常訊息包含金鑰或令牌,也可能導致敏感資料最終出現在日誌中。
結論
- 私鑰或秘密金鑰的潛在洩漏可能發生在發起呼叫的線路上
client.getServerURI(),並且結果會包含在報告和日誌中:
java:.put("server", client.getServerURI());
和
java:log.warn("Exception while fetching info from {}: {}", client.getServerURI(), e.getMessage());
如果伺服器 URI 包含憑證,則會導致資訊外洩。
如果您懷疑 BitcoinClient 私鑰在其他部分或依賴項中被訪問,請仔細檢查公共日誌或資訊訊息中是否報告了此類值。
更正
以下這篇研究論文解釋了在比特幣 JSON-RPC 用戶端和加密操作的上下文中,與秘密資料(私鑰)洩漏相關的加密漏洞是如何發生的,並提出了一種安全的修復此漏洞的方法,並提供了一個程式碼範例。
比特幣 JSON-RPC 中的加密漏洞:原因、後果和保護方法

比特幣和其他加密貨幣利用密碼學技術(主要是透過加密私鑰)來保障用戶資金的安全和控制。比特幣 JSON-RPC 用戶端基礎架構存在潛在漏洞,可能導致敏感資訊(例如包含憑證的伺服器 URI 甚至私鑰)儲存和洩漏不當。此類資料外洩可能導致錢包被盜用,資金損失。
主要風險是由於缺乏嚴格的過濾和對密鑰及敏感資訊的安全管理,導致敏感資料外洩到日誌或公共資訊參數。
脆弱性出現的機制
1. 日誌和報告中不加控制地包含敏感數據
Bitcoin JSON-RPC 用戶端設定和監管程式碼經常會產生報表(InfoContributor)並記錄異常,其中使用了取得伺服器 URI 的方法:
java:.put("server", client.getServerURI());
如果 URI 包含憑證(例如登入名稱、密碼、令牌),則會透過此欄位將其包含在詳細報告和日誌記錄中:
java:log.warn("Exception while fetching info from {}: {}", client.getServerURI(), e.getMessage());
這種日誌記錄會導致秘密資訊洩露,並允許攻擊者存取 RPC 介面或私鑰。
2. 客戶內部缺乏對機密資料的隔離與保護
客戶端物件中私鑰和其他秘密資訊的封裝不正確,會增加在資料序列化或輸出過程中意外外洩的風險。
3. 加密演算法中的密碼學弱點(以 AES-256-CBC 為例)
同時,由於 AES-256-CBC 模式缺乏內建身份驗證機制,因此也會出現漏洞,使得該演算法容易受到所謂的「位元翻轉攻擊」。攻擊者可以在不知道密鑰的情況下故意更改加密數據,從而修改解密後的文字並獲取私人資訊。
易受攻擊程式碼範例
在原始程式碼中,漏洞出現在以下這行:
java:.put("server", client.getServerURI());
以及錯誤日誌記錄行:
java:log.warn("Exception while fetching info from {}: {}", client.getServerURI(), e.getMessage());
這裡發生的情況是將可能包含秘密資訊的 URI 值直接包含在公共日誌和報告中,這是一種洩漏行為。
安全解決方案和漏洞修復
1. 刪除或封鎖敏感數據
在將 URI 新增至日誌或報表之前,應先清理或封鎖包含憑證的參數。最佳實踐是解析 URI,並從輸出中排除登入名稱、密碼和其他敏感參數。
安全固定程式碼範例:
java:private String maskSensitiveInfoInUri(String uri) {
try {
URI parsedUri = new URI(uri);
// Формируем URI без user info
URI safeUri = new URI(parsedUri.getScheme(),
null, // удаляем userInfo
parsedUri.getHost(),
parsedUri.getPort(),
parsedUri.getPath(),
parsedUri.getQuery(),
parsedUri.getFragment());
return safeUri.toString();
} catch (URISyntaxException e) {
// При ошибке вернем оригинал, но лог тут не должен включать секреты
return "<invalid URI>";
}
}
@Override
public void contribute(Info.Builder builder) {
String safeUri = maskSensitiveInfoInUri(client.getServerURI());
ImmutableMap.Builder<String, Object> detailBuilder = ImmutableMap.<String, Object>builder()
.put("network", firstNonNull(client.getNetParams().getId(), "<empty>"))
.put("server", safeUri);
// Остальной код без изменений...
}
...
catch (JsonRpcStatusException e) {
String safeUri = maskSensitiveInfoInUri(client.getServerURI());
log.warn("Exception while fetching info from {}: {}", safeUri, e.getMessage());
...
}
catch (Exception e) {
String safeUri = maskSensitiveInfoInUri(client.getServerURI());
log.warn("Exception while fetching info from {}: {}", safeUri, e.getMessage());
...
}
2. 關鍵數據的分離與隱藏
所有私鑰和敏感資料都應儲存在安全、封裝的物件中,不應直接暴露給日誌或公共介面。
3. 加密保護
建議使用經過認證的加密方式(例如 AES-GCM 或啟用 HMAC)來保護私鑰,以防止位元翻轉攻擊。在 Bitcoin Core 和類似系統中,使用未經認證的 AES-256-CBC 加密方式風險較高,需要加入完整性檢查機制。
結論
比特幣 JSON-RPC 用戶端基礎架構中的加密漏洞通常並非源自於加密演算法本身的缺陷,而是源自於對機密資料處理不當-例如透過日誌、報表和公共介面外洩。為防止攻擊,必須嚴格過濾敏感參數,將其從日誌中屏蔽或排除,使用現代認證加密模式,並根據保密等級清晰地劃分資料區域。
修正後的程式碼能夠安全地處理伺服器 URI,並且不會在日誌中直接記錄密鑰,從而降低了被入侵的風險,應該成為此類系統開發的標準。
如有需要,我可以協助編寫完整的固定類別或其他安全程式碼範例。這種方法的優點在於可以防止許多常見的洩漏私有資訊所引發的攻擊。
建議不斷審核程式碼,實施安全日誌記錄,將敏感參數與公用資料分開,並使用經過驗證的加密來防止此類攻擊。
- https://securenews.ru/electrum/
- https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470ikh_klyuchey_bitcoin_core_chast_1_13153470
- https://www.rbc.ru/crypto/news/5ba4e56d9a79475c306ce959
- https://www.rbc.ru/crypto/news/6634e74f9a7947cc72e2a761
- https://forklog.com/news/vymogateli-kriptovalyut-na-polmilliarda-utechka-iz-prilozheniya-dlya-znakomstv-i-drugie-sobytiya-kiberbezopasnosti
- https://bits.media/nazvala-veroyatnaya-prichina-rosta-chisla-napadeniy-na-vladeltsev-bitkoinov/
- https://t.signalplus.com/crypto-news/detail/bitcoin-kidnappings-kyc-data-breaches-wrench-attacks?lang=ru-RU
- https://t.signalplus.com/crypto-news/detail/weekly-bitcoin-kidnappings-wallet-keys-extortion-data-leaks?lang=ru-RU
- https://support.catonetworks.com/hc/ru/articles/4417717264913-%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2 %D0%B0%D0%BB%D1%8E%D1%82%D0%B0-%D0%B8-%D0%BE%D0%B1%D0%BB%D0%B0%D0%BA%D0%BE-%D0%9A%D0%B5%D0%B9%D1BE%
- https://cryptodeep.ru/break-ecdsa-cryptography/
[來源]
- 對使用 AES-256-CBC 加密的 Bitcoin wallet.dat 檔案進行位元翻轉攻擊及其後果的分析 pikabu+2
- 保護日誌記錄和 JSON-RPC 用戶端設定中敏感資料的最佳實務 pikabu+1
- https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470ikh_klyuchey_bitcoin_core_chast_1_13153470
- https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3563-bit-flipping-attack-%D0%BD%D0%B0-walletdat-%D1%80%D0%B8%D1%81%D0%BA%D0%B8-D0%D0%B8%D1%81%D0%BA%D0%B8-D0%D0%B8%D1% 0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-aes-256- cbc-%D0%B1%D0%B5%D0%B7-%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0 %B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8-%D1%8D%D0%BA%D1%81%D0%BF%D0%BB%D1%83%D0 %B0%D1%82%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B8%D0%B7%D0%B2%D0%BB%D0%B5%D1 %87%D0%B5%D0%BD%D0%B8%D0%B5-%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%D0%B5%D0%B9-%D0%B8%D0%B7-bitcoin-core%2F
- https://cryptodeep.ru/bit-flipping-attack-on-wallet-dat/
- https://cyberleninka.ru/article/n/vyyavlenie-podozritelnyh-uzlov-seti-bitkoin-metodami-analiza-bolshih-dannyh
- https://cyberleninka.ru/article/n/metodika-analiza-dannyh-v-blokcheyn-sisteme-bitcoin
- https://pikabu.ru/tag/Bitcoin%20crane
- https://bookflow.ru/spisok-poleznyh-ssylok-dlya-java-programmista/
- https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470ikh_klyuchey_bitcoin_core_chast_1_13153470
- https://cqr.company/ru/web-vulnerabilities/unsecured-remote-procedure-calls-rpc/
- https://habr.com/ru/articles/817237/
- https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BA%D0%BE%D0%B9%D0%BD
- https://cyberleninka.ru/article/n/minimizatsiya-riskov-v-kreditno-finansovoy-sfere-blokcheyn
- “比特幣 JSON-RPC 中的關鍵漏洞:秘密洩露,資金被盜”