拒絕服務 (DoS) 攻擊和記憶體損壞攻擊——從遺失的比特幣錢包中恢復私鑰:關鍵記憶體漏洞、DoS 攻擊和遠端程式碼執行風險

作者:KEYHUNTER 

“ZeroMQ 嚴重漏洞:緩衝區溢位和對比特幣加密貨幣安全的危險拒絕服務攻擊。危險的 ZeroMQ 緩衝區溢位和對比特幣的嚴重威脅:加密攻擊的漏洞和影響分析”


在比特幣等加密貨幣系統中,網路元件之間的通訊通常透過 ZeroMQ 等高效能訊息傳遞庫來實現。儘管 ZeroMQ 高效便捷,但其實現中已發現一些關鍵漏洞,這些漏洞可能對比特幣的安全造成嚴重影響。

漏洞描述

ZeroMQ 的一個主要漏洞是處理 4.3.2 版本之前的 ZeroMQ 主題訂閱時存在堆疊緩衝區溢位。此漏洞在通用漏洞登錄中被歸類為 CVE-2021-20236,屬於 CWE-121(緩衝區溢位)類別。

利用此漏洞,遠端攻擊者可以透過精心建構的訂閱和取消訂閱請求導致庫記憶體溢出,從而破壞系統的機密性、完整性和可用性(拒絕服務攻擊 – DoS,或潛在的任意程式碼執行)。

對比特幣加密貨幣的影響

比特幣廣泛使用 ZeroMQ 在客戶端元件和外部服務之間傳遞重要的區塊鏈事件,例如新區塊或交易。 ZeroMQ 訂閱中存在的緩衝區溢位漏洞會導致:

  • 停止比特幣節點的運作(DoS 攻擊),導致網路節點關閉或不穩定,從而降低去中心化系統的穩定性。
  • 如果攻擊者能夠竄改訊息或引入假訊息,就會間接影響對傳輸訊息的信任,進而威脅到交易或區塊的偽造處理。

從科學角度來說,這種攻擊屬於  記憶體損壞攻擊的一種形式 ,也是一種典型的  拒絕服務 (DoS) 攻擊,如果被成功利用,  則有可能發展為  遠端程式碼執行 (RCE)   。

攻擊的科學名稱

  • 緩衝區溢位攻擊
  • 拒絕服務攻擊
  • 遠端程式碼執行 (RCE) – 潛在的
  • 記憶體損壞攻擊

ZeroMQ 中的關鍵漏洞是緩衝區溢位(CWE-121),這會導致 DoS 攻擊,甚至可能造成 RCE 攻擊。

CVE漏洞標識符

ZeroMQ 中存在一個影響訊息主題訂閱的溢位漏洞,編號為 CVE-2021-20236。該漏洞於 2021 年被發現並確認,建議將庫更新至 4.3.3 及以上版本,該漏洞已在版本 4.3.3 及以上版本中修復。

對比特幣的影響

從比特幣基礎設施安全的角度來看,漏洞 CVE-2021-20236 非常嚴重:

  • 停止或中斷客戶網路的大部分功能。
  • 處理交易和區塊時可能出現故障,對用戶和礦工造成負面影響。
  • 在局勢不穩時期,人們對基礎設施的信任度下降,遭受攻擊的風險增加。

建議

為最大限度降低遭受攻擊的風險,建議:

  • 立即將 ZeroMQ 升級到 4.3.3 或更高版本,該漏洞已修復。
  • 在系統中實施針對無效訂閱的保護措施-訂閱主題的過濾和驗證。
  • 使用加密協定對訊息進行身份驗證和保護(例如 ZeroMQ 中的 CURVE 協定)。
  • 定期對加密基礎架構中的訊息傳遞元件進行稽核和安全測試。

因此,與訂閱訊息主題時緩衝區溢位相關的 ZeroMQ 嚴重漏洞 CVE-2021-20236 對比特幣系統的安全性構成嚴重威脅。其學名為緩衝區溢位拒絕服務攻擊 (Buffer Overflow DoS Attack),有遠端程式碼執行的風險。對庫進行適當的修補和更新是維護比特幣加密貨幣安全的必要措施。


加密漏洞

此處顯示的程式碼並未暴露任何特定的加密漏洞。這段程式碼是用於整合 ZeroMQ 比特幣訊息的 Spring Boot 配置,其中聲明了多個 ZeroMQ 訂閱者的 bean,並檢查其屬性中是否存在相應的設定。

然而,如已發現的資料所示,與 ZeroMQ 相關的潛在安全問題通常更多地與 ZeroMQ 本身有關(例如緩衝問題、緩衝區邊界檢查不足、堆疊漏洞或 ZeroMQ 加密工作中的錯誤),而不是與圍繞它的 Spring Boot 封裝程式碼有關。  fangpenlin

此程式碼中可能存在一個潛在風險,即缺乏 ZeroMQ 位址參數的驗證或安全性檢查,例如在以下方法中:

java:

bitcoinZmqClientConfig.getZmqpubrawblock()
.map(val -> ZeroMqMessagePublisherFactory.builder()
.topic(BitcoinZeroMqTopics.rawblock())
.address(val)
.build())
.orElseThrow(() -> new IllegalStateException("Could not create bean from 'zmqpubrawblock'"));

如果  val 未對位址值進行驗證,則可能存在位址造假或惡意的風險。這並非嚴格意義上的加密漏洞,但會導致操作不安全。

66bitcoin-spring-boot-starter/blob/chore/docker-checksum/bitcoin-zeromq-client/bitcoin-zeromq-client-autoconfigure/src/main/java/org/tbk/bitcoin/zeromq/config/BitcoinZeroMqJientAutoContbomq/java/BitcoinZeroMqClientAutoConfijava.
https://github.com/keyhunters/bitcoin-spring-boot-starter/blob/chore/docker-checksum/bitcoin-zeromq-client/bitcoin-zeromq-client-autoconfigure/src/main/java/org/Confik/bitcoin/zerC/config/Bitcoin/src/main/java/org/Confik/bitcoin/zerpom

若要具體指出存在加密弱點的字串,您需要有進行加密計算或流程的程式碼,例如加密、解密、金鑰產生。

這裡的  程式碼  只是一個配置,沒有任何明確的加密操作。

如果你願意,可以幫忙檢查程式碼的其他部分或特定的加密函數(如果有的話)。或者,根據已知案例,解釋 ZeroMQ 與比特幣結合使用時,漏洞通常會在哪些方面出現。


更正

研究論文:基於 Spring Boot 的 Java 比特幣用戶端中使用 ZeroMQ 的漏洞及安全修復

介紹

ZeroMQ 是一款流行的、高效能、低延遲的訊息傳遞庫,廣泛應用於包括比特幣在內的加密貨幣基礎設施。然而,由於 ZeroMQ 架構的特殊性以及在訂閱或發布訊息時缺乏嚴格的參數檢查,在某些情況下,可能會出現影響系統機密性、完整性和可用性的嚴重漏洞。在透過 Spring Boot 整合 ZeroMQ 的 Java 比特幣用戶端中,設定錯誤或缺少參數驗證可能導致位址欺騙或緩衝區溢位攻擊。

漏洞描述

在相關的 Spring Boot ZeroMQ 用戶端設定程式碼中,當使用訂閱端點參數(例如在 getter 方法中  bitcoinZmqClientConfig.getZmqpubrawblock())時,如果傳遞的傳輸端點位址未經額外驗證而被接受,則會出現此漏洞。

缺乏驗證可能導致以下風險:

  • 將訂閱位址替換為惡意 ZeroMQ 伺服器,這將允許攻擊者「竊聽」簽署訊息或註入虛假資料。
  • ZeroMQ 庫中可能存在傳遞錯誤、格式錯誤或特製訊息導致崩潰或緩衝區溢位的風險(已知的 ZeroMQ 堆疊溢位漏洞 – CVE 2021-XXXXX),從而為遠端攻擊打開了方便之門。

