作者:KEYHUNTER
比特幣交易驗證的關鍵漏洞:雙花風險及對加密貨幣網路不穩定的威脅 。 比特幣交易驗證的關鍵漏洞:攻擊的影響及分類
比特幣是一種去中心化的開源加密貨幣,它依賴密碼學安全性和區塊鏈一致性。其安全性基於數位簽章、交易處理規則和共識協議。然而,實現錯誤或違反交易和區塊驗證規則都可能導致嚴重的安全漏洞,攻擊者可以利用這些漏洞攻擊網路。
脆弱性是如何產生的
其中一個關鍵漏洞與驗證節點對交易的驗證錯誤有關——尤其是在區塊處理過程中跳過了雙花、簽名或未花費交易輸出 (UTXO) 狀態的情況下。這種情況可能是由於重複交易輸入處理不當、簽章驗證錯誤或 UTXO 資料庫更新錯誤所造成的。
結果是一種這樣的情況:
- 包含已使用(已花費)輸出的交易被視為有效。
- 節點要么崩潰(如果程式碼中有斷言表達式),要么處於不一致的狀態。
- 攻擊者可以透過多次花費相同的加密貨幣來進行雙重支付。
- 在某些情況下,可以發行額外的代幣(網路通貨膨脹)。
攻擊的科學技術名稱
上述漏洞相關的攻擊類型被稱為 「 雙花攻擊」。然而,該漏洞的具體子類型及其後果可能包括:
- 拒絕服務(DoS) ——在節點崩潰的情況下。
- 共識失敗 -當節點狀態出現分歧時,會導致區塊鏈分叉。
- 通貨膨脹漏洞 -由於交易處理錯誤而錯誤地創建新幣。
已知 CVE 漏洞範例
在比特幣及其分叉的發展歷史中,CVE(通用漏洞披露)是眾所周知的,它與類似類型的漏洞相關聯:
- CVE-2018-17144 是 Bitcoin Core 中的一個漏洞,它允許攻擊者透過錯誤地繞過重複使用輸入驗證來發動雙花攻擊並導致節點崩潰。當嘗試將重複交易包含在區塊中時,UTXO 的完整性會受到損害,從而導致驗證過程失敗。此 CVE 描述的是一個拒絕服務 (DoS) 漏洞,並可能導致後續的網路膨脹。 github +1
- 其他基於比特幣的加密貨幣也曾經通報過類似的漏洞,凸顯了正確的交易驗證和UTXO資料庫更新對於整個生態系統安全的重要性。
漏洞對比特幣安全的影響
雙花攻擊會破壞人們對比特幣的信任,因為它允許攻擊者:
- 重複使用同一枚硬幣會擾亂貨幣供應,破壞經濟價值。
- 破壞區塊鏈共識,導致鏈分叉和網路穩定性降低。
- 對節點造成拒絕服務 (DoS) 攻擊,削弱網路並為進一步攻擊打開方便之門。
- 最終用戶和服務提供者的資金損失。
預防攻擊和消除漏洞的建議
為避免此類攻擊,比特幣節點和庫應實現:
- 確保對所有交易輸入進行全面檢查,防止重複使用,避免重複消費。
- 使用可信任的加密庫嚴格驗證每個輸入的數位簽章。
- 只有在區塊和所有傳入交易都已完全成功驗證後,才能更新 UTXO 狀態。
- 應用安全程式設計原則:避免在發布程式碼中使用 assert 進行重要檢查,而應使用異常處理。
- 持續監控 CVE 並更新軟體至最新安全版本。
結論
與交易驗證錯誤和雙花驗證相關的嚴重漏洞在科學和技術實踐中被稱為雙花攻擊。該漏洞由一個正確的CVE編號表示,例如CVE-2018-17144,它會對比特幣網路的安全造成嚴重影響,威脅其共識機制和貨幣發行的完整性。可靠的交易驗證方法、數位簽章和UTXO狀態驗證是防止此類攻擊並確保加密貨幣系統彈性的關鍵。
如有需要,我可以提供關於具體漏洞的詳細披露、攻擊實施範例或分析比特幣核心程式碼的實用方法。
加密漏洞
此程式碼中的加密漏洞在所示測試層級並不明顯。該程式碼是一個單元測試,用於檢查比特幣區塊和交易的解析和序列化是否符合其嚴格的固定參數(區塊哈希值、前一個區塊、時間、隨機數、交易資訊、腳本等)。
就安全性而言,潛在的易受攻擊字串可能與腳本轉換或雜湊有關,但在此測試中,它們只是簡單地檢查是否與硬編碼的常數相等。
從密碼學的角度來看,哪些方面令人懷疑:
- 包含交易錄入腳本檢查的行:
java:assertThat(txIn.getScriptBytes(), is(Hex.decode("04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73")));
這段程式碼會檢查 Coinbase 腳本是否包含「The Times 03/Jan/2009…」。如果腳本處理或簽章檢查實作不正確,則可能出現此漏洞,但所提供的程式碼僅檢查位元組的一致性。

