作者:KEYHUNTER
比特幣錢包管理系統中涉及私鑰洩漏的加密漏洞可能導致對用戶資產和整個加密網路的嚴重攻擊。此類攻擊的科學名稱是「私鑰洩漏」。當攻擊者取得私鑰時,便可完全控制資金管理和交易簽名,這是一種根本性的安全威脅 。
關鍵漏洞對比特幣攻擊的影響
在比特幣中,私鑰是簽署交易和確認資金所有權的唯一工具。私鑰洩漏會導致資產控制權喪失:攻擊者可以輕易創建合法交易並將資金提取到任意地址。對於多重簽名錢包(multisig),只要洩漏所需數量的金鑰(例如,3 個金鑰中的 2 個),就可以完全偽造簽名,從而導致資金被盜。
此外,密鑰洩漏不僅會危及個人用戶,如果密鑰被用於管理控製或區塊鎖定,還會危及基礎設施。這將導致以下後果:
- 完全失去對錢包的控制;
- 潛在的經濟損失可能高達數百萬美元;
- 使用易受攻擊的金鑰處理方法的服務違反了信任關係;
- 金鑰或個人資料外洩可能導致大規模社會工程攻擊。
攻擊的科學名稱和分類
在密碼學中,基於獲取和使用私鑰的攻擊被歸類為 私鑰洩漏攻擊 或 金鑰洩漏攻擊 。此外,這種漏洞通常也是其他類型攻擊的根本原因,例如:
- 重播攻擊 -當金鑰洩漏後,攻擊者可以重新發送已簽署的交易。
- 中間人攻擊(MITM) ——如果在傳輸或預存程序中攔截私鑰。
- 未經授權的交易偽造 是指未經所有者同意而偽造交易。
CVE編號的可用性
目前 CVE 漏洞資料庫中還沒有針對私鑰外洩的單一通用 CVE 漏洞 ,因為它更像是一個經典的安全實作缺陷,而不是一個特定的軟體漏洞。
然而,如果漏洞與關鍵元件(例如錢包、庫、應用程式或服務保護方面的漏洞)的實作錯誤有關,則私鑰洩漏或相關事件的特定案例可能擁有自己的 CVE 編號。例如:
- 常用比特幣庫中的漏洞;
- 與錢包或 API 駭客攻擊相關的 CVE 出版物;
- 協定或加密錯誤導緻密鑰洩漏。
在科學出版物和報告中,CVE 與特定的攻擊向量相關聯,而關鍵漏洞本身被描述為嚴重的安全威脅,沒有單一的通用 CVE 編號作為類別。
概括
- 私鑰洩漏導致的加密漏洞會引發一種稱為 私鑰外洩的攻擊 。
- 這次攻擊的後果是資金失控、經濟損失和網路安全受損。
- 此漏洞類別沒有單獨的 CVE 編號,但特定事件可能會根據不同的 CVE 編號進行報告。
- 為了應對這種情況,必須採取嚴格的保密和金鑰保護措施,禁止公開輸出或傳輸私鑰。
資料來源:
- https://forklog.com/news/hakery-vzlomali-lockbit-i-opublikovali-dannye-60-000-bitkoin-adresov
- https://forklog.com/news/utechki-kyc-dannyh-priveli-k-rostu-napadenij-na-kriptoinvestorov
- https://www.binance.com/ru/square/post/28149784809018
- https://phemex.com/ru/news/article/private_key_breach_affects_nearly_200_wallets_cause_unknown_10001
- https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_2_13153514
- https://www.rbc.ru/crypto/news/685ea64c9a7947de65e03d13
- https://www.itsec.ru/articles/ataka-51-i-ustojchivost-blokchejna-bitkoina
- https://www.coindesk.com/ru/markets/2025/07/05/8b-btc-movements-may-have-been-preceded-by-covert-bitcoin-cash-test
- https://2bitcoins.ru/hakery-atakuyut-pokupatelej-wlfi/
- 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
以下這篇研究論文從 Python 程式碼安全的角度探討了加密系統中金鑰外洩漏洞的成因和原理,並提供了修復此類漏洞的詳細安全方法以及範例程式碼。
加密漏洞通常與金鑰外洩有關,而解決該問題的安全方案也應運而生。
介紹
密碼學是一門確保資料機密性、完整性和真實性的科學,被廣泛用於保護數位空間中的資訊。然而,即使採用現代密碼演算法,由於實作錯誤,特別是與私鑰和助記詞(種子短語)等敏感資訊的儲存和處理不當相關的錯誤,仍然可能出現漏洞。 xn —-8sbempclcwd3bmt+1
密碼系統中最嚴重的漏洞之一是私鑰洩露,這會導致整個系統的安全性受到威脅。本文以一段用於產生和管理多重簽章比特幣錢包的Python程式碼為例,探討了這種漏洞如何透過不安全的日誌記錄方式記錄秘密資料而暴露出來。
脆弱性成因
在所提供的程式碼中,助記詞和私鑰會透過函數直接輸出到控制台螢幕 ,這顯然print()存在洩漏風險。因為控制台日誌可以被保存、被攻擊者查看或被意外發布,從而危及密鑰的隱私安全。- 密鑰缺乏安全儲存和傳輸。
缺乏安全的儲存機制(例如,使用硬體錢包、安全記憶體儲存或加密容器)意味著秘密資料以未加密的形式儲存在記憶體中,並且可以不受限制地輸出。 - 人為因素:
如果程式碼不斷輸出金鑰或種子,使用者或開發者可能會在偵錯、測試或利用過程中無意中洩露敏感資料。 - 直接處理私鑰
在程式碼中,來自 HDKey 的私鑰直接轉換為 WIF 格式並列印出來,這完全違反了安全處理加密金鑰的原則。
脆弱性的後果
私鑰外洩後,攻擊者將立即完全控制用戶的資金。在多重簽名錢包中,這可能導致簽名被偽造,加密貨幣被盜。助記詞外洩則會導致錢包被恢復,並失去對所有關聯金鑰的控制權。
安全修復漏洞的方法
為提高安全性,必須防止私鑰公開輸出和儲存。主要建議:
- 避免將私鑰和助記詞輸出到日誌或控制台 。密鑰絕不能離開受保護的記憶體區域。
- 將金鑰儲存在加密容器、硬體錢包或使用安全儲存模組 (HSM) 中 。
- 使用安全協定在裝置之間交換公鑰,而不洩漏私鑰 。
- 對使用者進行安全教育,並解釋洩漏敏感資訊的風險 。
修復了程式碼,實現了安全存儲,並且不會輸出私鑰。
Python# Безопасная генерация ключей без вывода приватных данных
from bitcoinlib.wallets import wallet_exists, Wallet
from bitcoinlib.mnemonic import Mnemonic
from bitcoinlib.keys import HDKey
WALLET_NAME = "Multisig-2of3"
NETWORK = 'testnet'
KEY_STRENGTH = 128
SIGNATURES_REQUIRED = 2
WITNESS_TYPE = 'segwit'
if not wallet_exists(WALLET_NAME):
cosigners = [
('Offline PC', 'bip32', 'password'),
('Online PC', 'bip32', ''),
('Paper backup', 'single', ''),
]
key_lists = {}
for cosigner in cosigners:
words = Mnemonic().generate(KEY_STRENGTH)
password = ''
if cosigner[2] == 'password':
password = input(f"Please enter password for cosigner '{cosigner}': ")
seed = Mnemonic().to_seed(words, password)
# Генерация HDKey, не выводим приватные ключи
hdkey = HDKey.from_seed(seed, network=NETWORK, key_type=cosigner[1], witness_type=WITNESS_TYPE)
if cosigner[1] == 'bip32':
public_account = hdkey.public_master_multisig(witness_type=WITNESS_TYPE)
else:
public_account = hdkey
# Сохраняем в key_lists только публичные ключи для совместного использования
for w in cosigners:
if cosigner == w:
addkey = hdkey # приватный ключ хранится локально, не выводится
else:
addkey = public_account.public()
if w not in key_lists:
key_lists[w] = []
if addkey not in key_lists[w]:
key_lists[w].append(addkey)
# Создание мультиподписного кошелька с приватными ключами локально, без вывода
offline_wallet = Wallet.create(WALLET_NAME, key_lists['Offline PC'], sigs_required=SIGNATURES_REQUIRED,
witness_type=WITNESS_TYPE, network=NETWORK)
offline_wallet.new_key()
print("Multisig wallet created securely. Private keys are not displayed.")
else:
# Работа с уже созданным кошельком, без вывода приватных ключей
from bitcoinlib.config.config import BCL_DATABASE_DIR
online_wallet = Wallet(WALLET_NAME, db_uri=BCL_DATABASE_DIR + '/bitcoinlib.tmp.sqlite')
online_wallet.utxos_update()
online_wallet.info()
在此更正版本中:
- 私鑰和助記詞不會輸出到控制台。
- 私鑰儲存在 HDKey 物件中,然後儲存在錢包中,不會對外公開。
- 設備之間只傳輸公鑰。
- 密碼由使用者輸入,不會保存在日誌中。
保護和預防攻擊
- 制定嚴格的資訊安全規則,限制對產生和儲存私鑰的機器的存取。
- 使用不允許匯出私鑰的硬體錢包。
- 對代碼進行審核和修訂,以防止機密資訊外洩。
- 對開發人員和使用者進行安全金鑰處理實務的教育。
- 使用安全協定傳輸公鑰。

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

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

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

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

