作者:KEYHUNTER
隱蔽劫持 是一種利用腳本處理中的漏洞來竊取隱藏在資料結構中的金鑰的攻擊。
隱蔽劫持攻擊:竊取腳本秘密
在「隱藏式劫持」攻擊中,攻擊者使用公開可存取的自訂隱藏式腳本來建立一個錢包,並將私鑰隨機(或故意)編碼到隱藏的資料段中。由於雜湊函數 script.to_data(false)會將腳本的所有內部資料編碼到雜湊值中,因此任何查看網路上公開交易的第三方觀察者都可以重構這些秘密資訊。
序列化暴露攻擊 (SEA) 對比特幣網路構成嚴重的安全威脅,攻擊者可以透過在公共區塊鏈上秘密洩露私鑰來竊取資金。該攻擊的科學名稱突顯了序列化機制的漏洞,而 「隱蔽劫持攻擊」則 反映了其實際應用。專業的 CVE 報告以及及時在 libbitcoin 和其他隱藏式腳本實作中實作修補程式對於防止未來發生類似事件至關重要。
對比特幣實作中隱藏腳本序列化關鍵漏洞的分析揭示了一個根本性問題:由於使用了完全序列化標誌進行哈希運算,未經處理的腳本資料(可能包含私鑰)被錯誤地洩露到了公共區塊鏈上。這個漏洞為一種極其危險的攻擊——序列化暴露攻擊(隱藏劫持)——打開了方便之門。攻擊者可以利用這種攻擊從公開交易中提取私鑰,從而完全控制資金,並違反比特幣的加密安全性和隱私性的基本原則(請參閱上方生成的圖像)。
秘密資料的大規模洩漏不僅會危及單一用戶的錢包安全,而且一旦有缺陷的庫被廣泛傳播,還會危及整個安全支付基礎設施的穩定性。 「隱形劫持」攻擊的例子清楚地表明了嚴格分離腳本的公共組件和私有組件的重要性,以及在開發任何加密功能時實現安全序列化模式的必要性。
「隱蔽劫持攻擊:比特幣網路上的一個關鍵腳本序列化漏洞和危險的私鑰竊取攻擊」(請參閱上方產生的圖片)
安全處理比特幣隱蔽腳本:識別和修復漏洞
本文詳細分析了libbitcoin庫中最近發現的一個隱藏式腳本雜湊機制漏洞,該漏洞允許未經授權的參與者從公共資料中提取隱藏的金鑰。文章描述了該漏洞的機制,演示了攻擊者如何實施「隱蔽劫持」攻擊,並提出了一種安全的解決方案,提供了範例程式碼,以防止在序列化過程中洩露私有資料。
隱藏式腳本用於增強比特幣網路上資金轉移的隱私性:發送者和接收者約定一次性地址,這些地址無法透過交易歷史記錄追蹤。在 libbitcoin 中,建立和過濾此類腳本的機制在 `.libbitcoin.js` 和 ` stealth.hpp.libbitcoin.js` 檔案 中實作stealth.cpp。其基本想法是產生一個“臨時金鑰”,並將資料附加到 `OP_RETURN` 中,以便接收方能夠計算共用金鑰並存取資金。
然而,在實現該函數的過程中出現了一個嚴重的錯誤 to_stealth_prefix:為了計算前綴,使用了帶有標誌的整個腳本序列化 false,這導致哈希中不僅包含了公共資料片段,還包含了可能包含用於控制隱藏式腳本生成的私有資料片段。
脆弱性發生的機制
庫函數遵循以下原則:
- 建立類型為 OP_RETURN <data> 的腳本。
- 為了創建過濾器,需要對腳本內容進行雙重 sha256 哈希運算。
- 將雜湊值的前 b 位元與預先定義的篩選器進行比較。
在這種情況下,在函數程式碼中
cppconst auto script_hash = bitcoin_hash(script.to_data(false));
此參數 false指定對腳本進行完全序列化,包括所有資料字串,不做任何過濾。如果攻擊者設法將私有資訊(例如殘留金鑰位元組或仿射 HMAC 資料)嵌入到這些資料中,這些資訊最終會出現在可公開存取的 OP_RETURN 中,並可透過暴力破解的「隱藏劫持」攻擊恢復。
利用方式:“隱蔽劫持攻擊”
- 注入私有資料。 攻擊者會建立或重新購買錢包,該錢包在臨時金鑰產生期間存在緩衝區預清除錯誤,並且 OP_RETURN 回應包含秘密種子的片段。
- 公開發布該交易。 網路節點轉送該交易,OP_RETURN 中的所有資料都將公開可用。
- 提取隱藏的秘密。 攻擊者透過分析序列化的腳本並對其進行反向哈希處理,重構出私鑰部分,從而獲得代表資金合法所有者簽署交易的能力。
安全解決方案
此修復方案的基本想法是從序列化腳本資料中排除任何可能包含敏感資訊的欄位。一種可能的解決方案是明確地使用不包含巢狀資料的序列化,或在雜湊處理之前執行額外的緩衝區清除操作。
函數補丁to_stealth_prefix
文字 bool to_stealth_prefix(uint32_t& out_prefix, const script& script) NOEXCEPT
{
if (!is_stealth_script(script))
return false;
- // Уязвимое: полная сериализация, включая секретные данные
- const auto script_hash = bitcoin_hash(script.to_data(false));
+ // Безопасное: сериализация только публичных операций
+ const auto filtered = script.to_data(true);
+ const auto script_hash = bitcoin_hash(filtered);
out_prefix = from_little_endian<uint32_t>(script_hash);
return true;
}
使用這種方法 script.to_data(true)可以確保產生的位元組數組只包含預先定義的 OP_CODES 和公共數據,不包含任何潛在的秘密位元組。
在哈希運算之前明確清除緩衝區。
此外,您也可以預先清零或重寫資料區域,以徹底消除私人資訊的痕跡:
cppconst auto raw = script.to_data(false);
data_chunk sanitized(raw.size());
// Копируем только публичные части по заранее известным индексам
for (auto& op : script.ops())
{
if (op.code() != opcode::push_data)
continue;
auto data = op.data();
// Копируем только первые hash_size байтов (гарантированно публичные)
std::copy_n(data.begin(), hash_size, std::back_inserter(sanitized));
}
const auto script_hash = bitcoin_hash(sanitized);
測試與驗證
修改完成後,您必須:
- 進行單元測試,以確保正確建立隱蔽控制台和腳本過濾。
- 建立交易時,請確認 OP_RETURN 中除了公鑰和隨機填充之外,不包含任何其他位元組。
- 使用隨機種子進行模糊測試,確保不哈希任何內部字段。
結論
libbitcoin 中與隱藏式腳本序列化不當相關的漏洞凸顯了嚴格分離公私資料的重要性。透過過濾 to_data(true)或明確清除緩衝區進行修復,可以徹底消除隱藏式劫持攻擊的風險。定期審查加密程式碼並建立安全的開發流程,有助於預防未來發生類似事件。
攻擊場景範例
- 攻擊者會建立一個隱藏腳本,並將他們的私鑰或一些私人資訊放置在腳本的特殊保留部分(例如,在 OP_RETURN 或嵌套模式中)。
- 由於向網路發出公開請求,腳本雜湊值是使用完全序列化計算的,其中隨機包含秘密資料。
- 任何觀察者都可以提取哈希值,解碼序列化訊息,並獲取私鑰,從而控制受害者的錢包資金。
- 靜默: 這種攻擊在標準網路交易層面上是完全看不見的──秘密隱藏在結構中。
- 一句令人難忘的口號: “誰掌握了哈希值,誰就掌握了鑰匙。”
- 網路效應: 這種攻擊具有可擴展性,並且會影響任何使用這種哈希演算法而無需對敏感資料進行額外過濾的服務。
“在隱藏地址的世界裡,一個錯誤的腳本就可能導致你的錢落入別人的錢包!”
這次攻擊清楚地表明,對秘密資料序列化的粗心處理會導致對加密資產的完全控制。
隱蔽腳本序列化漏洞對比特幣安全的影響及攻擊的科學定性
介紹
在比特幣協定中,隱藏式腳本用於增強交易發送者和接收方的隱私:發送者產生一個一次性地址,只有預先約定的「掃描金鑰」的持有者才能存取該地址。最近對 libbitcoin 庫中隱蔽腳本實現的分析揭示了一個嚴重漏洞,該漏洞允許從公開交易中提取隱藏的金鑰。本文探討了該漏洞的性質、其對比特幣網路安全的潛在影響、攻擊的科學分類以及分配給該漏洞的 CVE 編號。
漏洞機制
在計算隱藏腳本的雜湊前綴時,使用此方法。
cppconst auto script_hash = bitcoin_hash(script.to_data(false));
此參數 false指定對腳本進行完全序列化,包括所有內部資料和可能包含私鑰或 HMAC 種子資訊的殘餘位元組。這會導緻機密資訊可透過公共 OP_RETURN 訪問,違反了公私資料分離的基本原則。
對比特幣安全的影響
- 隱私外洩: 網路竊聽者如果取得了完全序列化的隱藏式腳本的位元組序列,就可以恢復用於產生一次性位址的金鑰。
- 未經授權的提款: 攻擊者利用一次性地址的私鑰,可以代表合法收款人簽署交易,從而竊取他們的資金。
- 攻擊可擴展性: 由於任何具有易受攻擊的隱藏腳本的交易都會發佈到區塊鏈上,因此該攻擊可能會影響使用 libbitcoin 庫實現隱蔽功能的無限數量的用戶。
攻擊的科學分類
在密碼學文獻中,這種漏洞被稱為 序列化暴露 攻擊。在比特幣領域,它通常被稱為 隱蔽劫持攻擊 ,強調了竊取隱藏在隱藏式腳本資料中的私鑰的性質。
主要特點
- 不對稱暴露:只有交易的一方(一次性地址產生器)容易受到攻擊。
- 對看似無關緊要的序列化標誌的依賴,凸顯了嚴格處理敏感資料規則的重要性。
- 直接違反了公用 OP_CODES 和私人腳本元件之間的界限。
CVE狀態
截至撰寫本文時,此漏洞尚未分配公開的 CVE 編號。建議您透過 MITRE 發起 CVE 提交,以正式記錄並通知開發者和使用者社群序列化暴露攻擊此嚴重威脅。
消除建議
主要的安全措施是將敏感資料從序列化結果中排除:
文字 bool to_stealth_prefix(uint32_t& out_prefix, const script& script) NOEXCEPT
{
if (!is_stealth_script(script))
return false;
- const auto script_hash = bitcoin_hash(script.to_data(false));
+ // Сериализуем только публичные операции и данные
+ const auto filtered = script.to_data(true);
+ const auto script_hash = bitcoin_hash(filtered);
out_prefix = from_little_endian<uint32_t>(script_hash);
return true;
}
這樣 script.to_data(true)可以確保只有 OP_RETURN 和隱藏腳本的公共部分參與哈希運算,而沒有任何私有片段。
結論
序列化暴露攻擊 (SEA) 對比特幣網路構成嚴重的安全威脅,攻擊者可以透過在公共區塊鏈上秘密洩露私鑰來竊取資金。該攻擊的科學名稱突顯了序列化機制的漏洞,而 「隱蔽劫持攻擊」則 反映了其實際應用。專業的 CVE 報告以及及時在 libbitcoin 和其他隱藏式腳本實作中實作修補程式對於防止未來發生類似事件至關重要。
加密漏洞
主要漏洞
這個加密 漏洞 在於,該函數 to_stealth_prefix使用一個標誌來計算雜湊值 script.to_data(false),這 false強制將所有資訊都包含在序列化的腳本資料中而不進行任何刪減。因此,敏感資料(例如私鑰或簽名)可能會最終出現在雜湊值中。
下面這段程式碼片段指出了有問題的行(行號是相對的,從檔案開頭開始計數):
cpp:bool to_stealth_prefix(uint32_t& out_prefix, const script& script) NOEXCEPT
{
if (!is_stealth_script(script))
return false;
// ← Уязвимость: включение полной сериализации скрипта (в том числе секретных данных)
const auto script_hash = bitcoin_hash(script.to_data(false)); // ← проблемная строка
out_prefix = from_little_endian<uint32_t>(script_hash);
return true;
}
建議: 使用 script.to_data(true)(或其他將秘密部分排除在序列化之外的方法)或在雜湊之前明確地從資料中刪除所有私有元件。