- 使用 Sha256Hash.wrap 處理雜湊值:
java:assertThat(block.getHash(), is(Sha256Hash.wrap("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f")));
如果 Sha256Hash.wrap 內部有漏洞,那麼這個地方就可能很危險,但它是一個 bitcoinj 函式庫類別。
概括
提供的測試程式碼中不存在明顯的加密漏洞,所有內容都只是對創世區塊固定值的斷言。如果存在漏洞,則更有可能存在於外部類別(例如 BitcoinSerializer、Sha256Hash)中,而不是此處。
如果您需要協助分析真正的易受攻擊程式碼,請提供您懷疑存在漏洞的函數的程式碼,或指定一個您懷疑存在加密漏洞的特定類別/方法。
更正
以下這篇研究論文詳細介紹了範例中提供的程式碼可能存在的加密漏洞的性質,並提出了安全修復和防止將來類似攻擊的方法。
分析比特幣腳本處理中的加密漏洞及其安全消除方法
介紹
比特幣和其他加密貨幣使用密碼學原語和腳本語言來實現,以確保交易的安全性和靈活性。密碼學漏洞可能源自於實現錯誤和不當的資料處理。尤其重要的是,交易輸入輸出腳本(比特幣腳本)的處理,以及序列化和哈希運算,對安全性至關重要。這些方面的錯誤可能導致對區塊完整性的攻擊、交易偽造和資金損失。
脆弱性發生的機制
所檢查的測試程式碼用於驗證比特幣區塊和交易的序列化和反序列化是否正確。如果出現以下情況,則可能存在加密漏洞:
- 交易腳本的處理過程中缺乏適當的內容驗證。 例如,使用未經驗證或檢查的腳本,忽略簽名驗證和腳本條件,都可能導致虛假交易的產生。
- 使用未經驗證的雜湊函數或雜湊值的打包/解包方式不正確。 如果使用自訂雜湊處理函數而非經過驗證的函式庫函數,則雜湊值可能會被替換。
- 對交易和區塊參數缺乏嚴格驗證。 例如,對隨機數、時間、前一個區塊的雜湊值、輸入輸出序列等驗證不當,可能導致攻擊者產生包含錯誤資料的區塊。
請求中提供的程式碼表明,它檢查了創世區塊和 Coinbase 交易的硬編碼參數。缺乏對計算結果的完整性檢查以及對硬編碼值的信任並非漏洞,但在處理真實動態資料時,這是一種危險的做法。
- 應特別注意輸入/輸出腳本(ScriptSig、ScriptPubKey)-如果處理不當,就可能輕易識別出具有虛假簽名或繞過腳本條件的交易。
安全修復漏洞的方法
為防止此類問題,必須:
- 使用經過驗證且廣泛認可的比特幣庫(bitcoinj、libbitcoin、Bitcoin Core),並嚴格遵循其 API 和指南。
- 對每個區塊和每筆交易實施全面的驗證檢查,包括:
- 驗證每個輸入的數位簽名,驗證腳本是否符合比特幣腳本語言,驗證 ScriptSig 和 ScriptPubKey 的執行情況。
- 驗證區塊哈希值、隨機數和區塊時間的正確性。
- 檢查輸入和輸出序列是否符合共識規則。
- 避免硬編碼值,並始終驗證從外部來源接收的值或反序列化資料時的值。
安全修復程式碼(基於 bitcoinj 的 Java 偽代碼)
java:@Test
void safeTransactionValidation() {
BitcoinjBlockPublisherFactory sut = new BitcoinjBlockPublisherFactory(mainnetSerializer, genesisBlockPublisher);
Block block = sut.create()
.blockFirst();
// Проверка блока на валидность по правилам сети
boolean isBlockValid = block.verifyHeader() && block.verifyTransactions();
assertTrue(isBlockValid, "Block validation failed");
for (Transaction tx : block.getTransactions()) {
for (TransactionInput input : tx.getInputs()) {
// Проверяем подпись каждого входа транзакции
boolean isSigValid = input.verifySignature();
assertTrue(isSigValid, "Invalid signature in transaction input");
// Дополнительная проверка скриптов Bitcoin Script
boolean scriptsValid = Script.verifyScripts(input.getScriptSig(), tx.getOutputs().get(0).getScriptPubKey());
assertTrue(scriptsValid, "Bitcoin Script verification failed");
}
}
}
解決方案解釋
- 此方法
block.verifyHeader()檢查區塊頭(前一個區塊的雜湊值、時間戳記、難度)的正確性。 - 此方法
block.verifyTransactions()會對區塊中的每一筆交易進行檢查,以確保其符合網路規則。 - 此方法
input.verifySignature()驗證輸入數位簽章的真實性,消除了偽造的可能性。 Script.verifyScripts()執行並檢查 Scriptsig 和 Scriptpubkey 腳本的合規性,確保應用了相應的條件。- 使用斷言 (
assertTrue) 可以幫助您在測試階段擷取並快速回應錯誤。
防止再次攻擊
- 定期更新加密庫和比特幣用戶端,以修復已知漏洞。
- 在客戶端和伺服器端實現交易和區塊的多層驗證。
- 開發和測試攻擊場景以及模糊測試腳本,以識別弱點。
- 使用可靠的靜態和動態程式碼分析工具,在開發早期階段防止漏洞。
結論
只有仔細檢查從哈希值到腳本和簽名等每個組件,才能確保處理比特幣交易和區塊的程式碼的加密安全性。提供的測試程式碼依賴固定值,雖然沒有明顯的漏洞,但無法抵禦真實世界的攻擊。可靠的解決方案是進行全面的驗證,並使用經過驗證的庫以及現代的簽名和腳本驗證方法。這可以防止關鍵類型的攻擊,包括交易偽造、區塊篡改和繞過共識規則。
在關於比特幣加密貨幣的關鍵漏洞和危險攻擊的文章的科學最終結論中,建議鞏固對該問題的重要性及其對生態系統的影響的理解:
定論
比特幣交易驗證的一個關鍵漏洞允許雙重支付攻擊,這是去中心化加密貨幣系統面臨的最嚴重安全威脅之一。一旦被利用,攻擊者可以多次花費相同資金,從而破壞區塊鏈生態系統的根本信任。
當網路節點機制未能執行嚴格全面的交易驗證(包括數位簽章和未花費交易輸出 (UTXO) 的完整性驗證)時,就會出現此漏洞。這會導致共識失效、通貨膨脹風險、拒絕服務 (DoS) 攻擊以及區塊鏈分叉。 CVE-2018-17144 記錄並記錄了一個此類漏洞的具體範例,其中描述了一個可能導致節點崩潰和雙重支付的錯誤。
為了確保比特幣及類似加密貨幣的安全,必須使用經過驗證的加密庫,對每筆交易和區塊機制進行全面驗證,並定期更新軟體,安裝最新的修補程式和修復程式。只有這樣,才能確保加密貨幣作為安全、去中心化交易媒介的穩定性、可靠性和長期價值。
因此,消除此漏洞並防止雙花攻擊是整個比特幣網路安全及其作為數位經濟機構進一步發展的基石。

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

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

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

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

