生日攻擊和 Randstorm PRNG 攻擊——隨機數生成機制中的關鍵漏洞以及攻擊者如何恢復丟失的比特幣錢包私鑰:Randstorm 攻擊和用於生成比特幣地址的生成器 P2PKH 的弱點

作者:KEYHUNTER 

該圖清楚地表明,即使是編寫正確的 P2PKH 程式碼,在使用被篡改的依賴項或缺乏額外安全措施的情況下,也可能成為攻擊者的入口點。尤其關鍵的是,2011 年至 2015 年間創建的數百萬個錢包仍然容易受到 Randstorm 類型的攻擊,而量子威脅使得所有 P2PKH 位址在首次使用後都可能被攻破。

此視覺化圖突顯了對密碼安全分析採取整體方法的必要性,這種方法不僅要考慮程式碼質量,還要考慮整個依賴關係生態系統的安全性以及架構決策。

Randstorm 是一種複雜的加密漏洞,它源自於關鍵比特幣錢包實作中使用了弱隨機數產生器。它在科學上被歸類為…

PRNG攻擊 、  弱隨機數攻擊  或  生日攻擊

在密碼分析領域,Randstorm 沒有正式的 CVE 編號,但各個元件都有自己的編號(CVE-2020-7053、CVE-2025-27840),整個漏洞複合體可以透過 CWE-332 和 CWE-338 來反映。



“Randstorm:針對數百萬比特幣錢包的嚴重加密漏洞和攻擊威脅著全球比特幣生態系統的安全。”


87bitcoinjs-lib/blob/feat/logo-add/src/payments/p2pkh.js

關鍵加密漏洞 Randstorm 及其對比特幣加密貨幣安全的影響

比特幣加密貨幣的安全性主要取決於其私鑰產生機制的強度。歷史上,BitcoinJS JavaScript 函式庫中出現的一個漏洞導致了被稱為  「Randstorm」的事件 。該漏洞影響了 2011 年至 2015 年間創建的數百萬個錢包,並引發了透過對弱隨機數產生器進行密碼分析攻擊而導致加密貨幣資產大規模被盜的風險 


攻擊的科學分類

攻擊術語

在科學文獻中,這種類型的漏洞被稱為:

  • PRNG攻擊(弱隨機數產生器攻擊)
  • 弱隨機數攻擊(弱熵攻擊)
  • 偽隨機數產生器的 密碼分析 
  • 在一些出版物中,它被稱為  生日攻擊  (當弱熵導緻密鑰碰撞時)。 keyhunters  +2

CVE標識符

Randstorm漏洞沒有直接分配的CVE編號,因為它是由一系列錯誤和架構缺陷造成的,並非單一函式庫或函數的漏洞,也並非透過修補程式修復。正式來說,   CWE-332「偽隨機數產生器(PRNG)中的熵不足」  和  CWE-338「使用加密強度較弱的偽隨機數產生器(PRNG)」用於描述這種情況 類似的技術事件透過CVE-2025-27840和CVE-2020-7053進行分類,但它們僅描述了位址或金鑰驗證問題的個別方面,而非整個Randstorm系統。 


蘭德風暴機制

脆弱性原因

比特幣私鑰必須使用 CSPRNG(加密安全偽隨機數產生器)以最高加密強度產生。在 2011 年至 2015 年期間,JSBN 函式庫及其  SecureRandom() 函數被廣泛使用,同時  瀏覽器中Math.random() 函數的實作存在漏洞  。因此,產生的私鑰熵不足,使得攻擊者很容易預測其安全性。 

結果

  • 規模:  約 140 萬枚比特幣(價值超過 15 億至 25 億美元)有漏洞。 hackread  +2
  • 攻擊類型:  攻擊者可以利用暴力破解或密碼分析來恢復錢包的私鑰,前提是知道錢包位址。
  • 潛在漏洞:  當弱密鑰被諸如  `b8c+1`is_private_key_valid之類的函數合法化,以及位址處理(base58,CVE-2020-7053)存在錯誤 時,該攻擊複合體可能被利用。
  • 不僅限於比特幣:  狗狗幣、萊特幣和 Zcash 錢包(如果使用了 BitcoinJS)也發現了類似的漏洞。 keyhunters  +1

具體攻擊場景

  1. 透過嘗試弱選項來恢復私鑰。
  2. 透過分析易受攻擊的 JS 環境中已知的金鑰產生模式,實現自動化攻擊。
  3. 利用腳本機器人攻擊弱密鑰,導致大規模錢包被偷走。 reddit  +3

科學攻擊場景(弱隨機數攻擊)

  • 攻擊類型:  針對 ECDSA 私鑰的 PRNG 攻擊
  • 機制:由於熵源較弱,產生可預測的金鑰。
  • 科學分類:  偽隨機數產生器熵不足攻擊、生日攻擊、隨機數產生器攻擊 。 維基百科+2

標識符和術語範例

學名CVE/ CWE/ 術語描述
弱隨機數攻擊CWE-332、CWE-338熵不足攻擊  cwe.mitre+3
偽隨機數生成器攻擊針對弱偽隨機數產生器的密碼分析攻擊
蘭德斯托姆缺陷卡巴斯基+3複雜錯誤的特定技術術語  
CVE-2020-7053CVE位址解碼攻擊(base58,Randstorm 的一個方面,但並未涵蓋所有問題)   b8c
CVE-2025-27840CVE弱偽隨機數產生器的危險實現
生日攻擊一類利用熵不足導致金鑰碰撞的漏洞利用方法  keyhunters+1

對比特幣加密貨幣的影響

  • 資金損失的直接風險 :數百萬比特幣存放在易受攻擊的錢包中——可能成為大規模駭客攻擊的目標。 netizen  +4
  • 生態系的信任度下降 :使用者因擔心資金安全受到威脅而被迫轉移資金。
  • 存在回溯攻擊的可能性 :即使程式碼修復了漏洞,也無法保護過去的金鑰。即使多年以後,攻擊者仍然可以恢復洩漏的密鑰並提取資金。
  • 自動化密碼分析 :現代工具可讓您掃描區塊鏈並測試數十萬個位址的金鑰可預測性。

結論

Randstorm 是一種複雜的密碼學漏洞,由關鍵比特幣錢包實作中使用弱隨機數產生器所引起。從科學角度來看,它被歸類為偽隨機數產生器  攻擊 (PRNG Attack)  、  弱隨機數攻擊 (Weak Random Number Attack   ) 或  生日攻擊 (Birthday Attack   )。 Randstorm 目前沒有正式的 CVE 編號,但其各個組成部分都有各自的編號(例如 CVE-2020-7053 和 CVE-2025-27840),而整個漏洞群則可以透過 CWE-332 和 CWE-338 來描述。

這個錯誤表明,使用加密強度高的金鑰產生器以及持續審核所有私鑰處理工具至關重要。違反這項原則會導致加密貨幣系統大規模入侵,最終導致人們對這項技術本身失去信任。


加密漏洞

P2PKH 程式碼加密漏洞分析

在分析了提供的 P2PKH(支付到公鑰哈希)程式碼並收集了有關比特幣 JavaScript 庫中已知漏洞的資訊後,我發現了一些潛在的問題區域,儘管在這個特定的程式碼中沒有發現直接的私鑰洩露漏洞。

主要問題領域

潛在風險線

第 45-46 行:  解碼位址並提取雜湊值

javascript:


const _address = lazy.value(() => {
const payload = Buffer.from(bs58check.decode(a.address));

該區域可能容易受到無效輸入資料攻擊,但不會直接洩漏私鑰 

第 82-84 行:  從輸入中提取簽章和公鑰

javascript:

lazy.prop(o, 'pubkey', () => {
if (!a.input) return;
return _chunks()[1];
});
javascript:

lazy.prop(o, 'signature', () => {
if (!a.input) return;
return _chunks()[0];
});

這些程式碼行從交易中提取公鑰和簽名。問題不在於程式碼本身,而是  公鑰  在 P2PKH 位址首次支出後就會暴露,這使其容易受到未來的量子攻擊。 coinshares  +1

87bitcoinjs-lib/blob/feat/logo-add/src/payments/p2pkh.js
https://github.com/keyhunters/bitcoinjs-lib/blob/feat/logo-add/src/payments/p2pkh.js

連結庫的主要漏洞

1. Randstorm漏洞(2011-2015)

BitcoinJS 函式庫使用了存在漏洞的 JSBN 函式庫,由於其隨機數產生器強度不足,產生的私鑰很容易被預測。 2011 年至 2015 年間創建的數百萬個錢包仍然存在安全隱患。 卡巴斯基+2

2. 反序列化簽名漏洞

簽名反序列化函數未檢查所有參數是否正確,導致產生 R 或 S 值為零的偽造簽章。 cryptodeep  +2

3. 弱ECDSA簽名

在 ECDSA 簽章中重複使用相同的 K(隨機數)值,我們可以使用以下公式恢復私鑰:

文字:

Private key = (Z1*S2-Z2*S1)/(R*(S1-S2))

.halborn  +1

提交程式碼中存在的具體風險

無熵檢查

該程式碼沒有檢查密鑰是否弱或是否可預測。  第 75 行及之後的程式碼  依賴外部來源來取得公鑰,而沒有驗證其加密強度。

P2PKH量子漏洞

在 P2PKH 位址首次支出後,公鑰將會洩漏( 第 82-84 行 ),使該位址容易受到量子電腦攻擊。大約 25% 的比特幣都儲存在這種易受攻擊的地址中。 bitrue  +1

輸入資料驗證不足

第 20-34 行:  雖然程式碼通過 執行基本型別檢查  typeforce,但它並沒有在更深的層次上檢查金鑰和簽章的加密有效性。

安全建議

  1. 使用  具有確定性 nonce 產生功能的現代函式庫(RFC 6979)  nobsbitcoin
  2. 避免位址重複使用  以最大限度降低量子風險 coinshares+1
  3.   對輸入資料進行額外的密碼學正確性驗證
  4. 定期更新依賴項  以接收 cointelegraph+1安全修復。

值得注意的是,所提出的 P2PKH 程式碼本身並不包含直接的金鑰洩露,但其架構決策在某些操作條件下或與易受攻擊的依賴項結合使用時可能會變得容易受到攻擊。


生日攻擊和 Randstorm PRNG 攻擊——隨機數生成機制中的關鍵漏洞以及攻擊者如何恢復丟失的比特幣錢包私鑰:Randstorm 攻擊和用於生成比特幣地址的生成器 P2PKH 的弱點

Dockeyhunt 加密貨幣價格

成功恢復展示:24.67958018 BTC 錢包

案例研究概述與驗證

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

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


生日攻擊和 Randstorm PRNG 攻擊——隨機數生成機制中的關鍵漏洞以及攻擊者如何恢復丟失的比特幣錢包私鑰:Randstorm 攻擊和用於生成比特幣地址的生成器 P2PKH 的弱點

www.seedkey.ru


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

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


生日攻擊和 Randstorm PRNG 攻擊——隨機數生成機制中的關鍵漏洞以及攻擊者如何恢復丟失的比特幣錢包私鑰:Randstorm 攻擊和用於生成比特幣地址的生成器 P2PKH 的弱點

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


技術流程和區塊鏈確認

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


生日攻擊和 Randstorm PRNG 攻擊——隨機數生成機制中的關鍵漏洞以及攻擊者如何恢復丟失的比特幣錢包私鑰:Randstorm 攻擊和用於生成比特幣地址的生成器 P2PKH 的弱點

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


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


0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008b483045022100b2f8a18a774d3377b8ccce497fa80429c9c376477b8ef56ca53f33e0e7084ef802200bf14f120e36250d70a654cede6caddf204b8356f04a532878d16ea6061d24ed014104ecca78d19558794694c3cd78e8d2aa9cf4111e42b053e603b69298f9ee7695741b38f310ae49a8a33ee96dbee901d9e5759382c162f815e0a3b1b2e787e32445ffffffff030000000000000000456a437777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a202420333130323834302e32315de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a9147d8e4827a5163229e874d49dcbec75819cfd0d7188ac00000000

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


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 的發現一致。


CipherBreak:比特幣私鑰恢復中偽隨機數產生器漏洞利用的全面分析

生日攻擊和 Randstorm PRNG 攻擊——隨機數生成機制中的關鍵漏洞以及攻擊者如何恢復丟失的比特幣錢包私鑰:Randstorm 攻擊和用於生成比特幣地址的生成器 P2PKH 的弱點
https://b8c.ru/cipherbreak/


CipherBreak 是一個高階密碼分析框架,旨在偵測並利用比特幣錢包實作中使用的偽隨機數產生器 (PRNG) 的漏洞。本文闡述了 CipherBreak 的架構和方法,詳細介紹了它如何利用基於 BitcoinJS 的歷史錢包中的 RandStorm 漏洞,並探討了從 P2PKH 位址恢復私鑰的意義。討論表明,熵不足和依賴鏈受損如何使攻擊者恢復數百萬比特幣,並強調了端到端密碼安全的必要性。


1. 引言

比特幣的加密安全性是基於真正隨機的私鑰。 2011 年至 2015 年間,許多基於 JavaScript 的錢包依賴於弱偽隨機數產生器 (PRNG)——最顯著的例子是瀏覽器Math.random()和 JSBN 函式庫SecureRandom()——從而導致了所謂的RandStorm漏洞。 CipherBreak 可以自動發現低熵金鑰候選對象,讓攻擊者能夠在不直接利用核心程式碼漏洞的情況下,從 P2PKH 位址恢復私鑰。


2. CipherBreak 的設計與架構

CipherBreak 由三個主要模組組成:

  • 熵掃描器
    利用區塊鏈分析來識別在漏洞期創建的 P2PKH 位址。它交叉比對位址建立元資料和依賴關係版本,以標記潛在目標。
  • 密鑰空間縮減器
    利用Math.random()輸出的統計模型和JSBN種子模式,大幅縮小有效密鑰空間。透過重建潛在的種子狀態,它產生候選私鑰的速度比暴力破解快幾個數量級。
  • 簽名預言機
    與公開交易資料整合:一旦 P2PKH 地址被花費,公鑰和 ECDSA 簽名就會在鏈上可用。 CipherBreak 使用這些輸出透過 ECDSA 驗證來驗證候選金鑰,從而確認正確的私鑰。

3. RandStorm漏洞利用

3.1 弱隨機數生成

在有漏洞的 BitcoinJS 版本中,熵池通常包含的不可預測性不足 64 位元。 CipherBreak 的 Keyspace Reducer 透過生日碰撞分析逆向工程低熵狀態,將位址對應到可能的種子值。

3.2 依賴鏈妥協

即使經過嚴格審計的 P2PKH 代碼也可能因未打補丁的依賴項而受到攻擊。 CipherBreak持續監控 NPM 套件版本,並標記不安全的程式庫版本(例​​如,bitcoinjs-lib@2.x使用 JSBN 的版本)。攻擊者會在 CI 管線中註入惡意偽隨機數產生器 (PRNG) 覆蓋程式碼,從而確保產生的任何新錢包都存在漏洞。


4. 攻擊工作流程

  1. 目標識別:掃描區塊鏈,尋找 2011 年至 2015 年間首次使用的 P2PKH 位址。
  2. 熵分佈提取:分析位址產生模式以估計偽隨機數產生器狀態。
  3. 候選集產生:透過種子偽隨機數產生器模擬產生縮減的候選集。
  4. 交易抓取:等待首次消費以獲取公鑰和簽名。
  5. ECDSA 驗證:對每個候選金鑰進行鏈上簽署測試,直到找到正確的私鑰。
  6. 錢包恢復:使用恢復的私鑰存取和轉移所有資金。

5. 對比特幣生態系統的影響

  • 面臨風險的資金規模:超過 140 萬枚比特幣(價值超過 20 億美元)仍存放在用弱偽隨機數產生器創建的錢包中,存在安全隱患。
  • 自動化大規模攻擊:CipherBreak 的分散式架構允許殭屍網路每小時入侵數千個位址。
  • 量子加重:一旦 P2PKH 位址發布其公鑰,未來的量子安全攻擊就會變得輕而易舉,即使對於正確產生的金鑰也是如此。

6. 緩解和防禦策略

  • 棄用易受攻擊的錢包:立即遷移 2016 年之前創建的地址中的所有資金。
  • CSPRNG 強制執行:強製crypto.randomBytes()或基於硬體的熵源(HSM)。
  • 確定性隨機數產生:採用 RFC 6979 進行 ECDSA 簽名,以防止隨機數重複使用外洩。
  • 相依性稽核:整合供應鏈安全工具以驗證加密庫的完整性。
  • 位址方案演進:過渡到 SegWit Bech32 和多重簽章方案,以限制單金鑰暴露。

7. 結論

CipherBreak 事件充分展現了一個看似微不足道的偽隨機數產生器 (PRNG) 缺陷如何演變成對比特幣私鑰安全模型的系統性威脅。 CipherBreak 透過自動化漏洞偵測到私鑰復原的每個階段,使數十億美元的資產面臨風險。其核心教訓在於,密碼學安全性取決於開發和依賴生態系中最薄弱的環節。因此,必須採用整體方法——結合安全的金鑰產生、依賴關係驗證和密碼學最佳實踐——才能有效抵禦既有威脅和新興威脅。


關鍵字

CipherBreak、RandStorm、PRNG 攻擊、弱熵、生日攻擊、比特幣私鑰恢復、P2PKH、密碼分析、依賴安全。


研究論文:BitcoinJS 中的 P2PKH 加密漏洞及其安全修復方法

介紹

P2PKH(支付到公鑰哈希)是比特幣的基本阻塞方案之一,也是大多數錢包和服務的基礎。然而,早期的實現,尤其是在 2011 年至 2015 年的 BitcoinJS 庫中,存在一個與私鑰生成和公共資料外洩相關的嚴重加密漏洞。本文詳細解釋了該漏洞的性質、發生機制、攻擊後果,並提供了一個安全的漏洞修復方法以及修復後的程式碼範例 


脆弱性發生的機制

1. 弱隨機數產生器問題(Randstorm)

存在漏洞的 JavaScript 版 BitcoinJS 在產生私鑰時使用了不可靠的隨機數產生器。這導致產生的私鑰高度可預測,即使使用標準的 ECDSA 演算法,攻擊者也能透過暴力破解的方式計算出私鑰。簡言之,問題在於金鑰產生過程的熵不足,私鑰的復原速度遠超其加密複雜度所應達到的速度 

2. 公鑰外洩漏洞

在 P2PKH 位址場景中,公鑰會在地址首次支出後暴露。公鑰暴露後發送到該地址的任何後續資金都將容易受到未來的攻擊,尤其是量子攻擊。這是 P2PKH 架構的一個根本漏洞。 coinshares  +1


攻擊的後果

  • 數百萬個歷史地址(創建於 2011 年至 2015 年)的私鑰可以從已知的錢包地址中恢復。 unciphered  +1
  • 以目前匯率計算,Randstorm 威脅的資金數量超過 15 億至 25 億美元。 卡巴斯基
  • 如果攻擊者破解了私鑰或使用未來的量子駭客演算法,資產隨時可能被盜。

安全的修復方法

1. 完全拒絕易受攻擊的密鑰

必須採取的步驟是將所有資金從易受攻擊的錢包轉移到具有安全金鑰的新位址 。簡單的庫更新無法解決問題,需要重新產生金鑰。 moldstud  +3

2. 使用密碼學上安全的金鑰產生方法

  • 透過硬體安全模組 (HSM)、第三方現代加密庫或硬體錢包產生私鑰。 優先+1
  • 在程式碼中,使用具有熵保證的現代加密庫(例如,Node.js  的 原生實作 crypto.randomBytes庫  )。 attacksafe +1secp256k1

3. 應用程式安全實作模式

  • 始終使用最新版本的庫並關注安全性更新。 moldstud  +1
  • 實施地址重用保護-不要向先前已揭露的地址匯款 
  • 根據 ECDSA 標準(RFC 6979 或 Schnorr 的 RFC 8032)檢查公鑰和簽名的正確性。 coincover  +1

用於產生金鑰和建立 P2PKH 位址的安全代碼範例

javascript:

const crypto = require('crypto'); // использовать только современные реализации
const secp256k1 = require('secp256k1'); // нативная и безопасная библиотека

// Надёжная генерация приватного ключа (32 байта)
let privKey;
do {
privKey = crypto.randomBytes(32);
} while (!secp256k1.privateKeyVerify(privKey));

// Генерация публичного ключа (по умолчанию — compressed)
const pubKey = secp256k1.publicKeyCreate(privKey);

// Создание P2PKH-адреса
const sha256 = crypto.createHash('sha256').update(pubKey).digest();
const ripemd160 = crypto.createHash('ripemd160').update(sha256).digest();
// Добавление версии и контрольной суммы (mainnet = 0x00)
const versionedPayload = Buffer.concat([Buffer.from([0x00]), ripemd160]);
// Использовать безопасную библиотеку для Base58Check
const bs58check = require('bs58check');
const address = bs58check.encode(versionedPayload);

console.log('Приватный ключ:', privKey.toString('hex'));
console.log('Публичный ключ:', pubKey.toString('hex'));
console.log('P2PKH адрес:', address);
  • 至關重要的是:  這段程式碼使用安全的隨機數來產生函數,並檢查私鑰的正確性。 attacksafe  +1
  • 僅將產生的金鑰儲存在離線設備或硬體安全模組 (HSM) 中 。 優先

預防攻擊的建議

  • 切勿在線上使用 2015 年之前創建的舊錢包 。 unciphered  +1
  • 務必僅在安全的離線設備上產生新的私鑰 。  moldstud+1
  • 定期更新庫並審核程式碼及其相依性 。 moldstud  +1
  • 切換到更安全的位址選項,例如 P2SH 或 Bech32 (SegWit)  ,以降低舊模式被利用的風險。 bitcoineducation  +1
  • 請勿向先前揭露的地址(重複使用)匯款  -每次付款都必須使用新地址。 bitvault  +3

結論

舊版 P2PKH 實作中透過弱偽隨機數產生器 (PRNG) 產生私鑰的漏洞是比特幣生態系統史上最大的密碼學風險之一。要徹底解決這個問題,需要完全棄用舊密鑰,過渡到現代、成熟的密碼學工具,嚴格遵守最佳實踐,並定期進行程式碼審計。只有這樣才能徹底消除追溯攻擊的威脅,並確保數位資產的長期安全。


最終科學結論

Randstorm 加密漏洞源自於基於 BitcoinJS 的瀏覽器錢包中使用了弱隨機數產生器,這是比特幣整個生態系統面臨系統性風險的一個獨特且顯著的例子。這項關鍵軟體架構和實現的缺陷導致數百萬個錢包的私鑰可以恢復,而所需的運算資源遠低於比特幣加密安全模型所設想的水平 

Randstorm攻擊證明,即使是第一代區塊鏈,如果忽略熵生成的基本要求,也可能遭受全球性攻擊。成千上萬的用戶、服務和公司面臨資產損失的風險——並非由於數學本身的缺陷,而是由於技術開發早期階段的人為和工程失誤。這種攻擊並非僅僅是理論上的假設:加密分析師已多次成功恢復對舊錢包的訪問權限,這不僅展現了行業遭受的實際損失,也打破了去中心化金融系統堅不可摧的神話。

Randstorm 事件徹底改變了錢包的開發方式,凸顯了嚴格控制加密依賴項、僅使用經過驗證的隨機數產生器以及持續更新軟體安全性的絕對必要性。因此,加密貨幣的未來、信任度和永續性直接取決於科學的審計文化和對關鍵漏洞的回應機制——因為只有高標準的安全性才能防止像 Randstorm 這樣的災難性攻擊,並維護數位貨幣對社會的重要價值。 xakep  +5

88bitcoinjs-lib/blob/feat/logo-add/src/payments/p2sh.js

一個利用 Buffer.allocUnsafe 調用未初始化內存的加密漏洞,為比特幣生態系統中最危險的攻擊之一——私鑰和隱藏的加密保護組件洩露——打開了方便之門。該漏洞在科學上被歸類為:

“記憶體外洩攻擊”、“密鑰外洩”

該漏洞已在 CVE-2025-6545 中修復。攻擊機制是:攻擊者可以利用分配緩衝區記憶體中意外發現的殘留數據,產生具有可預測金鑰或金鑰已洩露的位址和交易。這直接導致資金被未經授權存取、資產被盜以及全球比特幣錢包大規模被盜的風險。


“關鍵緩衝區分配不安全漏洞:比特幣生態系統中的記憶體洩漏攻擊和私鑰洩漏 (CVE-2025-6545)”

該標題準確地反映了文章的要點,強調了內存洩露對比特幣加密貨幣安全可能造成的破壞性影響,並將該問題與當前的攻擊途徑以及CVE中已註冊的漏洞正式聯繫起來。 wiz  +4


Bitcoinjs-lib 中的 Buffer.allocUnsafe 嚴重加密漏洞及其對比特幣加密貨幣安全的影響

私鑰的安全儲存和加密資料的正確處理對整個比特幣生態系統至關重要。任何偏離標準方法或不可靠的實現都可能導致複雜的攻擊,進而造成錢包大規模被盜、資金損失,並損害人們對這項技術的信任。

脆弱性如何表現

流行的 JavaScript 比特幣實作(例如 bitcoinjs-lib)大量使用 Buffer.allocUnsafe 函數來處理緩衝區。它會為資料分配內存,但不會在使用前將其清除。因此,殘留資料可能會留在記憶體區域中——例如,私鑰、種子、隨機數以及應用程式其他進程中使用的其他加密敏感資訊的部分內容 

產生 P2SH(Pay-to-Script-Hash)位址時,包含秘密資料片段的未初始化緩衝區可能會寫入公共位址,發佈到區塊鏈上,從而使攻擊者能夠對其進行分析。 wiz  +2

這種攻擊的科學名稱是

在科學分類中,這類攻擊稱為:

  • 記憶體外洩攻擊  (針對記憶體外洩的攻擊) 金鑰獵手
  • 加密金鑰外洩攻擊  (加密金鑰外洩攻擊) 金鑰獵人
  • 無效私鑰攻擊  (針對無效私鑰的攻擊) 金鑰獵人
  • 隱藏數位問題攻擊是一種特殊的簽章攻擊  它允許從有缺陷或部分洩漏的資料中恢復私鑰。 

攻擊的分類和後果

潛在後果:

  • 交易篡改 :攻擊者若能取得私鑰,即可簽署虛假交易並從錢包提取資金。 attacksafe  +1
  • 大規模錢包被盜 :利用流行庫中的漏洞可能導致數百萬個帳戶被盜用。
  • 加密貨幣的信任喪失 :對生態系統構成真正的威脅,並導致用戶對整個區塊鏈領域的信任度大幅下降。

利用途徑:

  • 分析公共區塊鏈數據,  以識別異常模式和私有資料片段。
  • 利用時序和側通道攻擊  從已載入的記憶體中提取秘密資料並重新分析交易活動。 ledger  +1
  • 大量利用存在漏洞的庫  來自動入侵大量錢包。

CVE 和漏洞標準化

此漏洞已在 CVE(通用漏洞揭露)資料庫中取得專屬識別碼:

  • CVE-2025-6545   – JavaScript 金鑰和位址產生庫中的記憶體分配和初始化錯誤。 exploitdog  +2
  • 其他庫中也報告了類似的漏洞,CVE編號為CVE-2025-27840(攻擊者可以使用弱偽隨機數產生器和不充分的密鑰檢查繞過檢查)  。 keyhunters

官方 CVE-2025-6545 評估:

  • 嚴重性:對加密交易和比特幣錢包構成高風險。
  • 該漏洞允許創建可預測的、未初始化的或全零填充的金鑰,從而可能危及所有使用私鑰的操作。 github  +2

消除和預防的方法

在程式碼層面實現安全保障

存在漏洞的程式碼:

javascript:

const payload = Buffer.allocUnsafe(21); // Угроза Memory Disclosure!

已修復安全代碼:

javascript:

const payload = Buffer.alloc(21); // Память инициализирована нулями, нет утечки!
payload.writeUInt8(network.scriptHash, 0);
hash.copy(payload, 1);
const address = bs58check.encode(payload);

使用 Buffer.alloc 可以完全防止記憶體污染,避免敏感資料外洩到公鑰和地址。 deepsource  +2

其他措施:

  • 持續審核原始程式碼,並使用靜態分析器檢查記憶體洩漏和危險呼叫 
  • 在使用敏感資料結構之前,請務必明確初始化它們。
  • 修復並定期更新所有設定檔庫(bitcoinjs-lib 及其衍生庫)至最新版本,以修復 CVE 漏洞。 npmjs  +1
  • 在序列化階段控制資料結構,防止私有元件進入公用訊息。

結論

Buffer.allocUnsafe 漏洞是一個關鍵漏洞,它直接威脅比特幣和其他加密貨幣基礎設施的安全,並助長記憶體洩漏、加密金鑰洩漏和隱藏數位問題攻擊等攻擊。漏洞編號 CVE-2025-6545 反映了此問題的系統性,以及所有加密錢包使用者和軟體開發人員迅速回應的必要性。實施嚴格的記憶體清理標準、序列化安全和持續分析是保護用戶資金和比特幣生態系統未來發展的根本方法。

我們建議您立即切換到安全的方法,並定期檢查您使用的程式庫是否有 Buffer.allocUnsafe 及類似漏洞。


加密漏洞

對 P2SH 程式碼中的加密漏洞進行分析

在分析了提供的用於 Pay-to-Script-Hash (P2SH) 實現的 JavaScript 程式碼後,我發現了幾個潛在的加密漏洞,這些漏洞可能導致金鑰和私人資料外洩。

程式碼中的主要漏洞

第 49 行:使用 Buffer.allocUnsafe()

javascript:

const payload = Buffer.allocUnsafe(21);

嚴重漏洞 :此方法  Buffer.allocUnsafe() 建立了一個未初始化的記憶體緩衝區。該記憶體可能包含先前操作的殘留數據,包括潛在的敏感資訊——私鑰、隨機數或其他加密數據。 deepsource  +1

洩漏機制 :由於緩衝區在使用前未清除,記憶體中的舊資料可能會洩漏到 P2SH 交易地址中,並透過區塊鏈存取。 stackoverflow  +1

88bitcoinjs-lib/blob/feat/logo-add/src/payments/p2sh.js
https://github.com/keyhunters/bitcoinjs-lib/blob/feat/logo-add/src/payments/p2sh.js

第 45-50 行:地址處理不安全

javascript:

const _address = lazy.value(() => {
const payload = Buffer.from(bs58check.decode(a.address));
const version = payload.readUInt8(0);
const hash = payload.slice(1);
return { version, hash };
});

漏洞 :bs58check 解碼後的資料沒有經過適當的檢查。錯誤的資料可能會洩漏記憶體中的敏感資訊。 hexdocs  +1

第 56-62 行:可能透過 lazy.value 洩漏程式碼

javascript:

const _redeem = lazy.value(() => {
const chunks = _chunks();
const lastChunk = chunks[chunks.length - 1];
return {
network,
output: lastChunk === OPS.OP_FALSE ? Buffer.from([]) : lastChunk,
input: bscript.compile(chunks.slice(0, -1)),
witness: a.witness || [],
};
});

漏洞 :惰性屬性可能會創建長時間持有敏感資料引用的閉包,這可能導致透過側通道攻擊洩漏資料。 ledger  +1

第 74 行:不安全的哈希複製

javascript:

o.hash.copy(payload, 1);

漏洞 :將哈希值複製到未初始化的緩衝區可能會將敏感資料與殘留記憶體資料混合在一起。 deepsource  +1

額外的安全風險

腳本哈希碰撞攻擊

該程式碼存在腳本偽造攻擊漏洞,攻擊者可以使用相同的雜湊值替換腳本,從而繞過交易授權 

側頻道漏洞

惰性屬性和閉包可能會造成處理時間上的差異,使遠端攻擊者能夠透過時間攻擊來獲取敏感資訊。 crypto.stanford  +1

記憶體管理問題

JavaScript 中不正確的記憶體管理會導致記憶體洩漏,使得私鑰長時間處於可用狀態。 scichart  +1

糾正建議

第 49 行 :替換  Buffer.allocUnsafe(21) 為  deepsource+1Buffer.alloc(21) 以將緩衝區初始化為零。 

javascript:

const payload = Buffer.alloc(21); // Безопасная инициализация

新增檢查 :對解碼後的資料和腳本結構實施嚴格驗證:  keyhunters

javascript:

if (!payload || payload.length !== 21) {
throw new TypeError('Invalid payload length');
}

清除記憶體 :使用後明確清除敏感資料:

javascript:


if (payload) payload.fill(0);

加密驗證 :增加額外的雜湊檢查以防止碰撞攻擊。 密鑰獵手

這些漏洞對比特幣交易的安全性構成嚴重威脅,需要立即修復以防止私鑰和其他加密資料外洩。


比特幣 P2SH 中的關鍵加密漏洞 (Buffer.allocUnsafe) 及其安全修復方案

介紹

比特幣交易的安全性直接取決於金鑰和地址處理過程中加密演算法的正確實現以及記憶體管理的合理性。在用於產生 P2SH(支付到腳本雜湊)位址的 JavaScript 環境中,最危險的漏洞之一是使用 `Buffer.allocUnsafe` 函數分配 RAM 緩衝區。本文詳細分析了該漏洞的成因,闡述了其對比特幣生態系統的風險,並提出了一個標準的、安全的程式碼級修復方案。

脆弱性發生的機制

`Buffer.allocUnsafe(size)` 函數會在不將緩衝區內容初始化為零的情況下分配記憶體。因此,先前操作的片段可能會儲存在已指派的緩衝區中,包括私密金鑰、密碼以及其他執行緒或應用程式模組遺留的具有加密意義的資料。在 P2SH 實作中,這會導致一些私有資訊在未被察覺的情況下被包含在新的交易中並寫入公共區塊鏈 

易受攻擊程式碼範例

javascript:

const payload = Buffer.allocUnsafe(21); // Уязвимость!
payload.writeUInt8(o.network.scriptHash, 0);
o.hash.copy(payload, 1);
return bs58check.encode(payload);

在此構造中,會建立一個 21 位元組的未初始化緩衝區,並將網路標識符和腳本雜湊值複製到其中。剩餘記憶體可以包含發送到公共位址的其他秘密資料。 deepsource  +1

安全威脅

  • 殘留資料 :先前的私鑰和詐欺資料可能會進入新的緩衝區並洩漏到區塊鏈中。
  • 遠端記憶體外洩 :遠端攻擊者能夠分析被入侵資料的輸出,識別模式以恢復私鑰。 snyk  +2
  • 違反 PCI DSS、GDPR 和其他安全合規標準 :使用未初始化的記憶體違反了最佳安全標準 。 deepsource

解決方案:安全有效的糾正方法及範例

安全替代方案

為防止資訊洩露,應始終使用 `Buffer.alloc(size)`,它保證將緩衝區初始化為零——徹底杜絕在其中存儲任意殘留資料的可能性:  npmjs+2

安全程式碼範例(建議)

javascript:

const payload = Buffer.alloc(21); // Безопасно: память инициализирована нулями
payload.writeUInt8(o.network.scriptHash, 0);
o.hash.copy(payload, 1);
return bs58check.encode(payload);

現在整個緩衝區已被清空,任何「來自過去」的資訊都不會到達該位址。 deepsource  +2

其他建議

  • 大小和類型驗證 :在將輸入資料寫入記憶體之前對其進行驗證。
  • 使用後明確清除緩衝區 :工作完成後,將緩衝區填入零。
  • 安全測試與靜態分析 :持續進行程式碼審計,檢查記憶體洩漏,使用安全的Node.js API,進行模糊開發和堆快照分析。 habr  +1
  • 降低存取權限 :請勿將私鑰長時間儲存在 RAM 中;如果可能,請使用硬體安全模組。

強大的架構和攻擊防禦

  •   在所有生產系統和庫中 棄用 Buffer.allocUnsafe。 npmjs +2
  • 定期更新依賴項  以取得最新的安全性修復程序。
  • 自動掃描原始程式碼  以偵測不安全的記憶體使用情況。
  • 確保透明度,並告知用戶  已發現的漏洞和建議的措施。

結論

使用未初始化的內存(透過 `Buffer.allocUnsafe`)會直接洩露關鍵的加密數據,威脅到整個比特幣錢包、服務和協議系統的安全性。切換到 `Buffer.alloc` 並實施嚴格的記憶體測試和審計標準,是確保基於 Node.js 和 JavaScript 的區塊鏈系統可持續安全的必要步驟。

支援安全 P2SH 位址的代碼:

javascript:

// Безопасный вариант формирования P2SH-адреса
const payload = Buffer.alloc(21);
payload.writeUInt8(network.scriptHash, 0);
hash.copy(payload, 1);
const address = bs58check.encode(payload);

該演算法確保記憶體中不包含任何殘留數據,並徹底防止記憶體外洩和私鑰外洩的風險。只有此類方法才被認為是加密產業可靠的。 clouddefense  +3

採取安全的記憶體管理措施,實施現代標準,並定期審核程式碼,以保護使用者和生態系統免受災難性攻擊。 snyk  +3


結論:Buffer.alloc 存在不安全的關鍵漏洞,對比特幣構成威脅

一個與​​使用未初始化記憶體(透過 Buffer.allocUnsafe)相關的加密漏洞,為比特幣生態系統中最危險的攻擊之一——私鑰和加密保護隱藏組件的洩漏——打開了方便之門。該漏洞在科學上被歸類為“內存洩漏攻擊”或“密鑰洩露”,並被記錄在 CVE-2025-6545 中。攻擊機制是,攻擊者可以利用已分配緩衝區記憶體中意外發現的殘留數據,產生具有可預測或已洩露金鑰的位址和交易。這直接導致資金被未經授權存取、資產被盜以及全球比特幣錢包大規模被攻破的風險 

此類攻擊不僅會造成經濟損失,還會破壞人們對區塊鏈技術的根本信任,危及整個加密貨幣基礎設施的穩定性。在不安全庫不受控制地分發的情況下,缺乏適當的審計以及對漏洞的長期忽視可能導致災難性後果:大規模駭客攻擊、不可逆轉的損失、儲存系統和交易的破壞。

只有嚴格執行安全的記憶體管理方法、實現 Buffer.alloc、定期進行程式碼分析並積極回應最新的 CVE 標準,才能有效應對記憶體洩漏和私鑰洩漏的威脅。在瞬息萬變的數位金融領域,安全性、透明度和對這類關鍵漏洞的應對能力,對於整個比特幣生態系統而言,正成為生死攸關的問題。專業人士必須牢記:每一行不安全的程式碼都可能引發全球性的密碼學災難。發現、理解並消除此類錯誤,是加密貨幣和數位經濟未來永續發展的基石。

只有集思廣益,採取毫不妥協的網路安全措施,才能保護比特幣免受攻擊。如今,這些攻擊已經決定著數百萬人的數位資產的命運 。 keyhunters  +4


89bitcoinjs-lib/blob/feat/logo-add/src/payments/p2tr.js

當加密庫在未進行任何過濾或驗證的情況下盲目複製所有輸入屬性時,就會出現臨界質量賦值漏洞,這對比特幣加密貨幣構成根本性的安全威脅。大規模賦值攻擊可能導致私鑰和其他敏感資訊災難性地洩露,使攻擊者能夠完全且不可逆轉地存取用戶的所有數位資產。

大規模任務攻擊


臨界質量分配漏洞:比特幣生態系統面臨全面駭客攻擊和安全損失的新威脅
(文章的科學標題)
該標題充分反映了問題的規模,表明了危險的性質,強調了對整個比特幣生態系統的影響,並強調了需要採用科學的方法來保護私鑰和加密貨幣資金免受現代攻擊。


由於使用了不受控制的方法(例如  Object.assign() 在加密庫中),導致存在臨界質量賦值漏洞,該漏洞可被用來對比特幣加密貨幣基礎設施進行破壞性攻擊。


脆弱性是如何產生的以及它如何影響

在加密貨幣服務(例如錢包和用於 Taproot 地址的 P2TR 庫)中,未經過濾地批量賦值所有物件屬性通常會導致私鑰意外或故意洩露。如果攻擊者能夠取得私有資料(例如透過使用者輸入到錢包或 API 中),則被呼叫的程式碼片段  Object.assign(o, a) 會將安全性和敏感的金鑰混合在單一物件中,從而使該物件可被外部存取、記錄或重複使用。 cheatsheetseries.owasp  +1

比特幣面臨的威脅:

  • 私鑰洩漏會導致立即失去對資金的控制權以及簽署任何交易的能力。
  • 當 Taproot 中的公共資訊進行關鍵升級時,量子攻擊和區塊鏈分析的風險會增加,而機密資料的洩漏會加劇這些風險。
  • 批次記錄或序列化傳回的物件可被利用來遠端取得金鑰或執行權限提升。

科學名稱和攻擊類型

攻擊名稱:

  • 大規模賦值攻擊(Mass Assignment Attack,簡稱 Mass Assignment Attack)是f5+1 漏洞類別  的科學和工業名稱。 
  • 在文獻中,這種漏洞也被稱為  自動綁定 、  物件注入  (取決於程式語言或框架)  

CWE 和 OWASP 類別:

  • CWE-915(對動態決定的物件屬性進行不當控制的修改)
  • OWASP Top 10:API3:2019 – 大規模賦值 f5

現代定義:

  • 「批量賦值漏洞是指在未進行適當驗證/白名單處理的情況下,將輸入直接綁定到模型字段時發生的漏洞,攻擊者可以利用該漏洞覆蓋敏感屬性。」  cheatsheetseries.owasp+1

大規模分配攻擊的 CVE 編號

目前,各種應用程式中都存在批量賦值漏洞的 CVE 編號,但截至 2025 年 9 月,Bitcoin Core 或類似庫中的此類漏洞尚未獲得單獨的 CVE 編號。值得注意的是,類似的攻擊已記錄在 Web 應用程式中,例如:  nvd.nist+1

  • CVE-2024-40531   – Pantera CRM 中的批次賦值 漏洞 nvd.nist+1
  • CVE-2024-0404 –  nvd.nist   API中的批次賦值漏洞
  • 目前還沒有針對金鑰和存取加密環境中類似漏洞的公認 CVE,但 OWASP、CWE 和 NVD 社群正在積極研究該問題並對這類漏洞進行分類。

此次攻擊對加密貨幣的影響

  • 利用此漏洞  會導致資金被盜、地址失去控制權,以及能夠從其他人的錢包簽署交易。
  • 私鑰因大規模盜用而災難性地洩露,  相當於遠端存取受害者的所有資金。
  • 繞過協議限制  和 Taproot 保護並不能阻止直接私密材料的洩漏。

科學技術資源

  • [批次作業 – OWASP 速查表系列]  cheatsheetseries.owasp
  • [2025年1月13日當週漏洞總結]  cisa
  • [常見漏洞與風險 – 比特幣維基] 比特幣
  • [API 端點與批次賦值 – OWASP Top 10 指南]  f5

修復(保護)程式碼範例

JavaScriptconst SAFE_FIELDS = [
  'address', 'output', 'pubkey', 'internalPubkey', 'hash',
  'signature', 'witness', 'scriptTree', 'redeem', 'redeemVersion'
];
function filterSafeFields(obj, safeFields) {
  const filtered = {};
  for (const field of safeFields) {
    if (Object.prototype.hasOwnProperty.call(obj, field)) {
      filtered[field] = obj[field];
    }
  }
  return filtered;
}
// Безопасный возврат:
return Object.assign(o, filterSafeFields(a, SAFE_FIELDS));

結論:
大規模賦值攻擊是指未經授權對關鍵參數進行大規模賦值;這在加密貨幣協議中至關重要。利用此漏洞可能破壞用戶資金安全,公共庫和錢包需要立即遷移到允許屬性的過濾白名單機制。 ## 研究文章:大規模賦值漏洞對比特幣安全的影響 nvd.nist+2

介紹

在加密貨幣協議的軟體實作中,與用戶資料處理相關的架構漏洞對用戶安全構成特殊威脅。其中最具破壞性的錯誤之一是批量賦值——即未經篩選地自動複製所有物件屬性。在加密和區塊鏈產品中,即使單一私鑰洩漏也會導致資金全部損失。 


脆弱性是如何產生的

現代用於處理比特幣的 JavaScript 函式庫和 API 會透過  Object.assign(o, a) 建構例如 Taproot (P2TR) 結構等方式大量賦值屬性。如果開發者或攻擊者為原始物件新增私鑰、助記詞或令牌,這些資訊將自動出現在所有公共介面中。這為提取私有資訊並隨後沒收資金創造了關鍵機會。 cheatsheetseries.owasp  +1


攻擊類型和學名

這種攻擊的正式名稱是:大規模賦值
攻擊  ,
並已記錄在國際標準中:

  • CWE-915:對動態決定的物件屬性進行控制不當的修改
  • OWASP API3/2019 – 批次賦值 f5+1

根據平台/語言的不同,這可能表現為  自動綁定  或  物件注入 。 cheatsheetseries.owasp 


CVE 和產業先例

截至2025年9月,大規模挪用漏洞已被廣泛用於攻擊網路應用程式和API,但比特幣及其錢包中尚無針對此類漏洞的單獨CVE編號。不過,常見的大規模挪用漏洞已被編號:  bitcoin+1

兩者都與透過批量賦值修改敏感欄位的可能性有關。類似的威脅模型也適用於加密庫 。 cheatsheetseries.owasp


嚴重漏洞會對比特幣造成什麼影響?

  • 私鑰洩漏(將秘密屬性大量複製到公共物件)會移除所有安全性和隱私協議的限制,使攻擊者能夠簽署任何交易、提取資金和更改錢包資料。
  • 無論採用何種數位簽章演算法或定址特性(Taproot、SegWit、Legacy),此攻擊均有效。 f5  +1
  • 該漏洞透過開放 API、第三方服務和外掛程式進行擴展——一個存在漏洞的函式庫呼叫就可能導致成千上萬用戶的資金被大規模竊取。

極佳且安全的修復方法

專業級建議:
使用內建的允許欄位篩選(白名單、明確允許清單):

JavaScriptconst SAFE_FIELDS = [
  'address', 'output', 'pubkey', 'internalPubkey', 'hash', 'signature',
  'witness', 'scriptTree', 'redeem', 'redeemVersion'
];
function filterSafeFields(obj, safeFields) {
  const filtered = {};
  for (const field of safeFields) {
    if (Object.prototype.hasOwnProperty.call(obj, field)) {
      filtered[field] = obj[field];
    }
  }
  return filtered;
}
// Вместо return Object.assign(o, a):
return Object.assign(o, filterSafeFields(a, SAFE_FIELDS));

此方法將徹底杜絕私鑰和其他秘密資訊洩漏到公共輸出結構和大規模日誌記錄中 。 f5  +1


結論和建議

批量賦值是任何加密貨幣實作中都存在的一類嚴重漏洞,尤其是具有開放資料結構的 API 和 SDK。

  • 始終對輸入和輸出結構實作允許清單過濾,將私鑰排除在工作物件之外。
  • 定期審核程式碼中是否存在不受控制的賦值,尤其是在與密碼學、錢包和 API 相關的領域。
  • 請遵循 CVE 出版品和 OWASP 建議,以保持您的安全工具處於最新狀態。

批量賦值  可能導致私鑰被盜,因為伺服器程式碼或 API 錯誤地信任所有傳入數據,並在未過濾關鍵字段的情況下盲目地將其複製到敏感物件 

攻擊原理

  • 攻擊者在請求中發送了額外的參數(例如,欄位  privateKey 或  secretKey),這些參數不應該被伺服器處理,但內部程式碼透過批量賦值的方式分配了所有屬性 
  • 由於缺少白名單過濾,私鑰成為系統傳回或記錄的使用者物件的一部分。
  • 如果處理後的物件被序列化、記錄日誌、透過 API 匯出或被重複使用,攻擊者就可以完全存取私鑰。 

典型攻擊路徑

  1. 攻擊者建立或修改 API 請求,包括  privateKey
  2. 伺服器使用批量賦值模式(例如  Object.assign(o, a)),將所有輸入欄位分配給對象,不包括私鑰。
  3. 私鑰會傳回前端或儲存在資料庫中,攻擊者可以透過進一步的 API 呼叫、匯出、錯誤或日誌來取得私鑰。
  4. 攻擊者一旦獲得私鑰,就可以簽署交易或從帳戶中竊取資金 

解決方案

  • 在伺服器端,始終需要明確定義(白名單)可接受的屬性列表,忽略或封鎖此列表以外的任何欄位。
  • 所有涉及敏感資料(金鑰、餘額、權限)的操作都必須經過嚴格的驗證和安全審計 

加密漏洞

P2TR程式碼加密漏洞分析

在仔細分析所提供的函數程式碼  p2tr 並檢查與其相關的安全措施後,發現  主要的加密漏洞位於第 286 行:

javascript:

return Object.assign(o, a);

脆弱性的本質

這行程式碼  可能透過批量賦值機制洩漏敏感資料 。此函數  Object.assign() 會盲目地將來源物件的所有屬性複製  a 到目標對象,  o 而不會對敏感欄位進行任何篩選或驗證。 barracuda  +4

89bitcoinjs-lib/blob/feat/logo-add/src/payments/p2tr.js
https://github.com/keyhunters/bitcoinjs-lib/blob/feat/logo-add/src/payments/p2tr.js

洩漏機制

如果開發者誤將  a 私鑰或其他秘密資料(例如,金鑰  privateKey、  secretKey金鑰  seed或內部加密資料)傳遞給參數,則這些資料將毫無限制地包含在傳回的物件中。 lrqa  +1

易受攻擊的使用範例:

javascript:

const paymentData = {
internalPubkey: publicKeyBuffer,
privateKey: privateKeyBuffer, // ОПАСНО: приватный ключ
seedPhrase: "word1 word2 ...", // ОПАСНО: мнемоническая фраза
// другие данные
};

const p2trPayment = p2tr(paymentData, opts);
// p2trPayment теперь содержит приватный ключ и seed!

Bitcoin Taproot 的風險

在比特幣 Taproot (P2TR) 的背景下,此漏洞尤其嚴重,因為:

  1. P2TR 已經容易受到量子攻擊  ——Taproot 交易中的公鑰在區塊鏈上是可見的,這使得它們容易受到長期量子攻擊 chaincode+2
  2. 私鑰洩漏  可能導致 river+1 用戶資金完全被盜。
  3. 由於缺乏過濾  機制,任何透過 API 傳遞的敏感資料都可供外部 barracuda+1 元件存取。

結果

  •   由於API使用不當導致私鑰直接外洩。
  •   密碼材料(種子、內部狀態)洩露
  • 違反 aws.amazon+1 最低資料暴露原則
  •   記錄或序列化 mbloging+1 物件時存在資金被盜的風險

糾正建議

不要盲目複製所有屬性,而應該使用  明確篩選 :

javascript:


// Вместо: return Object.assign(o, a);
// Использовать:
const allowedFields = ['address', 'output', 'pubkey', 'internalPubkey',
'hash', 'signature', 'witness', 'scriptTree', 'redeem'];
const filtered = {};
allowedFields.forEach(field => {
if (a[field] !== undefined) {
filtered[field] = a[field];
}
});
return Object.assign(o, filtered);

此漏洞是違反加密 API 中最小權限原則的典型範例    ,其中函數傳回的資料量超過了安全性操作所需。 cheatsheetseries.owasp  +2


🔴 漏洞點:  程式碼行  return Object.assign(o, a); -所有物件屬性不受控制地複製發生的位置

⚠️ 洩漏風險:  此圖顯示了私鑰、種子和其他秘密資料如何可能被無意中包含到最終物件中。

🛡️比特幣 Taproot 的影響:   P2TR 交易對量子攻擊的特殊漏洞使得私鑰洩漏變得至關重要

🔒 防護措施:  可視化過濾和驗證輸入資料的必要性

該研究圖表表明,即使加密程式碼中存在微小的架構缺陷,也可能對比特幣錢包和用戶資金的安全造成災難性後果。

您好。我提議撰寫一篇科學文章,詳細解釋密碼庫中批量賦值漏洞的本質,並根據現代最佳實踐提供一種安全的消除方法。


Bitcoin Taproot (P2TR) 大規模賦值加密漏洞:原因、風險與安全性修復

註解

本文以比特幣協定的 P2TR 函數實作為例,探討了密碼庫中批次賦值的具體細節和風險。文章分析了一個導致私鑰嚴重洩漏的特定設計錯誤(使用了 Object.assign 方法),提供了利用該錯誤的範例,並提出了一個原始程式碼層級的安全解決方案。此外,文章還概述了防止未來發生類似攻擊的建議。


漏洞產生的原因:批量分配機制

加密庫通常提供靈活的 API 用於開發。然而,JavaScript 語言的便利性和動態性導致了批量賦值模式的廣泛應用——使用 `__getitem__` 這樣的方法自動將輸入物件的所有屬性複製到輸出結果中  Object.assign。如果結構體包含私鑰、助記詞和其他秘密數據,這種方法是不安全的,因為執行過程  Object.assign(o, a) 會將輸入物件的所有屬性都包含在最終物件中  ——包括關鍵秘密訊息,如果這些資訊意外或錯誤地包含在輸入a 資料中。 

典型的易受攻擊程式碼片段:

javascript:

return Object.assign(o, a); // Массовое копирование всех свойств, включая приватные данные

例如,如果  a 該屬性存在於某個位置 privateKey,則會自動洩漏。在加密貨幣錢包的背景下,這可能意味著用戶對其資金的控制權完全喪失。


脆弱性影響的科學分析

這種錯誤會造成根本性的風險:

  • 私鑰洩漏會導致用戶資金控制權的永久喪失,無論採用何種數位簽章演算法。
  • Taproot 協議承諾的隱私性並未實現——任何使用無效資料呼叫函數的人都會收到內部金鑰。
  • 在大規模使用(SDK/庫)的情況下,這種攻擊會導致多個錢包和服務鏈遭到入侵(例如,記錄完整的 JSON 物件時)。 securityboulevard  +1

批量賦值是 CWE-915 類漏洞(動態確定物件屬性的不當控制修改)的變體,在 Web 安全性領域(OWASP Top 10)中經常被利用。 cheatsheetseries.owasp  +1


最佳實踐與修復:安全模式

解決方案是  嚴格限制允許傳輸的屬性清​​單 。為此,需要建立一個“白名單”,並且只有預先定義的欄位才會包含在最終物件中。

安全模式:

javascript:

// Список полей, которые разрешено переносить
const SAFE_FIELDS = [
'address', 'output', 'pubkey', 'internalPubkey', 'hash',
'signature', 'witness', 'scriptTree', 'redeem', 'redeemVersion'
];

function filterSafeFields(obj, safeFields) {
const filtered = {};
for (const field of safeFields) {
if (Object.prototype.hasOwnProperty.call(obj, field)) {
filtered[field] = obj[field];
}
}
return filtered;
}

// Вместо Object.assign(o, a):
return Object.assign(o, filterSafeFields(a, SAFE_FIELDS));

這段程式碼確保私鑰、助記詞和其他機密資料不會被未經授權的人透過外部介面存取。 lrqa  +1


長期安全方面的綜合建議

  •   對於聚合到公共結構的數據,請務必引入明確的白名單。
  • 避免透過通用函數參數傳遞金鑰,應使用具有最嚴格控制的獨立通道/介面進行金鑰傳遞。
  • 在 API 和文件層面,明確說明函數處理私人資料和公用資料的行為,並實作批量賦值的靜態程式碼分析 。 plai.ifi.lmu
  • 定期進行實施審計,並專注於使用者資料結構的處理。

結論

本文提出的批量賦值漏洞是一種普遍存在且危險的架構缺陷,在加密貨幣和區塊鏈環境中尤其嚴重。使用白名單機制可以從根本解決問題,是安全開發加密 API 和函式庫的必要條件。


最終科學結論

當加密庫在未進行任何過濾或驗證的情況下盲目複製所有輸入屬性時,就會出現臨界質量賦值漏洞,這對比特幣加密貨幣構成根本性的安全威脅。大規模賦值攻擊可能導致私鑰和其他敏感資訊災難性地洩露,使攻擊者能夠完全且不可逆轉地存取用戶的所有數位資產。

利用此漏洞可以繞過區塊鏈的所有架構和協議機制,包括 Taproot 和 SegWit 等現代改進措施,從而立即剝奪用戶對其資金的控制權。大規模資金挪用直接破壞了人們對加密 API 的信任,使即使是最先進的錢包也成為攻擊的易受攻擊目標,並可能造成無法預料的後果。

隨著區塊鏈在全球金融領域日益融合,應對此類架構缺陷已不再只是一種安全技術,而是關乎整個生態系統合法性的維護。若不全面實施嚴格的輸入資料過濾和定期的原始碼審計,每位比特幣參與者都可能成為最具破壞性攻擊的受害者,而這種攻擊會動搖加密貨幣的根本原則——安全性、獨立性和信任度。

大規模分配不僅是一個漏洞,而且是整個加密貨幣社群面臨的全球性挑戰,需要科學的方法、技術紀律和安全工具的不斷改進。


  1. https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_2_129995184999951
  2. https://polynonce.ru/libbitcoin/
  3. https://www.coindesk.com/ru/tech/2020/09/09/high-severity-bug-in-bitcoin-software-revealed-2-years-after-fix
  4. https://polynonce.ru/bcoin/
  5. https://forklog.com/exclusive/vojna-za-p2sh-kak-zavershilas-pervaya-bolshaya-bitva-razrabotchikov-bitkoina
  6. 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%
  7. 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
  8. https://cryptodeep.ru/publication/
  9. https://habr.com/ru/articles/771980/
  10. https://habr.com/ru/articles/773412/
  11. https://www.wiz.io/vulnerability-database/cve/cve-2025-6545
  12. https://keyhunters.ru/weak-key-attacks-secret-key-leakage-attack-critical-vulnerability-in-private-key-serialization-and-dangerous-signature-forgery-attack-a-threat-to-bitcoin-cryptocurrency-security/
  13. https://keyhunters.ru/attack-on-private-key-exposure-we-will-consider-exploiting-errors-that-allow-obtaining-a-private-key-this-is-a-very-dangerous-attack-on-bitcoin-wallets-through-is-a-very-dangerous-attack-on-bitcoin-wallets-through-an-opcode-numbering-coerror-n-bitcoin-n-bit-gough-an-opcode-numbering
  14. https://deepsource.com/directory/javascript/issues/JS-D025
  15. https://deepsource.com/directory/javascript/issues/JS-D026
  1. https://stackoverflow.com/questions/55805843/what-is-the-case-of-using-buffer-allocunsafe-and-buffer-alloc
  2. https://deepsource.com/directory/javascript/issues/JS-D025
  3. https://deepsource.com/directory/javascript/issues/JS-D026
  4. https://hexdocs.pm/bitcoin/Bitcoin.Base58Check.html
  5. https://snyk.io/blog/exploiting-buffer/
  6. https://www.npmjs.com/package/safe-buffer
  7. https://www.clouddefense.ai/code/javascript/example/bs58check
  8. https://habr.com/en/articles/880798/
  9. https://www.bacancytechnology.com/blog/node-js-memory-leaks
  10. https://nvd.nist.gov/vuln/detail/CVE-2018-7167
  11. http://paper.ijcsns.org/07_book/202112/20211230.pdf
  12. https://ethglobal.com/showcase/polaris-dac2c
  13. https://dev.to/alex_aslam/memory-leaks-in-nodejs-how-we-hunted-down-and-fixed-a-2gb-leak-in-production-2knk
  14. https://surface.syr.edu/cgi/viewcontent.cgi?article=1095&context=eecs
  15. https://dash.harvard.edu/bitstreams/7312037c-8ef9-6bd4-e053-0100007fdf3b/download
  16. https://stackoverflow.com/questions/52165333/deprecationwarning-buffer-is-deprecated-due-to-security-and-usability-issues
  17. https://dockeyhunt.com/enhancing-bitcoin-transactions-with-bitcoinjs-lib-a-comprehensive-overview/
  18. https://www.cobalt.io/blog/node-js-vulnerabilities
  19. https://github.com/stdlib-js/buffer-alloc-unsafe
  20. https://github.com/bitcoinjs/bitcoinjs-lib
  21. https://stackoverflow.com/questions/5733665/how-to-prevent-memory-leaks-in-node-js

  1. https://deepsource.com/directory/javascript/issues/JS-D025
  2. https://deepsource.com/directory/javascript/issues/JS-D026
  3. https://stackoverflow.com/questions/55805843/what-is-the-case-of-using-buffer-allocunsafe-and-buffer-alloc
  4. https://hexdocs.pm/bitcoin/Bitcoin.Base58Check.html
  5. https://mojoauth.com/binary-encoding-decoding/base58-with-nodejs/
  6. https://www.ledger.com/academy/series/enter-the-donjon/episode-2-side-channel-attacks
  7. https://crypto.stanford.edu/timings/paper.pdf
  8. https://keyhunters.ru/script-forgery-attack-redeem-script-witness-script-replay-or-substitution-attack-critical-vulnerability-in-bitcoin-p2sh-p2wsh-script-processing-threat-of-cryptographic-forgeryand-ack-ack——
  9. https://www.scichart.com/blog/debugging-javascript-webassembly-memory-leaks/
  10. https://www.trevorlasn.com/blog/common-causes-of-memory-leaks-in-javascript
  11. https://bitcoincashresearch.org/t/p2sh32-a-long-term-solution-for-80-bit-p2sh-collision-attacks/750
  12. https://www.nccgroup.com/us/research-blog/a-brief-review-of-bitcoin-locking-scripts-and-ordinals/
  13. https://discovery.ucl.ac.uk/10060286/1/versio_IACR_2.pdf
  14. https://www.qrypt.com/FAQ/what-are-the-quantum-threats-to-cold-storage-and-p2sh-or-p2pkh-in-crypto-wallets/
  15. https://en.bitcoin.it/wiki/Pay_to_script_hash
  16. https://christian-rossow.de/publications/btcsteal-raid2018.pdf
  17. https://coinshares.com/dk-en/resources/research/quantum-securing-bitcoin-really-isn-t-that-hard/
  18. https://www.certik.com/resources/blog/exploring-psbt-in-bitcoin-defi-security-best-practices
  19. https://www.reddit.com/r/CryptoCurrency/comments/1lp46ol/private_key_leaked_in_web3_app_i_made/
  20. https://en.bitcoin.it/wiki/Common_Vulnerabilities_and_Exposures
  21. https://komodoplatform.com/en/academy/p2sh-pay-to-script-hash/
  22. https://bitcointalk.org/index.php?topic=5352665.20
  23. https://papers.ssrn.com/sol3/Delivery.cfm/SSRN_ID3184130_code2090306.pdf?abstractid=3184130&mirid=1
  24. http://bitcoinwiki.org/wiki/pay-to-script-hash
  25. https://stacker.news/items/781356
  26. https://forklog.com/en/chaincode-labs-sizes-up-the-quantum-threat-to-bitcoin/
  27. https://trezor.io/learn/advanced/standards-proposals/pay-to-script-hash-p2sh
  28. https://github.com/topics/private-key
  29. https://learnmeabitcoin.com/technical/script/p2sh/
  30. https://en.bitcoin.it/wiki/Allprivatekeys
  31. https://attacksafe.ru/bitcoinjs-lib/
  32. https://forklog.com/en/the-battle-for-p2sh-how-the-first-major-bitcoin-developer-war-ended/
  33. https://www.coinglass.com/news/15292
  34. https://blog.appsignal.com/2022/09/28/minimize-heap-allocations-in-nodejs.html
  35. https://github.com/pastelnetwork/bitcoinjs-lib-pastel
  36. https://cointelegraph.com/news/5-strategies-to-mitigate-side-channel-attacks
  37. https://bun.com/blog/debugging-memory-leaks
  38. https://bitcointalk.org/index.php?topic=5270543.0
  39. https://thesis.dial.uclouvain.be/entities/masterthesis/d70f0610-b0a7-47a9-9326-de3c9fbfe9ef
  40. https://stackoverflow.com/questions/50251965/nodejs-memory-leak-with-buffers
  41. https://www.reddit.com/r/crypto/comments/xn9how/how_practical_are_side_channel_attacks/
  42. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Memory_management
  43. https://www.binance.com/en/square/post/1161291
  44. https://stackoverflow.com/questions/50069628/how-to-generate-a-nonce-in-node-js
  45. https://github.com/pocketbase/pocketbase/discussions/4530
  46. https://www.npmjs.com/package/bs58check-ts
  47. https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/nonce
  48. https://pypi.org/project/base58/
  49. https://nodejs.org/api/buffer.html
  50. https://dev.to/icesofty/understanding-the-concept-of-the-nonce-sha3-256-in-a-blockchain-with-nodejs-205h
  51. https://snyk.io/blog/exploiting-buffer/
  52. https://nodejs.org/api/crypto.html
  53. https://github.com/bitcoinjs/bs58check/issues
  54. https://www.wiz.io/vulnerability-database/cve/cve-2025-6545
  55. https://www.reddit.com/r/node/comments/1c2dulv/whats_so_dangerous_about_nodejs_cryptography/
  56. https://stackoverflow.com/questions/4395706/base64-encoding-that-doesnt-use-plus-or-equals-characters
  57. https://github.com/stdlib-js/buffer-alloc-unsafe
  58. https://github.com/nodejs/node/issues/52131

  1. https://deepsource.com/directory/javascript/issues/JS-D025
  2. https://deepsource.com/directory/javascript/issues/JS-D026
  3. https://www.wiz.io/vulnerability-database/cve/cve-2025-6545
  4. https://attacksafe.ru/bitcoinjs-lib/
  5. https://keyhunters.ru/weak-key-attacks-secret-key-leakage-attack-critical-vulnerability-in-private-key-serialization-and-dangerous-signature-forgery-attack-a-threat-to-bitcoin-cryptocurrency-security/
  6. https://keyhunters.ru/attack-on-private-key-exposure-we-will-consider-exploiting-errors-that-allow-obtaining-a-private-key-this-is-a-very-dangerous-attack-on-bitcoin-wallets-through-is-a-very-dangerous-attack-on-bitcoin-wallets-through-an-opcode-numbering-coerror-n-bitcoin-n-bit-gough-an-opcode-numbering
  7. https://www.ledger.com/academy/series/enter-the-donjon/episode-2-side-channel-attacks
  8. https://exploitdog.ru/cve/github/GHSA-h7cp-r72f-jxh6
  9. https://vulnerability.circl.lu/vuln/ghsa-h7cp-r72f-jxh6
  10. https://github.com/advisories/GHSA-h7cp-r72f-jxh6
  11. https://www.npmjs.com/package/safe-buffer
  12. https://habr.com/en/articles/880798/
  13. http://nodesource.com/blog/node-js-security-release-summary-august-2018/
  14. https://arxiv.org/html/2503.16248v3
  15. https://github.com/advisories/GHSA-7mc2-6phr-23xc
  16. https://keyhunters.ru/critical-vulnerabilities-of-private-keys-and-rpc-authentication-in-bitcoinlib-analysis-of-security-risks-and-attack-methods-on-bitcoin-cryptocurrency/
  17. https://nvd.nist.gov/vuln/detail/CVE-2025-38079
  18. https://securelist.com/lazarus-apt-steals-crypto-with-a-tank-game/114282/
  19. https://attacksafe.ru/ultra/
  20. https://www.wiz.io/vulnerability-database/cve/cve-2025-22874
  21. https://www.sciencedirect.com/science/article/pii/S0167404820303886
  22. https://src.opensuse.org/nodejs/nodejs16/commit/1272fd04b8dd367f23f438d366f905c90b3488c38d0c61cd43cac7ece7691ce0
  23. https://en.wikipedia.org/wiki/WannaCry_ransomware_attack
  24. https://github.com/bitcoinjs/tiny-secp256k1/security/advisories/GHSA-7mc2-6phr-23xc
  25. https://cryptodeeptech.ru/private-key-debug/
  26. https://www.kaspersky.ru/blog/vulnerability-in-hot-cryptowallets-from-2011-2015/36592/

 密碼分析

By