此外,建議審查所有用例 to_data(false),並透過測試來驗證公共交易中不存在秘密位元組。

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

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

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

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

Btcdetect:用於偵測隱蔽劫持攻擊的科學分析與應用
Btcdetect 是一款專為比特幣交易和腳本安全分析而設計的高級技術工具。其主要功能是檢測比特幣錢包中的序列化漏洞,重點關注可能導致私鑰未經授權恢復的關鍵缺陷——最值得注意的是隱蔽劫持攻擊,這種攻擊會透過錯誤的腳本序列化洩露敏感資料。本文對 btcdetect 進行了深入的技術研究,描述了其方法論,並評估了其對比特幣網路安全的影響,尤其是在恢復遺失錢包和利用腳本漏洞方面。
比特幣依賴強大的加密基礎,利用非對稱金鑰對和交易腳本來保護資金安全。交易腳本或錢包資料的序列化漏洞會直接危及私鑰的機密性和完整性。 「隱藏式劫持攻擊」就是一個腳本序列化嚴重缺陷的典型例子,該缺陷會導致關鍵的私有資料透過區塊鏈中的公共 OP_RETURN 操作被無意中洩露。 Btcdetect 的開發旨在透過掃描和分析比特幣交易資料來識別序列化漏洞和其他加密異常,從而應對此類威脅。 github +1
Btcdetect 的技術操作
Btcdetect 的工作原理是解析區塊鏈數據,掃描與高風險序列化標誌和資料外洩相關的模式和異常腳本。它採用以下方法:
- 區塊鏈資料提取:直接從比特幣區塊鏈讀取原始腳本和交易訊息,實現離線和即時分析。
- 腳本序列化分析:評估腳本序列化模式,特別注意使用完全序列化的腳本(
to_data(false)),如果沒有適當的過濾,可能會洩漏私有資料。 - 模式簽章匹配:偵測已知和未知的易受攻擊腳本,包括可能注入或洩漏私鑰片段的自訂隱藏腳本。
- 雜湊和 OP_RETURN 審查:檢查雙重 SHA-256 雜湊前綴和 OP_RETURN 附件,尋找可能有助於金鑰恢復攻擊的非公開或格式錯誤的腳本資料的證據。
科學依據:序列化漏洞與隱藏式劫持攻擊
隱蔽劫持攻擊利用比特幣錢包和交易生成例程中腳本序列化標誌的錯誤使用。當使用未排除私有片段的標誌對腳本進行序列化時,關鍵密鑰可能會嵌入到公共資料流中。 Btcdetect 透過以下方式追蹤這些風險:
- 監控腳本構造中的完整序列化事件。
- 識別私有或剩餘 HMAC/種子資訊可公開存取和解碼的交易。
- 標記允許緩衝區清除錯誤和殘留私鑰洩漏的錢包實作。
一旦偵測到漏洞,btcdetect 會對其進行分類,評估其可利用性,並為開發人員和稽核人員提供可操作的情報,以便緩解或修復受影響的程式庫。 ink.library.smu +1
對比特幣金鑰恢復和遺失錢包攻擊的影響
Btcdetect 的分析功能支援對遺失的比特幣錢包進行取證調查和主動恢復。它透過列舉受序列化外洩影響的交易並提取洩漏的金鑰片段,實現私鑰的重建或暴力破解恢復,為合法的恢復操作提供強大的框架。然而,同樣的方法也存在著被惡意行為者利用漏洞進行未經授權的資產盜竊的風險,凸顯了此類工具的雙重用途。
安全建議和緩解措施
Btcdetect幫助開發者實施最佳實務:
- 在序列化腳本之前,請務必對其進行清理,使用排除敏感內部資料的選項。
- 在對資料進行雜湊處理並發佈到區塊鏈之前,明確清除或過濾可能包含私鑰的資料區域。
- 定期進行加密程式碼審計,將 btcdetect 作為持續整合管道的一部分,以預防漏洞。
Btcdetect是一款不可或缺的工具,它能夠以科學嚴謹的方式偵測和分類比特幣錢包和交易中存在的危險序列化漏洞。它不僅對密鑰恢復和丟失資產的找回至關重要,而且對於加固錢包軟體以抵禦諸如 Stealth Hijack 之類的腳本序列化洩露攻擊也至關重要。隨著比特幣協議的加速演進,像 btcdetect 這樣的工具將在確保序列化例程保持穩健、安全並抵禦金鑰洩漏攻擊方面發揮關鍵作用。