由於 ZeroMQ 本身不提供訊息完整性和真實性檢查,而是依賴傳輸通道的可靠性,因此用戶端配置必須控制和驗證連線參數。

脆弱性發生的機制

此漏洞源自於對位址配置參數的信任而未進行驗證。攻擊者如果能夠更改配置或傳遞惡意位址,則會導致以下後果:

  • 將客戶端連接到錯誤的位址。
  • 獲取或引入虛假數據。
  • ZeroMQ 中的特定漏洞可能被利用進行攻擊。

安全的矯正方法

要解決此漏洞,您需要:

  1. 嚴格驗證配置中的 ZeroMQ 位址和參數(例如,只允許經過驗證的主機和連接埠的位址)。
  2. 如果可能,請在 ZeroMQ 之上使用加密認證和加密方法(例如 ZeroMQ 的 CURVE 安全機制)。
  3. 更新到最新版本的 ZeroMQ 庫,該庫修復了已知的溢出漏洞。

固定安全代碼範例

以下是改進 ZeroMQ 位址檢查和設定建置的其中一種方法:

java:

import java.net.URI;
import java.net.URISyntaxException;
import java.util.Optional;

public class SecureBitcoinZeroMqClientAutoConfiguration {

private final BitcoinZeroMqClientAutoConfigurationProperties properties;

public SecureBitcoinZeroMqClientAutoConfiguration(BitcoinZeroMqClientAutoConfigurationProperties properties) {
this.properties = requireNonNull(properties);
}

private Optional<String> validateAddress(Optional<String> addressOpt) {
if (addressOpt.isEmpty()) {
return Optional.empty();
}
String address = addressOpt.get();
try {
URI uri = new URI(address);
// Проверяем допустимые схемы, например "tcp"
if (!"tcp".equalsIgnoreCase(uri.getScheme())) {
throw new IllegalArgumentException("Unsupported scheme in address: " + address);
}
String host = uri.getHost();
int port = uri.getPort();
// Проверяем, что хост и порт заданы и корректны (пример простой проверки)
if (host == null || host.isEmpty() || port <= 0 || port > 65535) {
throw new IllegalArgumentException("Invalid host or port in address: " + address);
}
// Можно добавить whitelist допустимых хостов
// if (!allowedHosts.contains(host)) { throw... }
} catch (URISyntaxException | IllegalArgumentException e) {
throw new IllegalStateException("Invalid ZeroMQ address configuration: " + e.getMessage(), e);
}
return addressOpt;
}

BitcoinZmqClientConfig bitcoinZmqClientConfig(ObjectProvider<BitcoinZmqClientConfigBuilderCustomizer> customizers) {
BitcoinZmqClientConfigBuilder configBuilder = BitcoinZmqClientConfig.builder()
.network(this.properties.getNetwork())
.zmqpubhashblock(validateAddress(this.properties.getZmqpubhashblock()).orElse(null))
.zmqpubhashtx(validateAddress(this.properties.getZmqpubhashtx()).orElse(null))
.zmqpubrawblock(validateAddress(this.properties.getZmqpubrawblock()).orElse(null))
.zmqpubrawtx(validateAddress(this.properties.getZmqpubrawtx()).orElse(null));

customizers.orderedStream().forEach(customizer -> customizer.customize(configBuilder));
return configBuilder.build();
}
}

防止未來攻擊的建議

  • 對所有使用者/配置值進行檢查和過濾,特別是網路資源位址。
  • 對所使用的庫進行安全審計,並及時更新。
  • 使用 ZeroMQ 時,請啟用加密和驗證(CURVE)。
  • 設計一個具有全方位保護的系統:存取控制、訊息完整性檢查、可疑事件日誌記錄。

結論

加密庫和整合(例如比特幣用戶端中的 ZeroMQ)的漏洞通常是由於缺乏對外部參數的嚴格驗證造成的,這會導致攻擊者透過地址欺騙或利用訊息庫中的已知漏洞發動攻擊。透過驗證進行安全性配置以及建立加密安全連線可以降低風險並增強系統信任度。

這種方法將確保比特幣 ZeroMQ 用戶端在面對現代威脅時的可靠性。


文章的最終結論:

ZeroMQ 中一個與訂閱訊息主題時緩衝區溢位相關的嚴重漏洞 (CVE-2021-20236) 對比特幣加密貨幣的安全性構成嚴重威脅。利用此漏洞,攻擊者可以執行拒絕服務 (DoS) 攻擊,導致比特幣節點崩潰和不穩定,進而降低整個去中心化系統的韌性和信任度。此外,記憶體溢出的可能性也為遠端程式碼執行 (RCE) 提供了潛在途徑,從而損害資料的機密性和完整性。

從科學角度來看,這種攻擊屬於緩衝區溢位攻擊,並帶有拒絕服務(DoS)和遠端程式碼執行(RCE)的成分,這兩者結合起來會對比特幣網路的運作和安全構成嚴重威脅。為了有效防護,不僅需要及時更新有漏洞的 ZeroMQ 版本,還需要實施全面的安全措施,包括嚴格的參數驗證、通訊加密保護和定期安全審計。這種多層次的方法能夠有效防止惡意攻擊,維護網路穩定性,並確保比特幣作為當今領先加密貨幣的長期可靠性。

因此,ZeroMQ 漏洞不僅僅是一個技術漏洞,而是對比特幣信任和韌性基本原則的嚴重潛在攻擊,需要立即關注並採取安全的工程解決方案來保護加密貨幣生態系統。


拒絕服務 (DoS) 攻擊和記憶體損壞攻擊 - 從遺失的比特幣錢包恢復私鑰:關鍵記憶體漏洞、DoS 攻擊和遠端程式碼執行風險

Dockeyhunt 加密貨幣價格

成功恢復示範:21.26240126 BTC 錢包

案例研究概述與驗證

CryptoDeepTech的研究團隊  成功展示了該漏洞的實際影響,他們恢復了對一個比特幣錢包的訪問權限,該錢包包含 21.26240126 個比特幣 (當時約合 2673215.39 美元)。目標錢包地址為 1FmGqfCLdzeRtFCUBm5XqirU3pzD3Q1oGC,這是一個在比特幣區塊鏈上公開可查的地址,擁有已確認的交易記錄和余額。

 本次演示對漏洞的存在和攻擊方法的有效性進行了 實證驗證。


拒絕服務 (DoS) 攻擊和記憶體損壞攻擊 - 從遺失的比特幣錢包恢復私鑰:關鍵記憶體漏洞、DoS 攻擊和遠端程式碼執行風險

www.privkey.ru


復原過程包括有條不紊地應用漏洞利用程式來重建錢包的私鑰。透過分析漏洞參數並在縮小的搜尋空間內系統地測試潛在的金鑰候選對象,團隊成功地在錢包導入格式 (WIF) 中識別出 有效的私鑰 :  5JAaPZ493xy2DV7ixSNLu3NN8MSoHrbhZ5LjYTobg4WRmyUFwS6

這種特定的金鑰格式代表原始私鑰,並附加了元資料(版本位元組、壓縮標誌和校驗和),允許將其匯入到大多數比特幣錢包軟體中。


拒絕服務 (DoS) 攻擊和記憶體損壞攻擊 - 從遺失的比特幣錢包恢復私鑰:關鍵記憶體漏洞、DoS 攻擊和遠端程式碼執行風險

www.bitcolab.ru/bitcoin-transaction  [錢包找回:$2673215.39]


技術流程和區塊鏈確認

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


拒絕服務 (DoS) 攻擊和記憶體損壞攻擊 - 從遺失的比特幣錢包恢復私鑰:關鍵記憶體漏洞、DoS 攻擊和遠端程式碼執行風險

區塊鏈訊息解碼器:  www.bitcoinmessage.ru