SatoshiScan是一款專門用於恢復遺失比特幣錢包的密碼分析工具,它透過搜尋基於 Android 的比特幣應用程式和自訂錢包實作中使用的 Spongy Castle 加密協定棧的漏洞來實現這一目標。 SatoshiScan 專注於此 Java/Android 加密庫中 ECDSA、隨機數產生和金鑰派生等實現層面的漏洞,彌合了抽象漏洞與實際金鑰復原之間的鴻溝,將細微的缺陷轉化為重建原本無法復原的私鑰的可行途徑。在諸如 CVE-2018-17144 等共識級缺陷的背景下,像 SatoshiScan 這樣的工具成為更廣泛的攻防框架的一部分:共識漏洞會導致異常交易模式和通貨膨脹場景,而 SatoshiScan 暴露的 Spongy Castle 漏洞則允許將這些異常情況轉化為真正的私鑰提取和錢包恢復。
SatoshiScan 的架構
SatoshiScan 被描述為一個軟體平台,旨在攻擊 Spongy Castle 中的漏洞。 Spongy Castle 是 Bouncy Castle 的一個面向 Android 的分支,廣泛用於許多加密貨幣應用中的 ECDSA、金鑰派生和隨機數生成。該工具旨在系統地分析大量來自依賴 Spongy Castle 的錢包的交易、簽名和密鑰材料,尋找表明存在偏差 nonce、重複使用 nonce 或可預測密鑰生成流程的結構模式和統計異常。實際上,這使得 SatoshiScan 成為一個專注於 ECDSA 取證的引擎,而不是一個通用的暴力破解工具,它利用了廣泛使用的庫中的實現缺陷會在多個錢包中造成關聯弱點這一事實。
從內部來看,此工作流程可以概括為三個主要階段:資料收集、密碼分析和金鑰重構。資料收集從比特幣區塊鏈或易受攻擊錢包產生的鏈下日誌中收集原始交易和簽章資料;密碼分析偵測隨機數重複使用、相關隨機性或與 Spongy Castle 漏洞一致的金鑰派生邏輯缺陷;金鑰重構應用格方法、離散對數約簡或代數攻擊,從底層私鑰恢復底層。該流程使 SatoshiScan 能夠自動將龐大且雜訊較大的簽章資料集轉換為特定位址的具體私鑰,使其適用於系統性的錢包復原活動。
海綿城堡作為攻擊面
Spongy Castle 是 Bouncy Castle 加密庫的 Android 版本,兩者在命名空間和部署環境上存在較大差異,但繼承了許多相同的實作模式,包括 ECDSA 簽章、確定性或隨機 nonce 以及金鑰對生成例程。 Spongy Castle 中隨機性來源、nonce 管理或參數驗證的任何缺陷都可能導致比特幣簽章出現加密漏洞,尤其是在應用程式開發人員濫用 API 或繞過建議模式的情況下。例如,行動裝置上的熵不足、偽隨機數產生器的重複播種或不正確的確定性 nonce 實作都可能導致在觀察到足夠多的簽章時,ECDSA 私鑰部分或全部外洩。
SatoshiScan 利用這項特性,將基於 Spongy Castle 的錢包視為一類目標,這些目標的簽章可能存在共同的結構性缺陷,從而實現跨錢包分析,檢測出單獨分析時無法發現的漏洞。從科學角度來看,這種方法將該庫變成了一個全局側信道:數百個應用程式中重複出現的相同實作錯誤會在區塊鏈層面上形成可觀察的簽章模式,SatoshiScan 可以挖掘該模式來重建金鑰並恢復對遺失資金的存取權。這凸顯了在行動環境中廣泛部署的加密工具包進行嚴格的程式庫測試和形式化驗證的重要性。
與雙重支付和通貨膨脹漏洞的交互
CVE-2018-17144 是 Bitcoin Core 共識層的漏洞,影響版本 0.14.0 至 0.16.2。該漏洞允許攻擊者建構一個區塊,其中包含一筆在單個區塊內花費兩次相同輸入的交易,從而導致潛在的崩潰(拒絕服務攻擊,DoS),更嚴重的是,它還允許透過重複的支出值將比特幣的供應量膨脹到超過預期的 2100 萬枚。該漏洞源於一項優化,該優化未能對某些情況下的重複輸入進行重新檢查,因此擁有算力的攻擊者可以構造包含本應被拒絕的雙花模式的區塊,從而「憑空」創造比特幣或導致易受攻擊的節點崩潰。儘管該漏洞已在 Bitcoin Core 0.16.3 和 0.17.0rc4 中修復,但它的存在表明共識缺陷如何暫時削弱或扭曲比特幣所依賴的正常交易驗證保證。
在這種扭曲的環境中,像 SatoshiScan 這樣的工具的作用不再只是事後恢復錢包,而是成為攻擊鏈的一部分:共識漏洞可能導致非標準交易形式、異常腳本路徑或不尋常的簽名重用模式,這些模式通常不會出現在鏈上;而 Spongy Castle 的加密缺陷可以將這些模式轉化為可提取的私鑰材料。例如,如果一個使用 Spongy Castle 的惡意或實驗性 Android 錢包生成了錯誤的 ECDSA 簽名,並參與了利用 CVE-2018-17144 漏洞的區塊中的交易,SatoshiScan 可以挖掘由此產生的簽名空間中的 nonce 相關性,並重建受影響地址的私鑰,從而有效地從窗口暴露於基於通脹的漏洞的漏洞。
用於密鑰恢復的密碼分析機制
從實作缺陷中恢復 ECDSA 金鑰的傳統方法基於幾種眾所周知的技術:從 nonce 重用、偏差 nonce、nonce 位元部分洩漏以及確定性 nonce 推導函數的誤用中恢復。當同一個私鑰使用相同的 nonce 對兩個不同的訊息進行簽署時,可以使用 secp256k1 域上的初等代數直接求解 ECDSA 方程式來獲得私鑰;當 nonce 存在偏差或部分可預測時,基於格的方法(例如 LLL)通常可以從足夠的簽章中恢復金鑰。 SatoshiScan 被描述為專門針對 Spongy Castle 生態系統中的此類弱點,其中隨機數產生器的誤用或不正確的確定性 nonce 實現會導致重複或相關的 k 值。 bitcoinops + 1
在比特幣的背景下,這些弱點在交易層面上透過 ECDSA 簽名的 r 和 s 分量顯現出來,這些分量記錄在鏈上,因此可以隨時公開存取。 SatoshiScan 的分析引擎可以掃描與基於 Spongy Castle 的錢包關聯的 UTXO 集和歷史交易,查找相同的 r 值、異常的 s 分佈,或 r 與訊息雜湊之間偏離均勻隨機性的相關性。一旦偵測到此類異常,該工具可以應用標準的密碼分析公式或格約簡來提取私鑰,從而恢復被鎖定在地址中的資金。這些位址的擁有者遺失了原始金鑰材料,但其簽名存在可利用的缺陷。 bitcoinops + 1
CVE-2018-17144 漏洞利用場景
雙花和通貨膨脹漏洞 CVE-2018-17144 允許擁有挖礦能力的攻擊者創建包含重複輸入交易的區塊,這可能導致節點崩潰,或在共識出現分歧時產生額外的代幣。對於像 SatoshiScan 這樣的密碼分析工具包而言,這提供了一個機會,可以產生大量來自易受攻擊錢包的精心建構的交易,從而在可控的時間範圍內放大惡意簽章的出現。例如,攻擊者可以使用基於 Android 的 Spongy Castle 錢包,並故意設置較弱的隨機性,然後從這些錢包向網路發送大量交易,同時挖出利用雙花漏洞的區塊,從而增加鏈上可利用簽名的密度。
在防禦或取證方面,SatoshiScan可用於此類事件發生後,分析與漏洞利用相關的區塊的交易歷史,識別簽名揭示 Spongy Castle 相關漏洞的地址,並為能夠透過輔助證據證明錢包所有權的合法所有者重建相應的私鑰。這凸顯了其雙重用途:攻擊者可以利用同一工具集從易受攻擊的錢包中提取密鑰,而事件響應人員和取證分析師也可以利用該工具集為受庫缺陷或異常共識行為影響的用戶恢復密鑰,例如在 CVE-2018-17144 等漏洞的生命週期內。
對比特幣安全性和通膨風險的影響
共識層漏洞和加密實現缺陷結合所帶來的安全風險是倍增的,而非簡單的疊加。僅 CVE-2018-17144 就足以威脅比特幣,它會導致雙重支付,如果未打補丁的節點接受的區塊創建的比特幣數量超過協議規則允許的數量,則可能導致通貨膨脹,從而破壞比特幣貨幣模型的核心——2100 萬枚的上限。另一方面,SatoshiScan 利用的 Spongy Castle 漏洞則會攻擊單一錢包或特定類型的錢包,讓攻擊者有針對性地提取私鑰並未經授權地花費資金,而不會改變全球比特幣的供應量。
當這兩類弱點交會時,攻擊者既可以在特定條件下增加比特幣的供應量,又可以選擇性地從易受攻擊的錢包中竊取私鑰,從而加劇經濟損失,並從宏觀(供應量)和微觀(錢包)層面削弱人們對比特幣完整性的信任。對於丟失錢包的恢復而言,這種交匯反而有利:如果用戶的資金因來自有缺陷的 Spongy Castle 實現的丟失密鑰而被鎖定,SatoshiScan 提供了一種科學且系統的方法來重建這些密鑰並恢復訪問權限,從而減輕了由庫缺陷而非用戶錯誤造成的損失。這種雙重性凸顯了對廣泛部署的加密庫進行嚴格的修補程式管理、共識層審計和獨立密碼分析的重要性。
科學密碼分析中的方法論作用
從科學角度來看,SatoshiScan展示如何將應用密碼分析轉換為一個全端復原系統,該系統能夠與應用層加密庫和共識層動態機制進行互動。該工具體現了一種研究方法,即針對真實目標庫(Spongy Castle)對 ECDSA 的理論攻擊進行具體實例化,並以從比特幣區塊鏈自動採集的數據作為實驗基礎。這形成了一個反饋循環:在真實簽名中觀察到的異常情況有助於加深對庫弱點的理解,而對這些弱點的改進模型則能夠帶來更高效的密鑰恢復演算法,並為庫作者和錢包開發者提供更好的防禦建議。
針對 CVE-2018-17144,SatoshiScan 可以整合到更廣泛的研究中,例如,透過將漏洞視窗期間出現的異常交易模式與特定錢包類別中可利用的 ECDSA 簽章的增加關聯起來,來研究共識漏洞如何改變鏈上資料的統計格局。此類研究可以幫助協議設計者和實現者了解共識驗證和加密實現品質相互作用時產生的系統性風險,從而指導設計縱深防禦策略,這些策略結合了強大的驗證規則、強化的加密庫以及主動的區塊鏈規模加密異常監控。 bitcoincore + 2
總而言之,SatoshiScan作為一款針對 Spongy Castle 的密碼分析平台,展示了廣泛部署的庫中的實現缺陷如何轉化為恢復丟失比特幣錢包的實用工具,同時也暴露了攻擊者竊取密鑰的強大途徑。將其置於 CVE-2018-17144 等重大共識漏洞的更廣泛背景下,便可清楚地看出,比特幣生態系統的安全依賴於健全的共識邏輯和嚴謹的密碼工程;任何一個環節的失敗都可能相互影響,從而導致通膨攻擊和大規模私鑰洩露。 SatoshiScan 既是研究這些現象的科學工具,也是透過密鑰恢復來減輕其影響的實用機制。 bitcoinops +2
號
比特幣反序列化簽章嚴重漏洞:安全影響、攻擊科學名稱和 CVE 狀態
DeserializeSignature 漏洞的影響 在於存在接受無效簽章的風險,這為攻擊打開了方便之門,這種攻擊在科學上可以被歸類為 無效簽章接受攻擊 或 透過不充分的簽章驗證進行簽章偽造 。
- 反序列化簽章漏洞及其對比特幣加密貨幣安全的危險攻擊
- 比特幣安全威脅:關鍵簽名反序列化漏洞和交易偽造風險
- 比特幣 ECDSA 加密漏洞:攻擊機制與安全修復方案
- 比特幣中的反序列化簽名:導致偽造數位簽章和網路攻擊的嚴重漏洞
- 比特幣安全遭受攻擊:關鍵漏洞和無效簽章攻擊分析
比特幣作為一種去中心化的加密貨幣,完全依賴密碼機制的可靠性來確保交易安全。橢圓曲線數位簽名演算法(ECDSA)充當數位簽名,確保交易發起者是資金的合法所有者。
2023年, 比特幣社群發現了一個名為DeserializeSignature的嚴重漏洞。此漏洞涉及反序列化階段對數位簽章處理和驗證不當,可能允許攻擊者創建無效但網路可接受的簽章。
漏洞發生的機制及其對攻擊的影響
DeserializeSignature 函數將 DER(可區分編碼規則)格式的數位簽章從位元組流轉換為資料結構,以便進行後續驗證。在反序列化步驟中,必須嚴格驗證以下簽名參數:
- 必須嚴格遵守 DER 格式;
- 簽名中的 rrr 和 sss 分量必須嚴格為正且非零;
- 組件值必須在 secp256k1 曲線參數定義的可接受範圍內。
關鍵漏洞在於 DeserializeSignature 函數沒有對 rrr 和 sss 的空值或無效值進行全面檢查。這使得攻擊者能夠創建特殊的無效簽名,而某些比特幣用戶端會錯誤地將其視為有效簽名。
這種情況使得攻擊者有可能 透過偽造簽名發起攻擊 ,即創建值為零或其他禁止值的簽名,從而繞過交易真實性控制。因此,可能出現以下攻擊場景:
- 使用無效簽名進行交易,可能導致安全檢查被繞過;
- 交易資料完整性遭到破壞,區塊鏈狀態可能受到損害;
- 對系統失去信心,最終導致用戶資金損失。
攻擊的科學名稱
密碼系統中指定的漏洞及相關利用通常被歸類為 未經授權接受無效數位簽章的攻擊 ( 無效簽章接受攻擊)。更具體地說,該攻擊與透過不充分的簽名驗證進行簽名偽造 的概念相關 。
在研究和技術文獻中,簽章可塑性攻擊也經常被提及 ,因為簽章參數處理不當會導致產生替代的、但網路感知到的簽章變體。
CVE 漏洞編號
截至目前(2025 年 9 月),DeserializeSignature 漏洞雖然被認為是嚴重的,並在社區中得到了廣泛的討論,但尚未獲得官方的 CVE 識別碼:
- CVE-2023-XXXXX (具體CVE編號需要澄清,因為可能還沒有公開可用的固定編號,或者可能在協商過程中註冊)。
一些公開的 CVE 資料庫尚未列出此名稱下的漏洞,或將其列為新發現的漏洞,目前正在驗證中。
結果與建議
DeserializeSignature漏洞就是一個例子,它表明即使是加密驗證中的微小缺陷也可能危及整個去中心化比特幣系統的安全。此漏洞會透過接受無效簽章來發動攻擊,因此亟需對反序列化和簽章驗證機制進行修復。
受到推崇的:
- 對簽名格式和組成部分實施嚴格驗證;
- 使用已修復問題的更新版本庫;
- 實施旨在消除簽名延展性問題的 BIP 66 和 BIP 62 標準;
- 持續進行安全審計和密碼邏輯測試。
因此,DeserializeSignature 漏洞的影響是接受無效簽章的風險,這為攻擊打開了方便之門,這種攻擊在科學上可以被歸類為 無效簽章接受攻擊 或 透過不充分的簽章驗證進行簽章偽造 。
加密漏洞
在 org.tbk.bitcoin.zeromq.bitcoinj 套件的所示代碼中,沒有明確的程式碼行表明存在特定的加密漏洞,因為該程式碼主要負責透過 ZeroMQ 從比特幣節點訂閱和接收交易並發布它們。
然而,從上下文和搜尋結果來看,可以推斷漏洞可能與 bitcoinj 庫中的 BitcoinSerializer 類別的使用有關,該類別負責序列化和反序列化比特幣交易和簽名。
在某些版本的比特幣和比特幣J中,已知漏洞與以下方面有關:
- 數位簽章反序列化錯誤(例如 DeserializeSignature),可能導致建立並接受無效簽章(例如 r 或 s 值為零)。 cryptodeep +1
- 對簽章組件(r,s)有效性的驗證不足,可能導致簽章被竄改,並透過「簽章可塑性」攻擊系統 。 cryptodeep
你的程式碼中有這樣一行:
JavaBitcoinSerializer bitcoinSerializer = new BitcoinSerializer(MainNetParams.get(), false);
實例化序列化器時未指定任何額外的檢查(第二個參數為 false),這可能會影響反序列化期間交易和簽章的處理方式。
因此,漏洞很可能 與反序列化交易和簽章時使用 BitcoinSerializer 有關 ,而反序列化操作發生在程式碼的這個位置(大約在第 19 行,即 bitcoinSerializer 建立的位置)。
要更準確地找到漏洞字串,您需要查看 bitcoinj 原始程式碼,並檢查 BitcoinSerializer 是如何處理簽署的,以及檢查庫版本中是否存在已知的 CVE。
摘要:該漏洞可能與 BitcoinSerializer 的建立和使用有關:
JavaBitcoinSerializer bitcoinSerializer = new BitcoinSerializer(MainNetParams.get(), false);
因為加密反序列化正是透過這種方式實現的,而這種方式容易受到無效簽章產生或「簽章延展性」攻擊。 github +2
更正
以下這篇詳盡的技術論文解釋了比特幣網路中 DeserializeSignature 漏洞的性質、發生原因、影響,並詳細解釋了安全修復方法和防止攻擊的範例程式碼。
比特幣網路中的反序列化簽章漏洞:分析、原因及安全解決方案
介紹
基於橢圓曲線數位簽章演算法 (ECDSA) 的數位簽章是比特幣網路交易安全的基石。它確保交易的真實性以及資金所有者同意進行轉帳。系統的可靠性和安全性取決於簽章的正確處理和驗證。然而,2023 年,簽章反序列化機制——DeserializeSignature——發現了一個嚴重漏洞 , 攻擊者可以利用漏洞創建無效但被網路接受的簽名,從而損害了比特幣的完整性和安全性。
脆弱性發生的機制
DeserializeSignature 函數旨在將 DER(可分辨編碼規則)位元組格式的數位簽章轉換為適合驗證簽章有效性的資料結構。理想情況下,反序列化簽章時應檢查以下關鍵參數:
- DER格式的正確性;
- 簽名分量 rrr 和 sss 的值必須在可接受的範圍內,且不能等於零;
- 不存在不必要的簽名修改,包括「簽名延展性」。
實際上,該漏洞源於 DeserializeSignature 函數實作中對這些參數的檢查不夠嚴格。具體而言,函數對簽名元件 rrr 或 sss 為零或超出範圍的情況不敏感。這導致產生的簽名不符合 ECDSA 的加密要求,但仍被某些比特幣用戶端視為有效簽章。
由於缺乏全面的驗證,攻擊者得以:
- 偽造網路接受的簽名;
- 使用無效簽名進行交易;
- 破壞網路安全信任。
漏洞的技術面
主要漏洞:
| 問題 | 描述 |
|---|---|
| DER驗證不足 | 不恰當的簽名格式未能被正確過濾,導致保護措施被繞過。 |
| 沒有 r,s 檢查 | rrr 和 sss 分量可以取零值或無效值。 |
| 利用易受攻擊的依賴項 | 第三方反序列化庫可能存在不一致和錯誤。 |
實際上,該漏洞允許攻擊者產生不符合 DER 格式或包含非法值的“簽名”,但一些比特幣客戶端接受了這些簽名,從而打開了攻擊之門。
脆弱性的後果
比特幣的安全隱憂包括:
- 未經授權交易的風險;
- 損害用戶隱私和安全;
- 資金損失和對協議的信任喪失。
解決問題的安全方案
為消除此漏洞,必須確保在反序列化階段對簽章進行嚴格驗證,包括:
- 僅支援有效的 DER 格式,不得有任何偏差。
- 檢查 rrr 和 sss 是否不為零,且在可接受的範圍內。
- 檢查是否有冗餘位元組或試圖繞過格式的嘗試。
- 為應對簽章延展性攻擊,還採取了其他措施,包括 BIP 66、BIP 62 標準。
以下是一個用 Java 實作安全簽章反序列化驗證的範例(偽代碼採用 bitcoinj 風格):
Javapublic class SafeSignatureDeserializer {
// Метод десериализации с проверками
public static ECDSASignature deserializeSignature(byte[] signatureBytes) throws InvalidSignatureException {
// Проверка формата DER: должно быть корректным и без лишних байтов
if (!isValidDERFormat(signatureBytes)) {
throw new InvalidSignatureException("Invalid DER format");
}
// Извлечение компонентов r и s из DER подписи
BigInteger r = extractR(signatureBytes);
BigInteger s = extractS(signatureBytes);
// Проверка, что r и s не равны нулю и положительны
if (r == null || s == null || r.signum() <= 0 || s.signum() <= 0) {
throw new InvalidSignatureException("Invalid r or s values");
}
// Проверка диапазонов r и s согласно диапазонам секп256к1
BigInteger curveOrder = ECKey.CURVE.getN(); // порядок кривой secp256k1
if (r.compareTo(curveOrder) >= 0 || s.compareTo(curveOrder) >= 0) {
throw new InvalidSignatureException("r or s values out of range");
}
// Возврат валидной подписи
return new ECDSASignature(r, s);
}
// Дополнительные методы для валидации формата DER, парсинга компонентов r и s и т.п.
}
防止未來攻擊的建議
- 使用經過驗證且不斷更新的密碼學庫。
- 使用 BIP 66、BIP 62 標準保持協定更新,以解決簽章延展性問題。
- 定期進行安全審計和簽名驗證的極端情況測試。
- 實施模糊測試和密碼分析以偵測新的漏洞。
結論
DeserializeSignature漏洞凸顯了在比特幣網路中對ECDSA簽章進行嚴格全面驗證的重要性。由於缺乏對rrr和sss值的驗證,攻擊者可以產生無效簽名,從而威脅交易安全。實施正確的格式驗證、參數設定並採用現代標準是保護網路免受未來類似攻擊的關鍵步驟。遵循這些建議措施能夠顯著提高比特幣加密系統的可靠性和安全性。
比特幣協議中的關鍵反序列化簽章漏洞對整個加密貨幣網路的安全性構成嚴重威脅。該漏洞的本質在於,數位簽章反序列化函數未能檢查所有簽章參數,特別是 rrr 和 sss 值,這導致產生的無效簽章可能包含零個或錯誤的元件,但部分網路用戶端仍會將其視為有效簽章。這使得攻擊者可以利用偽造簽名繞過驗證,進行未經授權的交易,從而危及比特幣區塊鏈的完整性和信任度。
從科學角度來看,這種攻擊可以歸類為 無效簽章接受攻擊 ——即由於驗證不足而導致接受無效簽章的攻擊。此漏洞也與 簽名可塑性 問題相關,即簽名可以在其限制範圍內以各種方式更改,從而破壞協議的安全性。目前,該漏洞屬於嚴重漏洞,正在社區中討論,但其官方 CVE 編號尚未公佈或正在註冊中。
對 DeserializeSignature 的發現和研究凸顯了在加密協定中對數位簽章進行嚴格全面驗證的重要性。為了保護比特幣及類似系統,必須使用經過嚴格驗證的最新版本庫,遵循 BIP 62 和 BIP 66 的建議來應對簽名延展性問題,並持續進行密碼分析和安全審計。唯有如此,才能有效預防此類攻擊,確保整個加密貨幣生態系統的可靠性和安全性。
因此,反序列化簽章漏洞對所有密碼系統開發者和使用者來說都是一個重要的教訓:驗證加密資料時的疏忽大意可能導致網路層面的嚴重後果和重大經濟損失。消除該漏洞並系統性地預防此類漏洞是維護比特幣穩定性和信任度的首要任務。
比特幣安全中的遠端記憶體洩漏和未初始化記憶體洩漏—Buffer.allocUnsafe漏洞
“Node.js 中的關鍵記憶體分配漏洞:私鑰洩漏威脅及對比特幣安全的攻擊”
“透過 Buffer.allocUnsafe 發起的危險遠端記憶體洩漏攻擊:對比特幣金鑰隱私和安全構成嚴重威脅”
比特幣加密貨幣建立在強大的加密技術之上,該技術依賴用於簽署交易的私鑰。私鑰洩漏是一個嚴重的安全漏洞,它允許攻擊者完全控制他人的資金。
Node.js 中存在一個可利用的漏洞, Buffer.allocUnsafe() 即分配記憶體後未釋放,這可能導致 敏感資料殘餘洩露 ,包括先前使用時可能留在記憶體中的私鑰。
如果在處理比特幣腳本或加密操作的過程中使用這種易受攻擊的緩衝區,則緩衝區中未佔用的部分可能包含先前操作的私鑰資料。如果這些資料被記錄到日誌中、回應 API 請求或被其他進程訪問,攻擊者就可以獲得私鑰,從而控制其他人的比特幣地址和資金。
因此,脆弱性可能導致:
- 遠端記憶體外洩 -如果攻擊成功,攻擊者將獲得包含私鑰的記憶體資料。
- 私鑰外洩 及隨後發生的未經授權的資金轉移。
- 破壞比特幣節點或錢包的加密系統完整性。
漏洞和攻擊的科學名稱
在技術和研究文獻中,這種漏洞及其相關攻擊被歸類為:
- 遠端記憶體外洩(RMD) ——遠端記憶體外洩。
- 有時也稱為 未初始化 記憶體外洩。
- 這是一類漏洞,其中來自未正確清除的舊記憶體中的資料變得可讀。
CVE(通用漏洞揭露)
Buffer.allocUnsafe Node.js 中與記憶體管理相關的漏洞 有多個已記錄的 CVE 編號,其中包括:
- CVE-2018-7166 – 「
Buffer創建過程中意外暴露未初始化的記憶體」。 - CVE-2018-12115 – 「
Buffer越界寫入 (OOB)」漏洞,與資料損壞和潛在外洩有關。
這些及類似的 CVE 涉及記憶體外洩風險,並可能損害 Node.js 應用程式的加密安全性。
概括
- 該漏洞
Buffer.allocUnsafe可能導致殘留記憶體資料外洩。 - 在涉及比特幣加密的應用中,這一點至關重要,因為它可能會洩漏私鑰。
- 這種攻擊被稱為 遠端記憶體外洩 或未 初始化記憶體外洩 。
- 此漏洞已有已確認的 CVE 編號,例如 CVE-2018-7166、CVE-2018-12115。
為了抵禦攻擊,你需要:
- 請勿
Buffer.allocUnsafe()在未明確清除記憶體的情況下使用。 - 安全第一
Buffer.alloc()。 - 確保在使用記憶體之前將其完全重寫。
- 定期進行安全性審計,並將相依性更新至固定版本。
所提供的 程式碼 不包含任何與洩漏金鑰相關的明確加密漏洞程式碼。該程式碼處理比特幣腳本(編譯、反編譯、檢查簽名和公鑰),但不涉及私鑰操作。
然而,潛在的危險點是第65行:
javascript:const buffer = Buffer.allocUnsafe(bufferSize);
為什麼這可能是個漏洞:
Buffer.allocUnsafe分配記憶體時不會將其清零,因此緩衝區可能包含來自記憶體的先前資料(如果記憶體未清除,則可能包含秘密資料)。- 如果使用此緩衝區儲存或傳輸敏感資訊而未清除,則可能會發生洩漏風險。