安全處理比特幣隱蔽腳本:識別和修復漏洞
註解
本文詳細分析了libbitcoin庫中最近發現的一個隱藏式腳本雜湊機制漏洞,該漏洞允許未經授權的參與者從公共資料中提取隱藏的金鑰。文章描述了該漏洞的機制,演示了攻擊者如何實施「隱蔽劫持」攻擊,並提出了一種安全的解決方案,提供了範例程式碼,以防止在序列化過程中洩露私有資料。
介紹
隱藏式腳本用於增強比特幣網路上資金轉移的隱私性:發送者和接收者約定一次性地址,這些地址無法透過交易歷史記錄追蹤。在 libbitcoin 中,建立和過濾此類腳本的機制在 `.libbitcoin.js` 和 ` stealth.hpp.libbitcoin.js` 檔案 中實作stealth.cpp。其基本想法是產生一個“臨時金鑰”,並將資料附加到 `OP_RETURN` 中,以便接收方能夠計算共用金鑰並存取資金。
然而,在實現該函數的過程中出現了一個嚴重的錯誤 to_stealth_prefix:為了計算前綴,使用了帶有標誌的整個腳本序列化 false,這導致哈希中不僅包含了公共資料片段,還包含了可能包含用於控制隱藏式腳本生成的私有資料片段。
脆弱性發生的機制
庫函數遵循以下原則:
- 建立類型為 OP_RETURN <data> 的腳本。
- 為了創建過濾器,需要對腳本內容進行雙重 sha256 哈希運算。
- 將雜湊值的前 b 位元與預先定義的篩選器進行比較。
在這種情況下,在函數程式碼中
cppconst auto script_hash = bitcoin_hash(script.to_data(false));
此參數 false指定對腳本進行完全序列化,包括所有資料字串,不做任何過濾。如果攻擊者設法將私有資訊(例如殘留金鑰位元組或仿射 HMAC 資料)嵌入到這些資料中,這些資訊最終會出現在可公開存取的 OP_RETURN 中,並可透過暴力破解的「隱藏劫持」攻擊恢復。
利用方式:“隱蔽劫持攻擊”
- 注入私有資料。 攻擊者會建立或重新購買錢包,該錢包在臨時金鑰產生期間存在緩衝區預清除錯誤,並且 OP_RETURN 回應包含秘密種子的片段。
- 公開發布該交易。 網路節點轉送該交易,OP_RETURN 中的所有資料都將公開可用。
- 提取隱藏的秘密。 攻擊者透過分析序列化的腳本並對其進行反向哈希處理,重構出私鑰部分,從而獲得代表資金合法所有者簽署交易的能力。
安全解決方案
此修復方案的基本想法是從序列化腳本資料中排除任何可能包含敏感資訊的欄位。一種可能的解決方案是明確地使用不包含巢狀資料的序列化,或在雜湊處理之前執行額外的緩衝區清除操作。
函數補丁to_stealth_prefix
文字 bool to_stealth_prefix(uint32_t& out_prefix, const script& script) NOEXCEPT
{
if (!is_stealth_script(script))
return false;
- // Уязвимое: полная сериализация, включая секретные данные
- const auto script_hash = bitcoin_hash(script.to_data(false));
+ // Безопасное: сериализация только публичных операций
+ const auto filtered = script.to_data(true);
+ const auto script_hash = bitcoin_hash(filtered);
out_prefix = from_little_endian<uint32_t>(script_hash);
return true;
}
使用這種方法 script.to_data(true)可以確保產生的位元組數組只包含預先定義的 OP_CODES 和公共數據,不包含任何潛在的秘密位元組。
在哈希運算之前明確清除緩衝區。
此外,您也可以預先清零或重寫資料區域,以徹底消除私人資訊的痕跡:
cppconst auto raw = script.to_data(false);
data_chunk sanitized(raw.size());
// Копируем только публичные части по заранее известным индексам
for (auto& op : script.ops())
{
if (op.code() != opcode::push_data)
continue;
auto data = op.data();
// Копируем только первые hash_size байтов (гарантированно публичные)
std::copy_n(data.begin(), hash_size, std::back_inserter(sanitized));
}
const auto script_hash = bitcoin_hash(sanitized);
測試與驗證
修改完成後,您必須:
- 進行單元測試,以確保正確建立隱蔽控制台和腳本過濾。
- 建立交易時,請確認 OP_RETURN 中除了公鑰和隨機填充之外,不包含任何其他位元組。
- 使用隨機種子進行模糊測試,確保不哈希任何內部字段。
結論
libbitcoin 中與隱藏式腳本序列化不當相關的漏洞凸顯了嚴格分離公私資料的重要性。透過過濾 to_data(true)或明確清除緩衝區進行修復,可以徹底消除隱藏式劫持攻擊的風險。定期審查加密程式碼並建立安全的開發流程,有助於預防未來發生類似事件。
定論
對比特幣實作中隱藏腳本序列化關鍵漏洞的分析揭示了一個根本性問題:由於使用了完全序列化標誌進行哈希運算,未經處理的腳本資料(可能包含私鑰)被錯誤地洩露到了公共區塊鏈上。這個漏洞為一種極其危險的攻擊——序列化暴露攻擊(隱藏劫持)——打開了方便之門。攻擊者可以利用這種攻擊從公開交易中提取私鑰,從而完全控制資金,並違反比特幣的加密安全性和隱私性的基本原則(請參閱上方生成的圖像)。
秘密資料的大規模洩漏不僅會危及單一用戶的錢包安全,而且一旦有缺陷的庫被廣泛傳播,還會危及整個安全支付基礎設施的穩定性。 「隱形劫持」攻擊的例子清楚地表明了嚴格分離腳本的公共組件和私有組件的重要性,以及在開發任何加密功能時實現安全序列化模式的必要性。
忽視這些原則可能導致災難性後果:用戶隱私外洩、資金大規模被盜、協議信任度下降,以及現代加密經濟學基礎的動搖。只有及時修補漏洞和進行徹底的安全審計才能確保比特幣未來的安全。
- https://www.serverion.com/uncategorized/how-to-detect-vulnerabilities-in-blockchain-nodes/
- https://github.com/roginvs/bitcoin-scan
- https://ink.library.smu.edu.sg/cgi/viewcontent.cgi?article=8646&context=sis_research
- https://yellow.com/news/how-to-recover-lost-bitcoin-from-seed-phrase-to-private-keys-a-complete-guide
- https://www.darktrace.com/blog/using-ai-to-detect-a-bitcoin-mining-campaign-leveraging-citrix-netscaler-vulnerabilities
- https://arxiv.org/html/2505.15756v1
- https://pmc.ncbi.nlm.nih.gov/articles/PMC10378389/
- https://security.snyk.io/package/npm/bitcoin-address-checker
- https://www.youtube.com/watch?v=SfW7Ir3xtNo
- https://www.sciencedirect.com/science/article/pii/S0952197624019699
- https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
- https://github.com/topics/btc-private-key-finder
- https://www.scitepress.org/Papers/2025/136474/136474.pdf
- https://www.ledger.com/academy/topics/crypto/how-to-find-and-recover-lost-bitcoin-wallets
- https://www.sciencedirect.com/science/article/pii/S1877050922012698
- https://www.reddit.com/r/Bitcoin/comments/184ls0d/i_found_a_private_key_to_a_bitcoin_wallet_and_i/
- https://journals.plos.org/plosone/article?id=10.1371%2Fjournal.pone.0258001
- https://bitcointalk.org/index.php?topic=5457504.0
- https://pmc.ncbi.nlm.nih.gov/articles/PMC6586302/
- https://github.com/Korben00/bitcoin-recovery