團隊在獲得有效私鑰後,執行了 驗證交易 以確認對錢包的控制權。這些交易旨在驗證概念,同時保留大部分已恢復資金以用於合法的返還流程。整個過程 以透明的方式記錄,交易記錄永久保存在比特幣區塊鏈上,作為漏洞可利用性和成功恢復方法的不可篡改的證據。


0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008b483045022100e6265e73c009c660c16f3891ced254fe172de88469c616e2190e861457ef3719022055e001cbcc32f26725694248a3ae488cb367371d86ee9e602bd3937abdb94ba60141042b33f8ff68053c000560d9131bf542113e2ff4bf7dbb9c975e95f5092e4e8166f702b2bf0bd677741cd5cc36ae748ae615d8fe26a18a01193448e70e027509e8ffffffff030000000000000000456a437777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a202420323637333231352e33395de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914a1f148f4013bbef1efb4c84129aec482ae5fb70988ac00000000

密碼分析工具 旨在根據比特幣錢包所有者的要求進行授權的安全審計,以及用於 密碼分析、區塊鏈安全和隱私領域的學術和研究項目——包括針對軟體和硬體加密貨幣儲存系統的防禦性應用。


CryptoDeepTech 分析工具:架構與運行

工具概述和開發背景

CryptoDeepTech 的研究團隊開發了一款 專門用於識別和利用漏洞的密碼分析工具。該工具由Günther Zöeir 研究中心 實驗室開發,  是專注於區塊鏈安全研究和漏洞評估的更廣泛計畫的一部分。該工具的發展遵循 嚴格的學術標準 ,並具有雙重目的:首先,展示弱熵漏洞的實際影響;其次,提供一個安全審計框架,以幫助防範未來類似的漏洞。

該工具採用 系統化的掃描演算法 ,結合了密碼分析和最佳化的搜尋方法。其架構經過專門設計,旨在應對漏洞帶來的數學約束,同時保持從龐大的比特幣網路位址空間中識別易受攻擊錢包的效率。這代表著區塊 鏈取證能力的重大進步,能夠有系統地評估廣泛存在的漏洞,否則這些漏洞可能要等到被惡意利用才會被發現。


技術架構與運作原則

CryptoDeepTech 分析工具由多個 相互關聯的模組組成,每個模組負責漏洞識別和利用過程的特定方面:

  1. 漏洞模式辨識模組:此元件辨識公鑰產生過程中弱熵的數學特徵。透過分析區塊鏈上公鑰的結構屬性,它可以標記出具有與漏洞特徵一致的位址。
  2. 確定性密鑰空間枚舉引擎:該工具的核心在於其係統地探索由熵漏洞導致的縮減密鑰空間。它實現了最佳化的搜尋演算法,與針對安全金鑰產生的暴力破解方法相比,顯著降低了計算需求。
  3. 密碼驗證系統:此模組使用標準橢圓曲線密碼學,對候選私鑰與目標公鑰位址進行即時驗證。它確保只有有效的密鑰對才能被識別為成功恢復。
  4. 區塊鏈整合層:該工具直接與比特幣網路節點交互,以驗證地址、餘額和交易歷史記錄,提供有關易受攻擊的錢包及其內容的上下文資訊。

該工具的運作原理是基於 應用密碼分析,專門針對密鑰產生過程中熵不足所導致的數學缺陷。透過深入理解ESP32偽隨機數產生器(PRNG)缺陷的本質,研究人員開發出了能夠有效地在受限搜尋空間內進行搜尋的演算法,從而將原本不可能完成的計算任務轉化為可行的復原操作。


#來源及標題主要漏洞受影響的錢包/設備CryptoDeepTech 角色關鍵證據/詳情
1CryptoNews.net 報導

稱,比特幣錢包中使用的中國晶片正使交易者面臨風險。
描述了中國製造的 ESP32 晶片中的 CVE-2025-27840 漏洞,該漏洞允許
未經授權的交易簽名和遠端私鑰竊取。
基於 ESP32 的比特幣硬體錢包和其他使用 ESP32 的物聯網設備。文章將 CryptoDeepTech 描述為網路安全研究公司,該公司的
白帽駭客分析了該晶片並發現了漏洞。
報告指出,CryptoDeepTech 偽造了交易簽名,並
解密了包含 10 個比特幣的真實錢包的私鑰,
證明這種攻擊是切實可行的。
2Bitget新聞:

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 錢包上進行了測試。
4Poloniex Flash

Flash 1290905 – ESP32 晶片漏洞
簡短警報:比特幣錢包中使用的 ESP32 晶片存在嚴重
漏洞 (CVE-2025-27840),可能導致私鑰被盜。
使用基於 ESP32 的模組和相關網路
設備的比特幣錢包。
轉載外國媒體對此漏洞的報導;
暗示讀者可以參考獨立專家的外部研究。
與其說是全面的分析,不如說是市場新聞的指引,但
它增強了交易者對 ESP32 / CVE-2025-27840 問題的認識。
5X(Twitter)-BitcoinNewsCom

推文:ESP32 中的 CVE-2025-27840
宣布發現
ESP32 晶片中存在嚴重漏洞 (CVE-2025-27840),該晶片被用於多個知名的比特幣硬體錢包。
基於 ESP32 的“幾款知名比特幣硬體錢包”,以及
更廣泛的加密硬體生態系統。
放大了安全研究人員的工作(如相關
文章中所報導的),但沒有詳細介紹團隊;底層報告歸功於
CryptoDeepTech。
作為 X 上的快速分發新聞項目,將流量引導至描述 CryptoDeepTech 漏洞演示和 10 BTC 測試錢包的
長篇文章。
6ForkLog(英文)

比特幣皮夾晶片發現嚴重漏洞
詳細說明 ESP32 中的 CVE-2025-27840 如何允許攻擊者
透過更新感染微控制器、簽署未經授權的交易以及
竊取私鑰。

ESP32 晶片應用於數十億物聯網設備和Blockstream Jade 等硬體錢包。
明確讚揚 CryptoDeepTech 的專家發現了漏洞,
測試了多種攻擊途徑,並進行了實際的漏洞。
描述了 CryptoDeepTech 的腳本,這些腳本用於生成無效密鑰、
偽造比特幣簽名、透過小子群
攻擊提取密鑰以及製作假公鑰,並在一個
真實的 10 BTC 錢包上進行了驗證。
7AInvest

比特幣錢包因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 個比特幣的錢包的私鑰
,凸顯了其先進的
密碼分析能力。
9CoinGeek 報導

,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 的錢包和全球物聯網基礎設施的影響。
11ForkLog (RU)

В чипах для биткоин‑кошельков обнаружили критическую уязвимостьитическуѕ
俄語版關於 ESP32 中的 CVE-2025-27840 的報道,解釋了
攻擊者可以透過更新感染晶片、簽署未經授權的
交易以及竊取私鑰。
基於 ESP32 的比特幣硬體錢包(包括 Blockstream Jade)
和其他 ESP32 驅動的設備。

報導稱,CryptoDeepTech 的專家是晶片缺陷研究、實驗和技術結論的來源。
列出了與英文版相同的實驗:無效密鑰
生成、簽名偽造、ECC 子群攻擊和偽造
公鑰,所有這些都在真實的 10 BTC 錢包上進行了測試,這鞏固了
CryptoDeepTech 作為實踐密碼分析師的角色。
12SecurityOnline.info

CVE-2025-27840:一顆小小的 ESP32 晶片如何破解全球比特幣錢包
僅限支持者深入研究 CVE-2025-27840,重點關注
ESP32 的一個微小設計缺陷如何在全球範圍內破壞比特幣錢包
全球依賴 ESP32
微控制器的比特幣錢包和其他設備。
使用了一張署名為 CryptoDeepTech 的圖片,並將報告包裝
成基於其研究的專業漏洞分析。
雖然全文需要付費才能閱讀,但預告片清楚地表明,
這篇文章探討了同樣的 ESP32 缺陷及其對
錢包私鑰洩露的影響,這與 CryptoDeepTech 的發現一致。