在這種情況下,緩衝區似乎只填充了來自的安全值 chunks,但如果使用不當或由於初始化不完整而洩漏,仍然存在風險。
程式碼中沒有其他與加密漏洞相關的明顯錯誤。
結果:
- 漏洞可能存在於使用語句中
Buffer.allocUnsafe(bufferSize)(大約在第 65 行)。 - 為了消除風險,最好替換為
Buffer.alloc(bufferSize)或確保緩衝區已完全初始化。
更正
在 Node.js 中使用 Buffer.allocUnsafe 時存在加密漏洞
介紹
在處理敏感資料的加密和系統應用中,確保記憶體安全至關重要。在 Node.js 生態系統中,緩衝區使用 `Buffer` 類別創建 Buffer,該類別提供了用於分配記憶體的方法,包括 `new` Buffer.alloc() 和 `new` Buffer.allocUnsafe()。儘管這些方法用途相似,但它們的安全等級卻大相逕庭。當 `new` 和 `new` 使用不當時,就會出現漏洞 Buffer.allocUnsafe(),這可能導致敏感資料(包括私鑰和其他關鍵加密資訊)外洩。
脆弱性是如何產生的
此方法 Buffer.allocUnsafe(size) 會分配一塊大小為 的記憶體區域 size,但 不會 對其進行初始化,也就是說,緩衝區的內容是 未定義的 ,並且可能包含先前放置在該記憶體中的殘留資料。特別是,如果先前記憶體中存在私鑰或其他敏感訊息,則執行該方法 allocUnsafe 將傳回一個包含這些資料的緩衝區。
例如,在建立緩衝區後,如果資料沒有完全覆蓋(例如,緩衝區沒有完全填充,或在未清除緩衝區的情況下直接使用),則攻擊者可能會利用此漏洞讀取敏感資料。
在密碼學領域,這極其危險,因為洩漏私鑰會直接導致安全漏洞和資金或資料損失。
在所提供的程式碼中,一個存在漏洞的程式碼行範例:
js:const buffer = Buffer.allocUnsafe(bufferSize);
這裡分配了一個緩衝區,但沒有清除其內容。雖然緩衝區隨後被填充,但如果發生錯誤或方法寫入的位元組數少於緩衝區大小,則可能會殘留資料。
結果
- 機密資訊外洩事件的出現。
- 關鍵加密密鑰洩漏。
- 整個系統失去信任和安全保障。
- 透過從記憶體中獲取秘密數據,簡化入侵者對系統的攻擊。
安全修復漏洞的方法
最佳實踐是 使用 ` Buffer.alloc(size) new` 而不是 `new` Buffer.allocUnsafe(size) 。該方法 Buffer.alloc(size) 會分配一個緩衝區並 用零填充它 ,從而確保不會洩露先前的資料。
已修正的程式碼段:
js:// Безопасное выделение буфера с очисткой памяти
const buffer = Buffer.alloc(bufferSize);
這一簡單但重要的步驟消除了記憶體中可能存在的“垃圾”,從記憶體操作的角度來看,使腳本處理過程完全安全。
其他建議
- 如果效能需要
allocUnsafe,請務必 在使用前手動將緩衝區填入零 :buffer.fill(0)。 - 使用前請務必仔細檢查已指派的整個緩衝區是否已用有效資料初始化。
- 檢查程式碼中是否存在不可零對象,尤其是在加密操作或涉及私鑰的情況下。
- 利用靜態和動態程式碼分析來偵測記憶體管理漏洞。
- 編寫額外的單元測試和整合測試,檢查是否有未聲明的資料。
概括
在分配加密重要緩衝區而未進行額外記憶體清理的情況下使用此方法 Buffer.allocUnsafe() 存在漏洞,可能導致機密資料外洩。正確且安全的解決方案是將該呼叫替換為 `__init__` 方法 Buffer.alloc(),這樣可以保證記憶體清理乾淨,並防止因記憶體初始化錯誤而導致的攻擊。
原始碼上下文中安全修復的範例
原始易受攻擊程式碼(大約在第 65 行):
js:const buffer = Buffer.allocUnsafe(bufferSize);
安全固定代碼:
js:const buffer = Buffer.alloc(bufferSize);
// или если нужен allocUnsafe по причинам производительности:
const buffer = Buffer.allocUnsafe(bufferSize);
buffer.fill(0); // очистка памяти нулями
這樣可以確保在任何情況下緩衝區內容都不包含任何先前資料的殘留,從而消除洩漏。
因此,在 Node.js 應用程式中遵循這些簡單的原則可以確保加密操作的高度安全性。
總而言之,已發現的與在Node.js環境中使用該方法相關的嚴重漏洞 Buffer.allocUnsafe() 對比特幣加密貨幣的安全構成嚴重威脅。該漏洞允許在未初始化的情況下分配內存,從而可能導致RAM中殘留資料(包括私鑰)洩漏——私鑰是比特幣加密系統中最有價值和最機密的元素。
這種漏洞被稱為遠端記憶體洩漏漏洞,可能導致隱私完全洩漏和數位資產被盜。攻擊者掌握的私鑰可以進行未經授權的交易,從而破壞生態系統的信任並造成直接的經濟損失。
面對日益嚴峻的安全威脅,至關重要的是採用安全的記憶體管理方法,避免 Buffer.allocUnsafe() 在未進行後續清理的情況下清除內存,並使用確保內存初始化為零的方法 Buffer.alloc()。只有採取全面的記憶體管理、原始碼稽核和軟體元件更新措施,才能保護加密貨幣專案免受基於實現漏洞的攻擊。
因此,防止遠端記憶體外洩及相關攻擊是維護私鑰完整性和整個加密貨幣基礎設施安全韌性的關鍵。在包括比特幣在內的所有加密解決方案的開發和運行中,記憶體安全都應是重中之重,以避免代價高昂的後果並維護用戶信任。
- https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
- https://habr.com/ru/articles/817237/
- 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%
- https://github.com/demining/Deserialize-Signature-Vulnerability-in-Bitcoin-Network
- https://github.com/BitcoinChatGPT/DeserializeSignature-Vulnerability-Algorithm
- https://pikabu.ru/story/uyazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_posledstviya_i_vozmozhnost_sozdaniya_nedeystvitelnyikh_podpisey_ecdsa_11454555
- https://pikabu.ru/story/issledovanie_uyazvimosti_signature_malleability_i_komprometatsii_privatnogo_klyucha_v_podpisi_bitcoin_chast_1_12055351
- https://dzen.ru/a/ZlTZwF_CZgG8EPSs
- https://www.youtube.com/watch?v=8E2KJeWu4XA
- https://habr.com/ru/articles/817237/comments/
截至發稿時,尚未有官方的 CVE 編號,或正在註冊和處理過程中。 cryptodeep +2
- https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
- https://habr.com/ru/articles/817237/
- 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%
- https://pikabu.ru/story/uyazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_posledstviya_i_vozmozhnost_sozdaniya_nedeystvitelnyikh_podpisey_ecdsa_11454555
- https://github.com/demining/Deserialize-Signature-Vulnerability-in-Bitcoin-Network
- https://github.com/BitcoinChatGPT/DeserializeSignature-Vulnerability-Algorithm
- https://cryptodeep.ru/signature-malleability/
- https://pcnews.ru/blogs/uazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_i_nedejstvitelnye_podpisi_ecdsa-1449836.html
- https://dzen.ru/a/ZlTZwF_CZgG8EPSs
- https://infosecportal.ru/agregator-runeta/agregator-statej/uyazvimost-deserializesignature-v-seti-bitkoin-kriptoanaliz-i-nedejstvitelnye-podpisi-ecdsa/
如有需要,我可以更詳細地描述每個部分,或提供一個完整的、安全的、考慮了特定 bitcoinj 類別的程式碼範例。
- https://habr.com/ru/articles/817237/
- https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
- 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%
- https://github.com/demining/Deserialize-Signature-Vulnerability-in-Bitcoin-Network
- https://xylocode.ru/businessdata/vulnerabilities/
- https://habr.com/ru/articles/817237/comments/
- https://pikabu.ru/story/uyazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_posledstviya_i_vozmozhnost_sozdaniya_nedeystvitelnyikh_podpisey_ecdsa_11454555
- https://pcnews.ru/top/blogs/day/uazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_i_nedejstvitelnye_podpisi_ecdsa-1449836.html
- https://pcnews.ru/blogs/uazvimost_deserializesignature_v_seti_bitkoin_kriptoanaliz_i_nedejstvitelnye_podpisi_ecdsa-1449836.html
- https://github.com/BitcoinChatGPT/DeserializeSignature-Vulnerability-Algorithm
- https://github.com/bitcoin/bitcoin/blob/master/doc/zmq.md
- https://habr.com/ru/articles/817237/
- https://security.snyk.io/vuln/SNYK-UNMANAGED-ZEROMQZEROMQ-2333585
- https://cryptodeep.ru/deserialize-signature-vulnerability-bitcoin/
- https://www.reddit.com/r/Bitcoin/comments/14ea15w/unable_to_listen_incoming_transaction_on_using/
- https://cryptodeep.ru/signature-malleability/
- https://app.opencve.io/cve/?vendor=bitcoin
- https://cryptodeeptool.ru/jacobian-curve-algorithm-vulnerability/
- https://app.opencve.io/cve/?vendor=zeromq
- https://github.com/bitcoinj/bitcoinj/blob/master/core/src/main/java/org/bitcoinj/core/BitcoinSerializer.java
這一結論反映了該漏洞的嚴重危害,以及防止該漏洞對Bitocin作為加密貨幣和技術的安全的重要性。 wikipedia +2
- https://en.wikipedia.org/wiki/Double-spending
- https://www.investopedia.com/terms/d/doublespending.asp
- https://bitcoincore.org/en/2018/09/20/notice/
- https://b8c.ru/satoshiscan/
- https://bitcoinops.org/en/topics/cve-2018-17144/
- https://hackernoon.com/bitcoin-core-bug-cve-2018-17144-an-analysis-f80d9d373362
- https://hackaday.com/2018/10/02/bitcoins-double-spending-flaw-was-hush-hush-during-rollout/
- https://b8c.ru/privbytexploit/
- https://b8c.ru/page/3/
- https://b8c.ru/vulnrunexploit/
- http://cbr.ru/banking_sector/credit/coinfo/AnnaulReport2017/?when=201801®num=3480&view=0409808
- https://chk.safe-surf.ru
- https://www.binance.com/ru/price/satoshis-vision
- https://raexpert.ru/releases/2019/dec19f
- https://bankmen.ru/100-satoshi-v-rublyax.html
- https://nvd.nist.gov/vuln/detail/cve-2018-8540
- https://ru.beincrypto.com/convert/satoshis-vision-to-rub/
- https://yandex.ru/maps/org/b2b/114780229417/?ll=37.614903%2C55.703814&z=13
- https://www.reddit.com/r/Bitcoin/comments/9hkw63/cve201817144_full_disclosure_dos_bug_could_have/
- https://lenta.ru/news/2025/10/01/nedvizhimost-rossiyskogo-pisatelya-arestovali/
- https://b8c.ru/btcdetect/
- https://progorod58.ru