PrivKeyGenesis 是一個高階密碼分析框架,旨在自動利用比特幣錢包實作中的私鑰洩漏漏洞。它結合了側通道分析、不安全金鑰儲存審計和針對性的 RPC 身份驗證繞過技術,能夠從易受攻擊的錢包系統中恢復或重建私鑰。本文介紹了 PrivKeyGenesis 的架構,探討了比特幣庫中私鑰洩漏漏洞的產生機制,並分析了該工具用於提取金鑰和恢復對遺失或鎖定錢包存取權的攻擊方法。最後,我們討論了緩解此類攻擊和保護使用者資產的防禦策略。
1. 引言
比特幣的安全模型完全依賴私鑰的機密性和完整性。一旦攻擊者取得了使用者的私鑰,他們就能完全控制資金,並且能不可逆地轉移資產。錢包軟體中的實作缺陷——例如不正確的 RPC 驗證、不安全的記憶體處理或對敏感資料的冗長日誌記錄——都可能導致私鑰洩漏或繞過存取控制。 PrivKeyGenesis 正是針對這些缺陷,旨在展示此類漏洞的嚴重影響,並強調建立健全的金鑰管理機制的緊迫性。
2. PrivKeyGenesis概述
PrivKeyGenesis 由三個核心模組組成:
- 洩漏掃描儀
- 審核錢包二進位檔案和原始程式碼,尋找輸出金鑰或種子的不安全日誌記錄呼叫(例如
print,, )。console.log - 執行靜態分析,以偵測硬編碼憑證或金鑰派生秘密。
- 審核錢包二進位檔案和原始程式碼,尋找輸出金鑰或種子的不安全日誌記錄呼叫(例如
- 側通道分析器
- 與硬體或虛擬化環境連接,以測量計時、快取或電磁輻射。
- 對易受攻擊的金鑰派生例程應用差分功率分析 (DPA) 技術來重構私鑰的位元。
- RPC漏洞利用引擎
- 對錢包 RPC 端點執行自動化模糊測試和憑證噴灑測試。
- 偵測弱身份驗證方案(預設密碼、缺少 TLS、令牌驗證有缺陷)以執行
dumpprivkeyRPCsignrawtransaction呼叫。
這些模組協同工作:洩漏掃描器精確定位候選漏洞,側通道分析器完善密鑰材料,RPC 利用引擎利用任何剩餘的攻擊面來檢索完整的私鑰或代表受害者簽署交易。
3. 比特幣錢包中的私鑰洩漏漏洞
PrivKeyGenesis所利用的實作錯誤通常分為三類:
- 不安全的金鑰輸出:
開發人員在偵錯過程中可能會無意中記錄私鑰、助記詞或 WIF 字串。如果這些日誌未加保護,則金鑰很容易被提取出來。 - 弱 RPC 驗證
錢包守護程序暴露的 JSON-RPC 介面通常依賴於設定檔中定義的靜態憑證。攻擊者可以猜測或取得這些憑證來呼叫敏感的 RPC 方法。 - 側通道洩漏
軟體金鑰派生功能(例如,BIP-39 種子生成、PBKDF2)在通用硬體上運行可能會透過時序差異或功率波動洩露秘密資訊。
PrivKeyGenesis 可自動偵測並利用所有三種類型的漏洞,從而大幅減少攻擊者攻破金鑰所需的時間和專業知識。
4. 攻擊方法
4.1 偵察和掃描
PrivKeyGenesis 首先對目標機器進行檔案系統和流程掃描。它會識別 wallet.dat 檔案、日誌檔案以及正在運行的比特幣守護程式。然後,洩漏掃描器會解析日誌和原始程式碼,以尋找金鑰模式。
4.2 側頻道密鑰恢復
如果未發現直接洩漏,工具會採用側通道探測。 PrivKeyGenesis 透過在受控環境中精心策劃簽章操作並擷取功耗或時序軌跡,應用差分脈衝分析 (DPA) 來恢復部分金鑰位元。這些密鑰位元作為種子,用於基於格的密鑰恢復演算法,以重建完整的 ECDSA 私鑰標量。
4.3 RPC 身份驗證繞過
同時,RPC漏洞利用引擎會測試預設憑證和令牌認證的弱點。一旦獲得存取權限,它會發出walletpassphrase解鎖請求,隨後dumpprivkey檢索原始密鑰材料。在多重簽章場景中,引擎會依序攻擊共同簽章節點,以收集足夠的金鑰份額來達到閾值簽章要求。
5. 對比特幣資產安全的影響
利用 PrivKeyGenesis,攻擊者可以:
- 竊取資金:
掌握私鑰後,攻擊者可以創建和傳播欺詐性交易,從而耗盡錢包餘額。 - 透過破壞必要的金鑰子集來破壞多重簽章信任
,多重簽章錢包方案(例如 2/3)就會崩潰,從而否定信任假設。 - 使用洩漏金鑰的管理節點可能會被劫持,從而乾擾網路服務,
並導致私有鏈中的交易審查或區塊提交被篡改。 - 私鑰的公開會使攻擊者更容易進行社會工程攻擊
,從而脅迫受害者或第三方服務洩露更多敏感資訊。
6. 緩解策略
為了防禦 PrivKeyGenesis 和類似工具,錢包開發者和營運商必須採用分層安全方法:
- 消除明文金鑰輸出
- 移除所有私鑰、種子或 WIF 資料的偵錯日誌記錄。
- 應用程式碼審查和靜態分析來強制執行日誌記錄策略。
- 強化 RPC 介面
- 強制使用儲存在安全性庫中的強隨機產生的 RPC 憑證。
- 需要 TLS 用戶端憑證或相互認證才能進行 RPC 存取。
- 採用硬體安全模組(HSM)
- 將所有私鑰操作卸載到 HSM 或硬體錢包,這些設備永遠不會暴露原始密鑰材料。
- 確保韌體具備防側頻道攻擊能力和防篡改偵測功能。
- 記憶體保護和密鑰清除
- 使用後立即將關鍵緩衝區清零。
- 在受保護的記憶體區域(例如,mlock、安全飛地)中分配金鑰,以防止交換。
- 持續安全審計
- 整合模糊測試和滲透測試,針對金鑰處理程式碼路徑。
- 監控執行時間是否有異常的 RPC 指令或未經授權的日誌匯出。
7. 結論
PrivKeyGenesis充分展現了比特幣錢包實作中私鑰外洩漏洞帶來的巨大威脅。它透過自動化洩漏檢測、側通道分析和 RPC 利用,顯著降低了攻擊者的操作難度,並突顯了金鑰管理中的關鍵缺陷。該工具的成功凸顯了嚴格的安全編碼實踐、硬體級金鑰儲存和強大的身份驗證控制的重要性。只有透過全面、縱深防禦的方法,託管人和開發者才能保護用戶資產並維護比特幣生態系統的信任。
結論
安全系統實作中的加密漏洞通常與演算法無關,而是由金鑰處理和預存程序中的錯誤導致。將私鑰和助記詞輸出到日誌或控制台是導致嚴重安全漏洞的最常見錯誤之一。
良好的做法是確保在執行加密操作時所有敏感資料都不會洩露,並且僅透過安全、可信任的機制儲存和傳輸敏感資料。
實施所提出的措施和代碼修正將顯著提高安全性,降低攻擊風險,並維護使用者對密碼系統的信心。
資料來源:
- Vershinina LA 密碼系統漏洞類型及預防措施 xn—-8sbempclcwd3bmt
- 密碼學在防止資訊透過技術管道外洩中的作用 na-journal
如果需要對密碼演算法進行更深入的技術分析,包括公式和描述,我可以準備一份單獨的材料。
- https://www.xn—-8sbempclcwd3bmt.xn--p1ai/article/22580
- https://na-journal.ru/5-2024-informacionnye-tekhnologii/12353-rol-kriptografii-v-zashchite-informacii-ot-utechki-po-tehnicheskim-kanalam
- https://www.itsec.ru/articles/kriptografiya-i-kleptografiya
- https://cyberleninka.ru/article/n/uyazvimosti-kriptograficheskih-sistem-s-razlichnymi-protokolami-kvantovogo-raspredeleniya-klyucha-i-klyuchevaya-rol-biometrii-v
- https://cyberleninka.ru/article/n/analiz-uyazvimostey-v-sistemah-shifrovaniya-primery-i-posledstviya
- https://science-engineering.ru/ru/article/view?id=1291
- https://cyberrus.info/wp-content/uploads/2020/08/66-75-337-20_6.-Minakov.pdf
- https://securitymedia.org/info/nadezhnye-shifry-kriptografiya-v-sovremennom-mire.html
- https://falcongaze.com/ru/pressroom/publications/osnovy-ib/sredstva-kriptograficheskoj-zashchity-informacii.html
由於私鑰 (wif_private) 和助記詞 (passphrase) 以明文形式輸出到控制台,所提供程式碼中存在與洩漏秘密或私鑰相關的加密漏洞,這可能導致安全漏洞。
存在漏洞的關鍵行:
- 輸出產生的助記詞(密碼短語)的行:
Pythonprint("Passphrase: %s" % words)
- 輸出線上電腦私鑰(wif_private)的行(位於腳本末尾):
Pythonprint(" HDKey('%s', key_type='single', witness_type='%s')" % (key.wif_private(), WITNESS_TYPE))
print(" '%s'," % key.wif_private())
- 列印公鑰和密碼也可能很危險,尤其是在密碼外洩的情況下:
Pythonprint("Password: %s" % ('*' * len(password))) # здесь скрыто, но ввод пароля есть
print("Public key: %s" % public_account.wif_public())
解釋
- 助記詞和私鑰是必須嚴格保密的機密資料。如果控制台被記錄或可供第三方訪問,將它們輸出到控制台會增加資料外洩的風險。
- 特別是以下幾行:
Pythonprint("Passphrase: %s" % words)
和
Pythonprint(" HDKey('%s', key_type='single', witness_type='%s')" % (key.wif_private(), WITNESS_TYPE))
print(" '%s'," % key.wif_private())
公開輸出金鑰,嚴重降低安全性。
推薦
要修復此漏洞,您應該:
- 絕對不要以明文形式顯示助記詞和私鑰。
- 僅將此資料儲存在安全的儲存設施中,並使用安全的方式傳輸此資料。
- 不要列印金鑰,而應使用安全交換機製或加密技術。
因此, 漏洞可以在輸出助記詞(passphrase)和私鑰(wif_private)的行中找到——大約在第 40 行到第 75 行,以及列印線上 PC 私鑰的最後一部分。
總之,值得強調的是,比特幣生態系統中私鑰洩漏這項關鍵漏洞對加密貨幣資產和整個區塊鏈基礎設施的安全性構成根本性威脅。這個漏洞源自於私鑰儲存和處理過程中缺乏保護,這使得攻擊者能夠實施私鑰外洩攻擊。
此類攻擊的後果不堪設想:攻擊者一旦控制了私鑰,便可偽造交易,從而阻止資金的合法所有權轉移,並對用戶和服務造成經濟損失。如果攻擊影響到簽章所需的金鑰數量,多重簽章錢包系統尤其脆弱,因為這將徹底破壞信任和控制機制。
在科學和應用領域,這種漏洞是加密貨幣領域最危險、最常用的攻擊方式之一。儘管目前尚無適用於所有此類漏洞的通用CVE編號,但個別漏洞利用案例都會被記錄為嚴重事件並分配相應的CVE編號,這表明解決該問題至關重要。
有效防範此類威脅需要採取綜合措施:從拒絕公開輸出和儲存私鑰、使用硬體和加密技術,到培訓使用者並持續審計安全系統。只有這種系統性的方法才能最大限度地降低金鑰洩漏的風險,並維護比特幣網路的完整性和信任度。
因此,重視私鑰安全不僅是技術上的必要,更是加密貨幣基礎設施永續發展和保護數位資產免受現代網路攻擊的基礎。
最終結論揭示並強調了私鑰漏洞及其對比特幣造成的相應攻擊問題的嚴重性和緊迫性,並以科學嚴謹的方式對其進行了系統性闡述。總之,值得強調的是,比特幣生態系統中與私鑰外洩相關的關鍵漏洞對加密貨幣資產和整個區塊鏈基礎設施的安全性構成了根本性威脅。該漏洞源於密鑰儲存和處理過程中缺乏保護,這使得攻擊者能夠實施私鑰洩漏攻擊,從而竊取私鑰。
此類攻擊的後果不堪設想:攻擊者一旦控制了私鑰,便可偽造交易,從而阻止資金的合法所有權轉移,並對用戶和服務造成經濟損失。如果攻擊影響到簽章所需的金鑰數量,多重簽章錢包系統尤其脆弱,因為這將徹底破壞信任和控制機制。
在科學和應用領域,這種漏洞是加密貨幣領域最危險、最常用的攻擊方式之一。儘管目前尚無適用於所有此類漏洞的通用CVE編號,但個別漏洞利用案例都會被記錄為嚴重事件並分配相應的CVE編號,這表明解決該問題至關重要。
有效防範此類威脅需要採取綜合措施:從拒絕公開輸出和儲存私鑰、使用硬體和加密技術,到培訓使用者並持續審計安全系統。只有這種系統性的方法才能最大限度地降低金鑰洩漏的風險,並維護比特幣網路的完整性和信任度。
因此,重視私鑰安全不僅是技術上的必要,更是加密貨幣基礎設施永續發展和保護數位資產免受現代網路攻擊的基礎。
最終結論揭示並強調了私鑰漏洞問題的嚴重性和關鍵性,以及比特幣遭受相應攻擊的嚴重性,並以科學和專業的方式將其形式化。
- https://cryptodeep.ru/whitebox-attack/
- https://forklog.com/news/ai/iskusstvennyj-intellekt-slil-zakrytye-klyuchi-ot-kriptokoshelkov
- https://bluescreen.kz/niesiekrietnyi-kliuch-issliedovatieli-obnaruzhili-uiazvimosti-v-kriptokoshielkakh/
- https://forklog.com/news/in-chips-for-bitcoin-koshelkov-obnaruzhili-kriticheskuyu-uyazvimost
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://top-technologies.ru/ru/article/view?id=37634
- https://habr.com/ru/articles/817237/
- https://www.itsec.ru/articles/upravlenie-uyazvimostyami-v-kriptokoshelkah
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
- https://cyberleninka.ru/article/n/teoreticheskie-aspekty-rassledovaniya-prestupleniy-svyazannyh-s-ispolzovaniem-kriptovalyut
在所提供的程式碼中,與金鑰洩漏相關的加密漏洞出現在用戶直接輸入私鑰或助記詞的行中,之後私鑰將被載入並用於簽名,沒有任何限制,也沒有對該金鑰進行安全管理。
具體易受攻擊的線路:
Pythonkey_str = input("Enter private key or mnemonic passphrase: ")
if len(key_str.split(" ")) < 2:
hdkey = HDKey(key_str)
else:
password = input("Enter password []:")
seed = Mnemonic().to_seed(key_str, password)
hdkey = HDKey.from_seed(seed, network=network)
t.sign(hdkey)
在這裡,私鑰或助記詞以明文形式輸入,程式碼中沒有任何安全儲存或限制其洩漏的措施:金鑰立即加載到記憶體中並用於簽名。
潛在的安全漏洞在於私鑰或助記詞可能被洩漏:
- 只需從控制台讀取(密鑰可以寫入外部日誌或被攻擊者攔截);
- 由於記憶體管理不善,如果密鑰長時間保留在記憶體中;
- 缺乏輸入保護(例如,密碼和金鑰輸入時未進行遮罩處理);
- 關鍵材料一旦進入市場,就缺乏控制和保護。
因此,關鍵漏洞存在於以下程式碼行中,從以下程式碼行開始:
Pythonkey_str = input("Enter private key or mnemonic passphrase: ")
...
t.sign(hdkey)
所有私鑰邏輯都集中在這裡,沒有使用安全的金鑰管理或加密方法。這可能導致私鑰洩露,並危及交易簽名的安全性。
建議:為消除此漏洞,請使用安全的輸入方法(例如,使用密碼遮罩),使用硬體模組進行簽名,或使用私鑰不離開安全存儲,且金鑰不以明文形式輸出或傳輸的系統。
- https://academy.suncrypto.in/bitcoinlib/
- https://cybersecuritynews.com/malicious-python-packages-attacking-popular-cryptocurrency-library/
- https://cointelegraph.com/explained/what-is-bitcoinlib-and-how-did-hackers-target-it
- https://mojoauth.com/news/malware-in-open-source-exploiting-ethereum-smart-contracts
- https://blog.phylum.io/python-crypto-library-updated-to-steal-private-keys/
- https://www.reversinglabs.com/blog/malicious-python-packages-target-popular-bitcoin-library
- https://attacksafe.ru/pybitcointools/
- https://attacksafe.ru/bitcoinlib/
- http://python-bitcoinlib.readthedocs.io/en/latest/consensus.html
以下這篇研究論文探討了用於簽署比特幣交易的 Python 程式碼中私鑰處理漏洞的根源,並提出了一個安全的修復方案以及範例程式碼。
BitcoinLib 私鑰外洩漏洞分析及安全性修復方法
介紹
比特幣和其他加密貨幣依賴對私鑰的加密保護,私鑰允許持有者進行交易並證明其資金所有權。同時,私鑰的安全是整個系統安全的關鍵因素。即使私鑰洩漏一次,也可能導致用戶資金完全被盜。
這段使用 BitcoinLib 函式庫處理多重簽章交易的 Python 程式碼有一個典型的漏洞——私鑰和助記詞的輸入和處理不安全。該漏洞會造成真正的安全威脅,攻擊者有可能竊取金鑰。
脆弱性是如何產生的
在原始程式碼中,私鑰或助記詞是透過函數以明文形式向使用者請求的 input()。然後,這些敏感資訊:
- 輸入時未進行屏蔽(密碼或金鑰在螢幕和日誌中可見);
- 未加密或未在記憶體中保護;
- 立即將其轉換為 HDKey 物件並用於簽署交易。
這意味著私人數據可以:
- 透過螢幕檢視、記錄或利用其他軟體漏洞進行攔截;
- 以未保護的形式儲存在 RAM 中,可被繞過或轉儲;
- 因終端設備保護不足而被竊。
這種情況存在關鍵資訊外洩的風險,會導致未經授權的交易簽署和資金完全喪失控制權。
安全修復和建議
要消除此漏洞,您必須:
- 對私鑰和密碼使用遮罩輸入, 以防止從螢幕或日誌中讀取。
- 盡量縮短私有資料在記憶體中停留的時間 ,並確保在使用後將其從記憶體中刪除。
- 如果可能,請使用 硬體錢包來儲存和簽署金鑰 ,這樣密鑰就不會離開裝置。
- 取消透過控制台直接輸入私鑰,改為使用安全介面或從加密儲存載入私鑰。
- 使用加密和記憶體保護技術在操作之間儲存私有資料。
使用遮罩輸入和金鑰移除技術修復安全代碼的範例
Pythonimport getpass
from bitcoinlib.transactions import Transaction
from bitcoinlib.mnemonic import Mnemonic
from bitcoinlib.keys import HDKey
network = 'testnet'
raw_tx = input("Paste raw transaction hex: ")
t = Transaction.import_raw(raw_tx)
key_str = getpass.getpass("Enter private key or mnemonic passphrase: ")
if len(key_str.split(" ")) < 2:
hdkey = HDKey(key_str)
else:
password = getpass.getpass("Enter password []:")
seed = Mnemonic().to_seed(key_str, password)
hdkey = HDKey.from_seed(seed, network=network)
t.sign(hdkey)
t.info()
print("Raw signed transaction: ")
print(t.raw_hex())
# Очистка чувствительных данных
del key_str
del password
del seed
del hdkey
if input("Try to send transaction [y/n] ").lower() == 'y':
from bitcoinlib.services.services import Service
srv = Service(network=network)
res = srv.sendrawtransaction(t.raw())
from pprint import pprint
pprint(res)
在建議的程式碼中:
- 輸入私人資料時使用
getpass.getpass(),此功能會屏蔽輸入內容。 - 簽名完成後,所有包含私有資料的變數都會透過以下方式從記憶體中刪除
del: - 建議同時使用硬體錢包或安全儲存設備。
結論
以明文形式處理私鑰的漏洞是加密貨幣系統面臨的最嚴重安全威脅之一。處理敏感資料時發生錯誤會導致資料外洩、資金被竊以及用戶信任度下降。
採取全面的安全措施,包括掩碼輸入、最大限度地減少內存中的密鑰暴露以及使用硬件,可以顯著降低攻擊風險並確保數位資產的安全。
只有正確實施並嚴格遵守私鑰保護措施,才能確保密碼系統抵禦現代網路威脅的能力。
資料來源: 德勤+2
- https://www.deloitte.com/nl/en/services/consulting-risk/perspectives/quantum-computers-and-the-bitcoin-blockchain.html
- https://arxiv.org/html/2405.04332v1
- https://arxiv.org/html/2504.21367v1
- https://github.com/topics/private-key
- https://dl.acm.org/doi/full/10.1145/3596906
以下這篇內容全面、文筆流暢的科學文章解釋了關鍵的私鑰洩漏漏洞如何影響對比特幣加密貨幣的攻擊,這種攻擊的科學名稱,以及有關 CVE 的資訊。
比特幣私鑰洩漏嚴重漏洞:影響、攻擊分類和 CVE 狀態
介紹
比特幣是目前規模最大、應用最廣泛的加密貨幣,它是基於去中心化的區塊鏈和加密技術。其安全性依賴於私鑰,即用於確認所有權和交易權限的唯一數位簽章。然而,私鑰洩漏這項重大漏洞可能對個人用戶和整個比特幣生態系統造成災難性後果。
漏洞如何影響比特幣加密貨幣攻擊
洩漏私鑰 會讓攻擊者完全控制對應的比特幣地址。這使他們可以:
- 創建並簽署任意交易,提取資金;
- 進行未經授權的加密貨幣存取和盜竊;
- 破壞用戶和服務對區塊鏈安全系統的信任。
在多重簽章錢包中,如果所需數量的私鑰(例如 3 個私鑰中的 2 個)被洩露,就會破壞存取控制邏輯,相當於資金被竊。這種漏洞為以下攻擊提供了入口:
- 網路釣魚和社會工程 -攻擊者誘騙受害者洩漏私鑰;
- 惡意軟體 -惡意軟體會竊取使用者裝置上的金鑰;
- 軟體實現錯誤 -不安全的金鑰輸入和儲存(例如,直接輸入到控制台或日誌中);
- 重播攻擊和交易偽造攻擊 。
因此,私鑰洩漏對比特幣網路的完整性和安全性構成了根本威脅。
攻擊的科學名稱
在科學文獻和安全實踐中,基於私鑰洩漏的攻擊被稱為 私鑰 洩漏攻擊。它是威脅數位資產機密性和控制權的基本攻擊類型之一。
子類別及相關攻擊類型包括:
- 密鑰洩漏攻擊 -由於儲存或處理錯誤導致的密鑰洩漏。
- 網路釣魚攻擊 -透過欺騙手段取得金鑰。
- 基於惡意軟體的密鑰盜竊 是指惡意程式竊取密鑰的行為。
- 重播攻擊和雙花攻擊 -濫用網路上被盜金鑰。
此漏洞的 CVE 編號
私鑰洩漏漏洞這一大類漏洞沒有分配 CVE 編號, 因為它屬於系統性安全缺陷,而不是單一特定的軟體漏洞。
儘管如此:
- 由於流行庫、錢包或服務中的錯誤或漏洞導致的私鑰洩漏的特定案例都有其自身的 CVE 註冊資訊。
- 具有實際漏洞的 CVE 範例:金鑰產生問題、儲存錯誤、簽章 API 漏洞。
- 每次漏洞發現和金鑰外洩事件都可以在 CVE 資料庫中取得自己的編號。
這意味著私鑰安全是一個涉及全面安全的區域性問題,而不是一個孤立的漏洞。
結論
嚴重的私鑰洩漏漏洞會直接導致私鑰洩漏攻擊,從而破壞比特幣的安全性和信任度。在當今環境下,威脅變得越來越複雜和精密,涵蓋了社會、技術和軟體等多個面向。
識別並預防此類漏洞是加密貨幣生態系統永續發展的關鍵。嚴格的金鑰保護措施、硬體錢包的使用、用戶培訓以及對軟體解決方案進行持續的安全審計,都是維護數位資產安全的必要條件。
資料來源:
- Halborn halborn指出,私鑰被盜的七大常見方式
- “區塊鏈層攻擊的新分類”,2017 年 arXiv預印本
- 洩漏的私鑰加密駭客清單 immunebytes
- 加密貨幣錢包的安全問題——系統性綜述,ACM 比特幣生態系統中私鑰洩露這一關鍵漏洞直接導致一種在科學和實踐密碼學文獻中被稱為「 私鑰洩露攻擊」的攻擊。在這種攻擊中,攻擊者一旦獲得私鑰,便可完全控制用戶的資金,無需 所有者同意即可創建和簽署交易,從而導致加密貨幣被盜和錢包失控。此類攻擊對多重簽章錢包尤其危險,因為所需數量的金鑰外洩會破壞信任系統。
這種漏洞的影響是徹底摧毀加密貨幣系統的安全性和信任度,因為私鑰是資金所有權的唯一證明。洩漏的密鑰會導致各種攻擊:網路釣魚、惡意軟體、社會工程攻擊以及利用程式碼中的錯誤(例如,密鑰輸入或儲存不安全)。
目前,此類漏洞沒有統一的CVE編號,因為它更像是一類安全漏洞,而非單一的特定漏洞。但是,由錢包或庫中的漏洞導致的私鑰洩漏事件會登記在單獨的CVE編號中。
因此, 私鑰洩漏攻擊是比特幣面臨的最嚴峻的安全威脅之一 ,使用硬體錢包、加密技術、安全介面和用戶教育來保護私鑰對於防止此類攻擊和維護密碼系統的完整性至關重要。 halborn +3
總之,必須強調的是,比特幣私鑰產生和管理系統中的關鍵漏洞是加密貨幣生態系統安全面臨的最危險威脅之一。與secp256k1橢圓曲線階數確定錯誤或私鑰產生錯誤相關的問題會導致大量金鑰無效或可預測。這會削弱加密保護,增加金鑰碰撞的機率,並使攻擊者能夠利用這些漏洞入侵錢包。
這個漏洞實際上為私鑰洩漏攻擊打開了方便之門,攻擊者可以完全控制用戶的資金,偽造交易簽名,並在未經所有者同意的情況下提取加密貨幣。這破壞了比特幣網路的信任基礎,並使加密貨幣領域數千萬美元的資產面臨風險。
諸如 Randstorm 攻擊和與 JavaScript 庫漏洞相關的事件等歷史先例表明,這些問題的真正危險性和規模之大:數百萬個易受攻擊的錢包和巨額經濟損失。雖然目前沒有針對整個類別的單一 CVE 編號,但個別案例都會作為嚴重事件記錄在漏洞資料庫中。
維護安全需要嚴格遵守加密標準、採用經過驗證的實作方式、使用硬體錢包以及完善的私鑰保護機制。這是保護數位資產並維護整個加密貨幣基礎設施穩定性的唯一途徑。
因此,妥善產生和安全儲存私鑰是現代密碼學的基本任務,也是保護比特幣免受現代威脅和攻擊的組成部分。
這行程式碼存在加密漏洞,會導致金鑰和私鑰外洩:
Pythonprint("\nPrivate key: \n%s" % hdkey.wif_private())
私鑰以明文形式顯示在螢幕(控制台)上,這存在嚴重的安全隱患。任何能夠存取控制台或其日誌的人都可以獲得私鑰,從而完全控制錢包和資金。
正確的做法是 永遠不要以明文形式顯示私鑰 ,而是將它們儲存在安全儲存裝置中或使用硬體錢包,避免洩露私人資料。
以下這篇研究論文詳細介紹了 BitcoinLib 範例程式碼中出現的嚴重私鑰洩漏漏洞,並描述了一種安全的修復方法,以及可以消除此漏洞的範例程式碼。
對 BitcoinLib Python 私鑰洩漏漏洞及其安全修復方案的分析
介紹
私鑰是驗證您在比特幣網路中資金所有權的唯一工具。安全地儲存和管理這些金鑰對於使用者和整個加密系統的安全至關重要。任何私鑰的洩漏或未經授權的披露都會導致帳戶立即被盜,資金被竊取。
在實際應用中,漏洞往往並非源自於加密演算法本身的缺陷,而是源自於程式碼中的實作錯誤和對私有資料的不當處理。例如,在本文介紹的這段使用 BitcoinLib 函式庫的 Python 腳本中,以明文形式輸出私鑰就造成了嚴重的安全漏洞。
脆弱性是如何產生的
主要漏洞在於這一行程式碼:
Pythonprint("\nPrivate key: \n%s" % hdkey.wif_private())
此處,WIF(錢包匯入格式)格式的私鑰將以明文形式輸出至控制台。其後果為:
- 私鑰將暴露給未經授權的人員查看。
- 它有可能被保存在日誌、螢幕截圖中,或被轉移給攻擊者。
- 錢包的隱私和安全幾乎完全受到威脅。
這種秘密管理漏洞違反了密碼安全的基本原則——公開洩漏私鑰或其他秘密資料是不可接受的。
極佳且安全的修復方法
為消除此漏洞,必須禁止以明文形式輸出私鑰。密鑰應僅以加密形式儲存在記憶體中,或透過安全介面使用。
使用以下方法也很有用:
- 不要將私鑰輸出到控制台或日誌中。
- 提供安全的方式來備份您的金鑰(例如,以加密檔案或硬體錢包的形式)。
- 必要時使用遮罩輸入。
- 控制記憶體中私有資料的生命週期,最大限度地縮短其生命週期。
一個安全代碼修復的範例
Pythonfrom bitcoinlib.mnemonic import Mnemonic
from bitcoinlib.keys import HDKey
NETWORK = 'testnet'
KEY_STRENGTH = 128
# Генерация мнемонической фразы без вывода приватных ключей
words = Mnemonic().generate(KEY_STRENGTH)
print("A Mnemonic passphrase has been generated. Please write down and store carefully: \n%s" % words)
password = input("\nEnter a password if you would like to protect passphrase []: ")
seed = Mnemonic().to_seed(words, password)
hdkey = HDKey.from_seed(seed, network=NETWORK)
# Приватный ключ не выводится
# print("\nPrivate key: \n%s" % hdkey.wif_private())
public_account_wif = hdkey.public_master_multisig()
print("Public account key to share with other cosigners for a multisig BIP45 wallet: \n%s" % public_account_wif.wif())
# Опционально: экспорт приватного ключа в зашифрованный файл (пример, зависит от реализации)
# hdkey.wif_private() можно сохранить в безопасности, без вывода в консоль
結論
私鑰公開匯出所帶來的漏洞是加密錢包和應用程式實作中最危險、最常見的錯誤之一。解決之道在於嚴格禁止洩漏私鑰數據,並實施安全的金鑰管理方法。
只有安全儲存、受控處理和最大限度減少私鑰洩漏才能保護加密貨幣資產免遭盜竊和攻擊。實施安全協議和實踐是開發人員的基本任務,它能確保使用者信任和密碼系統的穩定性。
總之,需要指出的是,比特幣私鑰產生和管理中的一個關鍵漏洞對密碼系統的安全性構成根本威脅。橢圓曲線secp256k1參數的錯誤定義,特別是點集順序的錯誤賦值,會導致產生的私鑰超出允許範圍。這會增加金鑰碰撞的可能性,降低金鑰的加密強度,使其容易受到復原攻擊。
基於此漏洞的攻擊在科學上被稱為 私鑰 洩漏攻擊。在這種情況下,攻擊者有機會獲取私鑰,從而完全控制用戶的資金,使其能夠創建虛假交易、提取加密貨幣並破壞系統完整性。
歷史上的案例,例如 BitcoinJS 中的 Randstorm 漏洞,已經證實了此類問題的真正危險性,並導致數十億美元的錢包損失。雖然目前還沒有一個 CVE 編號可以涵蓋所有類型的金鑰洩漏漏洞,但已實施解決方案中的特定漏洞都會被記錄在 CVE 資料庫中,並帶有唯一的編號。
確保安全需要嚴格遵守加密標準,使用經過驗證的庫和硬體錢包,保護私鑰不被洩露,並嚴格管理其生命週期。
因此,保護私鑰是比特幣穩定性的基石,確保了其安全性和用戶信任。
資料來源:
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
- https://habr.com/ru/articles/430240/
- https://opennet.ru/56670/
- https://www.itsec.ru/articles/upravlenie-uyazvimostyami-v-kriptokoshelkah
- https://top-technologies.ru/ru/article/view?id=37634
- https://forklog.com/news/eksperty-ugroza-kvantovoj-ataki-na-kriptovalyuty-preuvelichena
- https://cyberleninka.ru/article/n/metodika-analiza-dannyh-v-blokcheyn-sisteme-bitcoin
- https://coinsutra.com/ru/bitcoin-private-key/
資料來源及補充資料:
- 對 BitcoinLib GitHub 上的私鑰漏洞進行分析並提出安全實作建議 (github+1)
- ACM金鑰安全的密碼學基礎
- 確保Veracode+1加密錢包安全的實用建議
- 比特幣加密貨幣中存在一個嚴重的私鑰洩漏漏洞,攻擊者可以利用該漏洞完全控制用戶資金,偽造交易簽名並順利提取加密貨幣。這種攻擊的科學名稱是 私鑰 外洩攻擊。由於私鑰是證明比特幣所有權的唯一途徑,因此這是一個根本性的安全威脅。
- 這種攻擊的手段多種多樣:釣魚郵件和網站、惡意軟體、金鑰儲存安全漏洞、金鑰產生錯誤、社會工程攻擊以及雲端儲存伺服器入侵。所有這些方法最終都會導致私鑰落入攻擊者手中。
- 這次攻擊導致加密貨幣被盜,錢包失去控制權,對用戶和服務造成重大的經濟和聲譽損失。
- 關於此漏洞的 CVE 編號: 由於「私鑰洩漏」涵蓋範圍 很廣,並非指某個特定的技術漏洞,因此並沒有一個通用的 CVE 編號來指稱這個類別本身。但是,因實現錯誤或軟體缺陷而導致的私鑰洩漏的具體案例都會被賦予各自的 CVE 編號。
- 因此,私鑰洩漏攻擊是比特幣面臨的最危險的威脅之一,需要採取全面的安全措施:使用硬體錢包、安全儲存、雙重認證、用戶培訓和持續的系統安全審計。
- 資料來源:
- 私鑰被盜的七大常見 方式
- 區塊鏈層攻擊的新分類 arXiv
- 洩漏的私鑰加密駭客清單 immunebytes
- 加密貨幣錢包的安全問題—系統性 綜述
- https://www.halborn.com/blog/post/top-7-ways-your-private-keys-get-hacked
- https://arxiv.org/html/2404.18090v1
- https://www.kaspersky.com/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/49943/
- https://immunebytes.com/blog/list-of-compromised-private-key-crypto-hacks/
- https://advisense.com/2025/03/13/cryptocurrency-and-blockchain-risks/
- https://dl.acm.org/doi/full/10.1145/3596906
- https://crystalintelligence.com/investigations/the-10-biggest-crypto-hacks-in-history/
- https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
- https://www.sciencedirect.com/science/article/pii/S2590005621000138
- https://github.com/Korben00/bitcoin-recovery
- https://www.veracode.com/blog/python-crypto-library-updated-to-steal-private-keys/
- https://checkmarx.com/blog/crypto-stealing-code-lurking-in-python-package-dependencies/
- https://attacksafe.ru/pybitcointools/
- https://attacksafe.ru/private-keys-attacks/
- https://github.com/topics/private-key
- http://codesandbox.io/p/github/100darr/Plutus
- https://dl.acm.org/doi/full/10.1145/3596906
因此,正是這一行程式碼存在洩漏私鑰的嚴重漏洞。
來源: pikabu+3
- https://pikabu.ru/story/private_key_debug_nekorrektnaya_generatsiya_privatnyikh_klyuchey_sistemnyie_uyazvimosti_bitkoina_chast_1_12755765
- https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/
- https://habr.com/ru/articles/430240/
- https://opennet.ru/56670/
- https://www.itsec.ru/articles/upravlenie-uyazvimostyami-v-kriptokoshelkah
- https://top-technologies.ru/ru/article/view?id=37634
- https://forklog.com/news/eksperty-ugroza-kvantovoj-ataki-na-kriptovalyuty-preuvelichena
- https://cyberleninka.ru/article/n/metodika-analiza-dannyh-v-blokcheyn-sisteme-bitcoin
- https://coinsutra.com/ru/bitcoin-private-key/
- https://www.halborn.com/blog/post/top-7-ways-your-private-keys-get-hacked
- https://arxiv.org/html/2404.18090v1
- https://www.kaspersky.com/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/49943/
- https://immunebytes.com/blog/list-of-compromised-private-key-crypto-hacks/
- https://advisense.com/2025/03/13/cryptocurrency-and-blockchain-risks/
- https://dl.acm.org/doi/full/10.1145/3596906
- https://crystalintelligence.com/investigations/the-10-biggest-crypto-hacks-in-history/
- https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
- https://www.sciencedirect.com/science/article/pii/S2590005621000138