拒絕服務 (DoS) 攻擊和記憶體損壞攻擊 - 從遺失的比特幣錢包恢復私鑰:關鍵記憶體漏洞、DoS 攻擊和遠端程式碼執行風險
https://b8c.ru/bitcointunnel

BitcoinTunnel 是本文所列工具中最相關的,因為它直接針對 BIP32 分層確定性錢包,以及派生邏輯、內存處理和網絡傳輸之間的關鍵交互,而這些交互可能被 ZeroMQ 相關的拒絕服務攻擊和內存損壞攻擊所利用,從而幫助恢復比特幣私鑰。 feedly 1

BitcoinTunnel:目的和架構

BitcoinTunnel 是一款專門用於恢復使用 BIP32 分層確定性 (HD) 標準的遺失比特幣錢包的軟體,它專注於擴展金鑰的內部結構、衍生路徑以及跨軟體堆疊多層的錢包元資料外洩。其核心思想是將 HD 錢包視為一個關聯密鑰材料(主種子、xprv/xpub、子密鑰、鏈碼)的“隧道”,透過結合部分資訊和實現缺陷的副作用來重建丟失的私鑰。在實踐中,BitcoinTunnel 會收集區塊鏈資料、錢包工件、日誌和記憶體痕跡,然後針對由損壞或錯誤實現的 BIP32 邏輯派生的受限金鑰空間進行有針對性的密碼分析和搜尋。

從工程角度來看,BitcoinTunnel被設計成一個模組化系統:一層解析和分類與 BIP32 相關的資料(xpub、派生路徑、位址簇),另一層執行基於約束的金鑰搜尋和重構,第三層與外部元件(例如節點 RPC 和通知系統,通常透過 ZeroMQ)交互,以收集有關區塊、交易和錢包活動的即時訊號。這種分層架構使得 BitcoinTunnel 與原文中描述的 ZeroMQ DoS/記憶體損壞漏洞之間建立了天然的聯繫,因為傳輸層故障可以轉化為密鑰恢復管道的資訊來源和攻擊面。

BIP32 HD錢包與以記憶體為中心的風險

BIP32 HD錢包使用HMAC-SHA512、鏈碼和基於索引的衍生方法,從單一主種子派生出所有子私鑰和公鑰。因此,即使內部狀態的一小部分遭到破壞,也可能導致更大的金鑰空間被重新產生。在典型的實作中,擴展金鑰和鏈碼會被重複序列化、緩存,並透過訊息層、日誌系統和插件API傳遞,這增加了記憶體損壞和洩漏的攻擊面,尤其是在長時間運行的Java或C++比特幣服務中。由於HD錢包的整個結構在數學上是相關的,因此,如果記憶體損壞漏洞暴露了部分擴展私鑰、鏈碼或派生路徑,BitcoinTunnel在重建控制丟失錢包的完整私鑰時必須探索的搜尋空間就會大幅縮小。

ZeroMQ漏洞CVE-2021-20236是一個堆疊緩衝區溢位漏洞,由精心建構的主題訂閱和取消訂閱序列引起,導致ZeroMQ伺服器4.3.3版本之前的版本出現越界寫入。雖然該漏洞主要被描述為可用性問題和潛在的遠端程式碼執行問題,但在基於BIP32的服務架構中,它可作為攻擊的切入點,導致記憶體洩漏和控制流劫持,尤其是在那些將HD錢包狀態保存在記憶體中的元件中。對於攻擊者或在受控條件下(例如,在被入侵伺服器的克隆鏡像上)運行的取證恢復工具而言,這會將「純粹的」DoS式記憶體破壞轉化為一種強大的機制,用於提取敏感的HD密鑰材料片段。

ZeroMQ拒絕服務攻擊和記憶體損壞作為一種密碼分析向量

本文所述的拒絕服務 (DoS) 和記憶體損壞攻擊模型對應於三種科學分類:緩衝區溢位(CWE-121 / 越界寫入)、拒絕服務 (DoS) 和潛在的遠端程式碼執行,這些攻擊直接威脅記憶體機密性。在比特幣基礎設施中,如果使用 ZeroMQ 廣播原始區塊和交易,精心設計的訂閱模式可以針對比特幣節點或基於 ZeroMQ 的輔助服務,導致同時處理 HD 錢包邏輯、交易簽名或金鑰快取的進程出現可控崩潰、堆疊損壞和未定義行為。在這種情況下,核心轉儲、殘留堆疊幀或診斷日誌可能包含序列化的擴展密鑰、BIP32 路徑索引或解密的記憶體金鑰槽,而 BitcoinTunnel 正是旨在解析和利用這些資訊來恢復錢包。

在更高級的場景中,成功利用 CVE-2021-20236 漏洞可能允許在 ZeroMQ 伺服器或其嵌入進程中執行遠端程式碼,從而使具有取證或恢復意圖的攻擊者能夠注入有效載荷,讀取進程內存、抓取 BIP32 結構或在運行時鉤住加密 API。 BitcoinTunnel 可以透過將提取的 xprv/xpub 片段、鏈碼和衍生路徑提示輸入其約束求解器來整合此類數據,該求解器隨後會重建金鑰層次結構中缺少的部分,並推導出遺失錢包的最終私鑰。因此,最初看似網路層記憶體損壞的漏洞,最終演變成一個直接流入 HD 錢包重建管道的密碼分析側頻道。

BitcoinTunnel與基於ZeroMQ的基礎設施的集成

現代比特幣後端通常依賴 ZeroMQ 將原始區塊和交易事件推送給建立更高層錢包和分析邏輯的 Java 或 Spring Boot 服務。在這樣的環境中,設定錯誤或驗證不足的 ZeroMQ 端點可能導致連接到惡意發布者、注入格式錯誤的訊息,並觸發已知的 ZeroMQ 漏洞,尤其是在設定程式碼接受任意位址而未進行嚴格驗證的情況下,如原始設定範例中所述。 BitcoinTunnel 在這種生態系統中部署時,會同時觀察合法的事件流和崩潰產物,並將訊息流和進程穩定性中的異常與可能暴露 HD 錢包資料的潛在記憶體損壞事件關聯起來。

建議採用強化配置,例如嚴格驗證 ZeroMQ 位址、強制執行傳輸方案以及將主機和連接埠列入白名單,以防止攻擊者將BitcoinTunnel連接的服務重新導向到利用 CVE-2021-20236 漏洞的惡意端點。從科學角度來看,這些對策並不能完全消除基於內存的側信道攻擊的理論可能性,但它們通過限制精心構造的訂閱的來源以及降低畸形消息到達處理敏感錢包狀態的易受攻擊的 ZeroMQ 伺服器的概率,提高了安全門檻。因此,BitcoinTunnel 的設計假定傳輸層存在漏洞,並將 ZeroMQ 視為用於恢復(透過崩潰工件)的資料來源以及必須在生產部署中嚴格強化的介面。

從關鍵漏洞到私鑰恢復

將 ZeroMQ 的緩衝區溢位漏洞與使用BitcoinTunnel進行具體的比特幣私鑰恢復連結起來的攻擊鏈可以分為幾個階段。首先,攻擊者(或取證操作員)誘發指向整合了比特幣 HD 錢包服務的 ZeroMQ 端點的畸形訂閱流量,利用 CVE-2021-20236 漏洞導致進程崩潰、記憶體損壞或遠端程式碼執行,這些進程的記憶體中儲存著 HD 錢包的金鑰。其次,透過記憶體轉儲、診斷快照或主動鉤子提取部分金鑰:擴展私鑰、鏈碼、衍生路徑元數據,甚至是與 BIP32 子索引關聯的原始私鑰。

第三,BitcoinTunnel導入這些工件並應用符合 BIP32 標準的重構:它驗證擴展密鑰欄位的完整性,重構缺少的路徑段,並使用區塊鏈上已知的公鑰位址來驗證候選密鑰與已觀察到的交易歷史記錄的一致性。最後,在成功重構後,BitcoinTunnel 輸出恢復的私鑰或種子,從而能夠恢復對丟失的比特幣錢包的存取權限,而這些錢包原本無法透過傳統的種子或備份機制恢復。這表明,訊息層中一個「非加密」漏洞(在科學上被歸類為具有潛在遠端程式碼執行 (RCE) 的緩衝區溢出拒絕服務 (DoS) 攻擊)如何能夠被系統地轉化為一個強大的密碼分析工具,用於在像 BitcoinTunnel 這樣的結構化框架內恢復比特幣私鑰。 b8c +1


簽名偽造  和  簽名反序列化驗證不足 。文獻有時會關注  無效 ECDSA 簽名接受這一方面 。 比特幣中的關鍵 DeserializeSignature 漏洞:影響、攻擊的科學名稱和 CVE 編號。

  • “比特幣 ECDSA 簽名反序列化中的關鍵漏洞:對交易偽造和網路安全的威脅”
  • “利用無效數位簽章對比特幣發動的危險攻擊:反序列化簽章漏洞分析及防禦措施”
  • “比特幣簽名反序列化漏洞:潛在的加密攻擊途徑及當前預防方法”
  • “比特幣簽名偽造攻擊:ECDSA 反序列化漏洞導致的嚴重安全威脅”
  • “無效簽名與比特幣安全威脅:識別並修復關鍵反序列化漏洞”

2023年,比特幣客戶端庫(包括BitcoinJ)中用於反序列化基於ECDSA(橢圓曲線數位簽章演算法)演算法的數位簽章的函數被發現有嚴重漏洞  DeserializeSignature。該漏洞允許攻擊者創建無效但網路可接受的簽名,從而對比特幣加密貨幣網路構成安全威脅。


該漏洞會對針對比特幣的攻擊產生什麼影響?

此漏洞源自於數位簽章反序列化函數並未檢查所有簽章參數的正確性,特別是其值  r ,這些  值s 可能為零或超出允許的加密邊界。這導致產生的數位簽章雖然不符合 ECDSA 協議的官方標準,但仍會被易受攻擊的比特幣用戶端視為正確。

結果:

  • 接受無效簽名 :攻擊者可以創建一個具有無效簽名的交易,該交易將透過反序列化驗證並被網路接受,從而使攻擊者能夠在沒有真正私鑰的情況下假裝簽署交易。
  • 交易延展性 :這為交易延展性攻擊提供了可能性,在這種攻擊中,簽章被損壞的交易會被網路接受和確認。
  • 偽造轉帳 :攻擊者可能試圖在未經其他用戶同意的情況下代表他們進行交易,從而損害比特幣網路的完整性和信任度。

攻擊的科學名稱

這種漏洞可以歸類為與「簽章偽造」  和  「簽章反序列化驗證不足」相關的攻擊   。文獻有時會重點關注  「無效的ECDSA簽名接受」 方面,尤其是在反序列化函數跳過關鍵檢查的情況下。

在密碼學和軟體安全領域,這表現為典型的漏洞:

  • 輸入驗證  不足
  • 具體來說,就是加密簽章反序列化中的漏洞,
  • 與透過錯誤輸入偽造簽名有關   。

此類攻擊也可被視為公鑰密碼協定中的一種資料完整性攻擊。


CVE編號的可用性

截至 2025 年,  DeserializeSignature導致比特幣接受無效簽章的簽章反序列化漏洞尚未在全球 CVE 資料庫中註冊官方的 CVE(通用漏洞揭露)編號。然而,該漏洞在密碼學和區塊鏈社群中已被廣泛討論,並在研究和程式碼庫中進行了詳細的分析,包括影響分析和修復方法。

為了追蹤相關漏洞,建議使用標籤監控 CVE 視圖:

  • 比特幣用戶端上的 CVE 漏洞
  • BitcoinJ 和其他 ECDSA 函式庫的 CVE 漏洞
  • 涉及簽章處理的加密軟體領域的 CVE。

恢復

  • 比特幣的漏洞  DeserializeSignature 表現為 ECDSA 數位簽章參數驗證不完整,這使得攻擊者可以使用網路接受的無效簽章。
  • 這可能導致偽造數位簽名的攻擊成功,從而威脅比特幣交易的安全性。
  • 該攻擊的科學名稱接近「透過反序列化驗證不足進行簽名偽造」。
  • 該漏洞沒有官方的 CVE 編號,但已被科學和技術密碼學及區塊鏈社群認可和分析。


加密漏洞

在提供的 Java 類別程式碼中,這是一個標準的 Spring Boot 配置,它使用 BitcoinJ 程式庫來創建與比特幣區塊和交易的 ZeroMQ 訂閱者相關的元件。

如果從這個角度考慮  密碼學風險  ,最有可能的風險點或許就是這條線:

java:

return new BitcoinSerializer(networkParameters, false);

這行程式碼建立了一個  BitcoinSerializer 帶有參數  false (建構函數的第二個參數)的對象,該參數負責在禁用「parseVerifyFlags」檢查的情況下進行反序列化。

64bitcoin-spring-boot-starter/blob/chore/docker-checksum/bitcoin-zeromq-client/bitcoin-zeromq-client-autoconfigure/src/main/java/org/tbk/bitcoin/zeromq/config/BitcoinjZeroMq.AutojZeroMqient
https://github.com/keyhunters/bitcoin-spring-boot-starter/blob/chore/docker-checksum/bitcoin-zeromq-client/bitcoin-zeromq-client-autoconfigure/src/main/java/org/tbk/bitcoin/zerkw/config/Bitin

false 在 BitcoinJ 中,建構函式中的  一個參數  BitcoinSerializer(NetworkParameters params, boolean parseVerifyFlags) 可能意味著  在反序列化區塊和交易時不會啟用完全驗證,這有助於防止潛在的惡意資料 。

因此,如果  false 在未對輸入資料進行嚴格驗證的情況下使用此參數,則可能會危及安全性。

全部的:

  • 加密漏洞可能與以下程式碼行有關:
java:

return new BitcoinSerializer(networkParameters, false);
  • 這  false 可能會停用反序列化過程中的一些安全性檢查,從而增加處理錯誤或惡意資料的風險。

如果你需要,我可以幫忙對參數  BitcoinSerializer 及其加密安全性進行準確分析。


更正

答案將是一篇關於數位簽章反序列化(ECDSA)漏洞的科學文章,內容涵蓋漏洞的發生機制、後果以及安全修復方法。文章是基於最新的研究成果和關於比特幣網路安全的建議。


比特幣 ECDSA 數位簽章反序列化漏洞:原因、後果及安全修復方案

介紹

基於橢圓曲線數位簽章演算法 (ECDSA) 的數位簽章是比特幣網路安全的基石,確保交易的真實性和完整性。簽章驗證過程需要將資料從位元組格式轉換為適合密碼學驗證的結構化表示-即反序列化。  DeserializeSignature負責此操作的函數必須嚴格檢查簽名的格式和參數。然而,目前已發現一個與驗證不完整相關的漏洞,這為攻擊提供了可乘之機。

脆弱性發生的機制

該漏洞與該函數未能充分檢查數位簽章的關鍵組成部分——rrr 和 sss 參數有關  DeserializeSignature 。根據 ECDSA 加密協議,這兩個參數的值必須在一定的可接受範圍內,且不能為零。具體而言,該函數未能排除包含零值或錯誤值的簽章。

反序列化是基於 DER(可區分編碼規則)格式進行的,該格式嚴格定義了簽名結構。如果 DER 格式檢查不足,結構損壞或參數錯誤的簽章也可能透過反序列化。攻擊者可以創建此類偽造簽名,這些簽名雖然無效,但會被某些比特幣用戶端視為有效。這使得攻擊者能夠使用偽造簽名進行交易,從而威脅系統的完整性。

造成此漏洞的原因如下:

  • 實施過程中出現的錯誤或簡化之處,  DeserializeSignature都集中在轉換速度上,而沒有進行全面的測試。
  • 對簽名格式和參數值的極端和異常情況的測試不足。
  • 使用未經充分驗證的第三方函式庫。
  • 該協議的歷史特點,即檢查的完整性是如何逐步引入的。

脆弱性的後果

此漏洞可能導致以下風險:

  • 網路接受帶有無效簽名的交易,這可能導致用戶資金損失。
  • 破壞人們對比特幣網路安全的信任。
  • 可能存在偽造簽名和繞過驗證的攻擊。
  • 由於簽名符合正式格式,因此難以偵測和分析此類攻擊。

安全性修補程式可修復漏洞

為了協議安全,在反序列化簽章時需要加強驗證,具體措施如下:

  1. 嚴格驗證 DER 格式,包括巢狀結構和長度。
  2. 檢查 rrr 和 sss 參數是否不為零,是否在有效的加密範圍內(介於 1 和組階數之間,不包括零)。
  3. 使用抗加密庫並更新舊版實作。
  4. 添加驗證測試和模糊測試,以檢查簽名的極端情況。

程式碼中安全修復範例(Java、BitcoinJ)

Javaimport org.bouncycastle.asn1.ASN1Integer;
import org.bouncycastle.asn1.DLSequence;
import org.bitcoinj.core.ECKey;
import java.io.ByteArrayInputStream;

public class SecureBitcoinSerializer extends BitcoinSerializer {

    public SecureBitcoinSerializer(NetworkParameters params, boolean parseVerifyFlags) {
        super(params, parseVerifyFlags);
    }

    @Override
    public ECKey.ECDSASignature parseSignature(byte[] signatureBytes) throws Exception {
        // Проверка формата DER и десериализация
        try (ByteArrayInputStream bais = new ByteArrayInputStream(signatureBytes)) {
            DLSequence seq = (DLSequence) ASN1Sequence.fromByteArray(bais.readAllBytes());

            ASN1Integer r = (ASN1Integer) seq.getObjectAt(0);
            ASN1Integer s = (ASN1Integer) seq.getObjectAt(1);

            // Принудительная проверка на нулевые значения
            if (r.getValue().signum() <= 0 || s.getValue().signum() <= 0) {
                throw new IllegalArgumentException("Invalid signature parameters: r and s must be positive.");
            }

            // Проверка верхней границы параметров (порядок кривой)
            if (r.getValue().compareTo(ECKey.CURVE.getN()) >= 0 || s.getValue().compareTo(ECKey.CURVE.getN()) >= 0) {
                throw new IllegalArgumentException("Invalid signature parameters: r or s exceed curve order.");
            }

            return new ECKey.ECDSASignature(r.getValue(), s.getValue());
        }
    }
}

在這個例子中,該方法  parseSignature 攔截了反序列化過程並添加了以下內容:

  • 擴充 DER 格式檢查(透過 BouncyCastle 函式庫)。
  • 檢查參數 rrr、sss 是否為正數且小於橢圓曲線的階數。
  • 違反規則的異常情況及錯誤描述。

結論

BitcoinJ 的漏洞  DeserializeSignature 表明,即使是基本的加密操作也需要對資料格式和參數進行極其嚴格的驗證。為了防止反序列化攻擊,必須對結構和參數進行全面驗證,避免簡化,並積極審核庫。

安全的修復方案包括在簽章反序列化過程中實施複雜的驗證,這符合密碼學標準,並保護比特幣網路免受偽造和基於簽章的攻擊。


總之,以下幾點值得強調:

比特幣網路中發現的ECDSA 數位簽章反序列化函數存在一個嚴重漏洞, DeserializeSignature對整個加密貨幣系統構成嚴重安全威脅。此漏洞的核心在於關鍵簽章參數的驗證不足,使得攻擊者能夠創建被網路接受的無效簽章。這為簽名偽造攻擊提供了可能,進而導致交易被篡改,並可能危及用戶資金安全。

這種攻擊在科學上被歸類為「  透過反序列化驗證不足進行簽名偽造」   ,它破壞了比特幣網路交易真實性和完整性的基本原則。雖然目前還沒有官方的CVE編號,但其嚴重性已獲得研究界的認可,需要採取嚴格的安全措施。

為了消除這個漏洞,必須對簽章反序列化的參數進行全面檢查-排除零值和超出範圍的值,嚴格控制 DER 格式,並使用可靠的加密函式庫。只有這樣才能防止此類攻擊,並維護人們對比特幣安全性的信任。

這次暴露出的漏洞給我們敲響了警鐘,提醒我們有必要在處理的每個階段對加密資料進行徹底全面的驗證,以確保加密貨幣交易的完整性和可靠性。


ZeroMQ 嚴重漏洞對比特幣加密貨幣安全與分類的影響 中間人攻擊(MITM)或入侵攻擊

  • “ZeroMQ協定中的關鍵漏洞:比特幣網路安全面臨的中間人攻擊風險”
  • “ZeroMQ 加密漏洞的危險性及其對比特幣區塊鏈資料完整性的威脅”
  • “訊息篡改和數據攔截:比特幣基礎設施中 ZeroMQ 的一個關鍵漏洞”
  • “透過 ZeroMQ 對比特幣發動中間人攻擊:威脅分析和安全緩解方法”
  • “比特幣通訊中的加密漏洞:檢測和防禦 ZeroMQ 的關鍵漏洞”

在比特幣等加密貨幣系統中,確保網路元件之間的通訊安全至關重要,它可以防止各種攻擊,例如交易外洩、資料替換和網路中斷。在比特幣基礎設施中使用 ZeroMQ 與區塊鏈交換訊息和交易,需要特別注意安全性。本文將詳細分析 ZeroMQ 中的關鍵漏洞如何影響比特幣安全系統,並對此攻擊進行科學分類,同時介紹相關的 CVE 編號。

漏洞描述及其影響

ZeroMQ 用於比特幣節點和組件之間的通信,特別是發布交易和區塊資料流。如果通訊不安全,攻擊者可以利用加密和身份驗證的缺失,從而導致中間人攻擊 (MITM) 或篡改攻擊。

該漏洞可能對比特幣生態系統造成以下潛在後果:

  • 竊聽敏感網路資料(例如原始交易資訊)。
  • 訊息替換可能會導致有關區塊鏈狀態的虛假資訊的傳播。
  • 透過偽造訊息或使節點過載來中斷服務(拒絕服務攻擊)。

攻擊的科學名稱

利用此類漏洞發起的攻擊稱為中間人攻擊 (MITM),這種攻擊發生在沒有身份驗證和加密的通訊通道中。在這種情況下,ZeroMQ 缺乏加密保護,使得攻擊者能夠插入到訊息的傳送者和接收者之間,攔截並篡改資料。

此外,根據 ZeroMQ 的特定實作和版本,漏洞被指定為 CWE-200(資訊外洩)和 CWE-119(某些情況下的記憶體損壞)。

CVE可用性

研究表明,ZeroMQ 存在多個與訊息傳遞安全相關的漏洞(CVE 編號),其中包括一些嚴重漏洞:

  • CVE-2020-15166 – ZeroMQ 透過繞過安全限制進行拒絕服務攻擊,導致系統被入侵 securitylab
  • CVE-2021-20236 – ZeroMQ 4.3.2 先前的版本中主題訂閱處理存在記憶體損壞漏洞,可能允許遠端攻擊 。 vuldb
  • BDU:2024-02576 – ZeroMQ 中發現一個堆疊緩衝區溢位漏洞,導致系統機密性、完整性和可用性受到威脅。供應商已確認此漏洞,並在新版本中修復 

需要注意的是,比特幣用戶端 ZeroMQ 通訊中缺乏加密和身份驗證這一特定漏洞可能不會被單獨編號為 CVE,因為它更多的是配置和安全實踐方面的問題,而不是 ZeroMQ 程式碼本身的缺陷。然而,它仍然屬於資訊安全漏洞的範疇,屬於嚴重安全問題。

對比特幣安全的影響

利用此漏洞可能導致:

  • 由於虛假訊息的傳播,導致網路信任度下降。
  • 偽造交易和區塊,在最壞的情況下可能導致雙重支付或用戶被封鎖。
  • 比特幣節點和客戶端的正常運作受到干擾,這會降低系統的穩定性,並可能導致經濟損失。

結論

ZeroMQ 中存在一個加密漏洞,由於訊息傳輸過程中缺乏身份驗證和加密,對包括比特幣在內的加密貨幣平台的安全構成嚴重威脅。這種威脅的科學名稱是中間人攻擊,它利用通訊中的弱點來幹擾和篡改資料。此類漏洞與特定的 CVE 編號(例如 CVE-2020-15166 或 CVE-2021-20236)相關聯,證實了這些風險的存在,因此需要實施諸如 CurveZMQ 之類的安全通訊協定。

為了可靠地保護系統,強烈建議使用加密、身份驗證、定期庫更新和配置檢查,以防止將來發生類似的攻擊。

連結和來源:


加密漏洞

提供的程式碼中不存在明顯的加密漏洞,因為此類僅配置連接到 ZeroMQ Bitcoin 用戶端的參數——沒有涉及加密、金鑰或資料的操作,因此不需要加密安全性。

然而,從密碼安全角度來看,傳遞字串參數值的行/部分可能存在潛在危險,例如:

java:

public BitcoinZmqClientConfig build() {
return new BitcoinZmqClientConfig(network, zmqpubhashtx, zmqpubhashblock, zmqpubrawblock, zmqpubrawtx);
}

如果參數(zmqpubhashtx、zmqpubhashblock、zmqpubrawblock、zmqpubrawtx)來自不受信任的來源或未經驗證,則在連接到 ZeroMQ 時可能會導致發布地址欺騙或中間人攻擊等漏洞。

65bitcoin-spring-boot-starter/blob/chore/docker-checksum/bitcoin-zeromq-client/bitcoin-zeromq-client-autoconfigure/src/main/org/tbk/bitcoin/zeromq/config/BitcoinZmqClientConfig.java
https://github.com/keyhunters/bitcoin-spring-boot-starter/blob/chore/docker-checksum/bitcoin-zeromq-client/bitcoin-zeromq-client-autoconfigure/src/main/java/org/Clk/bitcoin/zertbomq/config/BitcoinmZqm/pient.

還值得注意的是:

  • 程式碼中沒有實現這些參數的驗證或確認。
  • ZeroMQ 連線沒有加密或身份驗證,如果攻擊者能夠攔截或偽造訊息,可能會造成威脅。

結論是:該片段中沒有明顯的加密錯誤;漏洞更有可能與參數傳輸和驗證的一般安全措施有關。


更正:

研究論文:比特幣 ZeroMQ 用戶端中的加密漏洞及安全修復方法

介紹

ZeroMQ 是一款流行的、高效能的分散式系統訊息工具。尤其是在比特幣生態系統中,ZeroMQ 用於發布交易和區塊等事件。然而,如果配置錯誤且缺乏適當的安全措施,ZeroMQ 通訊可能會變得脆弱,從而導致未經授權的存取、資料替換和中間人攻擊等威脅。本文分析了比特幣 ZeroMQ Java 用戶端中存在的加密漏洞,指出了這些漏洞的成因,並提出了包含範例程式碼的安全修復方案。

脆弱性原因

經分析,ZeroMQ比特幣用戶端設定代碼缺少身份驗證、加密或連線參數(訊息發佈位址)驗證機制。這會導致以下幾個安全問題:

  • 缺乏資料加密:傳輸的資訊可能被入侵者攔截和讀取。
  • 缺乏身份驗證:未經授權的用戶端可以連接到 ZeroMQ 套接字,接收或偽造訊息。
  • 缺乏參數驗證:傳遞配置字串而不進行檢查,可能導致惡意位址和潛在惡意資料的替換。

這些問題為訊息欺騙、流量竊聽以及乾擾應用程式運行(例如中間人攻擊)等攻擊創造了條件。

安全性修補程式可修復漏洞

為消除上述問題,有必要引入安全機制:

  1. 使用 ZeroMQ 內建的橢圓曲線加密引擎 CurveZMQ,提供強大的加密和認證功能。
  2. 對配置參數進行驗證和強類型化,以防止替換無效或惡意值。
  3. 建立安全的金鑰交換和通訊參與者身份驗證機制。

以下是一個使用 CurveZMQ 的 Java ZeroMQ 用戶端固定安全程式碼範例:

java:

import org.zeromq.SocketType;
import org.zeromq.ZMQ;
import org.zeromq.ZContext;
import org.zeromq.ZMQ.Socket;
import org.zeromq.ZMQ.*;

public class SecureBitcoinZmqClient {

private ZContext context;
private Socket subscriber;

public SecureBitcoinZmqClient(String endpoint, byte[] clientPublicKey, byte[] clientSecretKey, byte[] serverPublicKey) {
context = new ZContext();
subscriber = context.createSocket(SocketType.SUB);

// Установка ключей CurveZMQ для шифрования и аутентификации
subscriber.setCurvePublicKey(clientPublicKey);
subscriber.setCurveSecretKey(clientSecretKey);
subscriber.setCurveServerKey(serverPublicKey);

// Подписка на топики для получения сообщений безопасно
subscriber.subscribe("hashblock".getBytes(ZMQ.CHARSET));
subscriber.subscribe("hashtx".getBytes(ZMQ.CHARSET));

// Подключение к защищенному сокету
subscriber.connect(endpoint);
}

public void receiveMessages() {
while (!Thread.currentThread().isInterrupted()) {
String topic = subscriber.recvStr();
String message = subscriber.recvStr();
System.out.printf("Received on topic %s: %s%n", topic, message);
}
}

public void close() {
subscriber.close();
context.close();
}

public static void main(String[] args) {
// Пример инициализации ключей (ключи должны быть сгенерированы безопасным способом)
byte[] clientPublicKey = ...;
byte[] clientSecretKey = ...;
byte[] serverPublicKey = ...;

SecureBitcoinZmqClient client = new SecureBitcoinZmqClient("tcp://example.com:28332", clientPublicKey, clientSecretKey, serverPublicKey);
client.receiveMessages();
client.close();
}
}

解釋:

  • 此範例使用 CurveZMQ 在 Java 中實作了 ZeroMQ 用戶端,CurveZMQ 提供身份驗證和加密功能。
  • 這些方法  setCurvePublicKey,  setCurveSecretKey 並  setCurveServerKey 設定安全連線所需的金鑰。
  • 客戶訂閱感興趣的主題,並透過安全通道接收資料。

結論

Bitcoin ZeroMQ 用戶端缺乏加密安全措施,導致資料外洩和網路攻擊的風險顯著增加。使用 CurveZMQ 內建的加密和驗證機制,並嚴格驗證設定參數,是消除漏洞、保護系統的最佳方法。遵循上述範例和建議,您可以大幅提高 Java 版 Bitcoin 用戶端訊息傳遞的安全性,從而消除未來利用此漏洞進行攻擊的可能性。

定論

ZeroMQ比特幣用戶端元件中存在一個與訊息缺乏身份驗證和加密相關的加密漏洞,這是一個嚴重的安全缺陷。該漏洞可能導致中間人攻擊,攻擊者可以攔截、偽造和篡改交易數據,並阻止比特幣網路上的消息傳輸。此類行為會損害資訊的完整性和可靠性,增加雙重支付的風險,破壞網路節點的穩定運行,並顯著降低人們對比特幣生態系統的信任。

從科學角度來看,這種漏洞被定義為資訊外洩風險和通訊通道真實性遭到破壞,這構成了內部網路中間人攻擊(MITM)的基礎。雖然目前可能沒有針對此特定問題的單獨CVE編號,但在ZeroMQ生態系統中已發現其他具有類似後果的嚴重漏洞,這證實了缺乏加密保護所帶來的巨大風險。

為了可靠地保護比特幣基礎設施,必須使用現代加密和認證方法,例如 CurveZMQ,同時嚴格控製配置參數並不斷更新所使用的庫。只有採取全面的安全措施才能防止這些漏洞被利用,確保系統的完整性、機密性和容錯性,從而保護比特幣免受危險的網路攻擊。

因此,了解並及時消除通訊協定中的關鍵漏洞是保護加密貨幣生態系統免受現代威脅和進階攻擊的關鍵要素。應對這項挑戰需要持續的研究、實施行之有效的解決方案,以及在密碼系統的開發和運作中採取負責任的安全措施。

  1. https://vuldb.com/ru/?id.176051
  2. https://www.reddit.com/r/CryptoTechnology/comments/1ij36za/could_quantum_computers_destroy_bitcoin/
  3. https://www.securitylab.ru/vulnerability/512081.php
  4. https://github.com/antismok/zeromq-book/blob/master/chapter2.md
  5. https://cryptodeeptool.ru/signature-malleability/
  6. https://cryptodeep.ru/fuzzing-bitcoin/
  7. http://elib.fa.ru/art2019/bv1142.pdf/download/bv1142.pdf?lang=en
  8. https://habr.com/ru/articles/430240/
  9. https://github.com/antismok/zeromq-book
  10. https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-cve-2018-17144-%D0%B201%

資料來源及補充資料:

  1. https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
  2. https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-deserializesignature-%D0%B 2-%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%B5-bitcoin-%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0BA%
  3. https://github.com/demining/Deserialize-Signature-Vulnerability-in-Bitcoin-Network
  4. https://habr.com/ru/articles/817237/
  5. https://github.com/BitcoinChatGPT/DeserializeSignature-Vulnerability-Algorithm
  6. https://pikabu.ru/story/uyazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_posledstviya_i_vozmozhnost_sozdaniya_nedeystvitelnyikh_podpisey_ecdsa_11454555
  7. https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_1_12055351
  8. https://www.youtube.com/watch?v=8E2KJeWu4XA
  9. https://infosecportal.ru/agregator-runeta/agregator-statej/uyazvimost-deserializesignature-v-seti-bitkoin-kriptoanaliz-i-nedejstvitelnye-podpisi-ecdsa/
  10. https://dzen.ru/a/ZlTZwF_CZgG8EPSs

如有需要,我可以協助進行更深入的技術分析,以評估該漏洞及其他安全問題。所有數據均基於2023年至2025年針對比特幣網路數位簽章反序列化漏洞的研究。 github  +2

  1. https://habr.com/ru/articles/817237/
  2. https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
  3. https://github.com/demining/Deserialize-Signature-Vulnerability-in-Bitcoin-Network
  4. https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-deserializesignature-%D0%B 2-%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%B5-bitcoin-%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0BA%
  5. https://habr.com/ru/articles/817237/comments/
  6. https://xylocode.ru/businessdata/vulnerabilities/
  7. https://pikabu.ru/story/uyazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_posledstviya_i_vozmozhnost_sozdaniya_nedeystvitelnyikh_podpisey_ecdsa_11454555
  8. https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8-%D0%BA%D1%80%D0%B8%D0%BFD1% 2%D0%BE%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%BD%D1%8B%D1%85-%D0%BA%D0%BE%D1%88%D0%B5%D0%BB%D1%8C%D0%D1%88%D0%B5%D0%BB%D1%8C%D0%D1%8
  9. https://pcnews.ru/top/blogs/day/uazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_i_nedejstvitelnye_podpisi_ecdsa-1449836.html
  10. https://github.com/BitcoinChatGPT/DeserializeSignature-Vulnerability-Algorithm

如果您需要對攻擊進行更深入的分析或需要防護程式碼範例方面的協助,我隨時準備提供更多資訊。

  1. https://habr.com/ru/articles/817237/
  2. https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
  3. https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-deserializesignature-%D0%B 2-%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D0%B5-bitcoin-%D0%B3%D0%BB%D1%83%D0%B1%D0%BE%D0BA%
  4. https://pikabu.ru/story/uyazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_posledstviya_i_vozmozhnost_sozdaniya_nedeystvitelnyikh_podpisey_ecdsa_11454555
  5. https://github.com/demining/Deserialize-Signature-Vulnerability-in-Bitcoin-Network
  6. https://www.youtube.com/watch?v=8E2KJeWu4XA
  7. https://habr.com/ru/articles/817237/comments/
  8. https://forum.bits.media/index.php?%2Fblogs%2Fentry%2F3405-%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8 C-deserializesignature-%D0%B2-%D1%81%D0%B5%D1%82%D0%B8-%D0%B1%D0%B8%D1%82%D0%BA%D0%BE%D0%B8%D0%BD-%D0%BA%D1%80%D0%D %BF%D1%82%D0%BE%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%BF%D0%BE%D1%81%D0%BB%D0 %B5%D0%B4%D1%81%D1%82%D0%B2%D0%B8%D1%8F-%D0%B8-%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D 0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D 1%8F-%D0%BD%D0%B5%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%82%D0%B5%D0%BB%D 1%8C%D0%BD%D1%8B%D1%85-%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D0%B5%D0%B9-ecdsa%2F
  9. https://infosecportal.ru/agregator-runeta/agregator-statej/uyazvimost-deserializesignature-v-seti-bitkoin-kriptoanaliz-i-nedejstvitelnye-podpisi-ecdsa/
  10. https://pcnews.ru/blogs/uazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_i_nedejstvitelnye_podpisi_ecdsa-1449836.html

 密碼分析

  1. https://cryptodeeptool.ru/signature-malleability/
  2. https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_1_12055351
  3. https://habr.com/ru/articles/430240/
  4. https://habr.com/ru/articles/817237/
  5. https://cryptodeep.ru/bitcoin-bluetooth-attacks/
  6. https://www.securitylab.ru/vulnerability/512081.php
  7. https://coderlessons.com/articles/devops-articles/vzgliad-na-nanomsg-i-protokoly-masshtabiruemosti-pochemu-zeromq-ne-dolzhen-byt-vashim-pervym-vyborom
  8. https://polynonce.ru/%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C-cve-2018-17144-%D0%B201%
  9. https://github.com/antismok/zeromq-book
  10. https://pikabu.ru/story/uyazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_posledstviya_i_vozmozhnost_sozdaniya_nedeystvitelnyikh_podpisey_ecdsa_11454555

本文基於已知 ZeroMQ 漏洞的分析以及 Java Spring Boot 應用程式中的安全程式設計原則 

  1. https://feedly.com/cve/CVE-2021-20236
  2. https://b8c.ru/bitcointunnel/
  3. https://b8c.ru
  4. https://github.com/advisories/GHSA-4j25-p3vq-p264
  5. https://keyhunters.ru/contacts/bestleakhunter/index.html
  6. https://b8c.ru/cipherkey/
  7. https://b8c.ru/privkeeper/
  8. https://b8c.ru/bitcoinseed/
  9. https://b8c.ru/btchammer/
  10. https://crypto.ru/majning-pul-viabtc/
  11. https://b8c.ru/btcexploitsilk/
  12. https://trustpool.cc/bitcoin/
  13. https://b8c.ru/keysilentleak/
  14. https://b8c.ru/androidarknet/
  15. https://b8c.ru/hacksatoshi/
  16. https://keyhunters.ru/critical-vulnerability-in-secp256k1-private-key-verification-and-invalid-key-threat-a-dangerous-attack-on-bitcoin-cryptocurrency-security-vulnerability-in-bitcoin——
  17. https://b8c.ru/zerodaycrypto/
  18. https://cryptodeep.ru
  19. https://keyhunters.ru/search-for-btc-coins-on-earlier-versions-of-bitcoin-core-with-critical-vulnerability-openssl-0-9-8-cve-2008-0166/
  20. https://b8c.ru/poseidonbitx/

By