摘要

這份研究報告對 DarkSword 漏洞攻擊鏈進行了全面的技術分析,這是一套於 2025 年底被識別出的多階段 iOS 漏洞套件。該漏洞攻擊鏈利用了六個不同的漏洞,包括 JavaScriptCore ANGLE 中的零時差記憶體毀損 Bug,能夠在 iOS 18.4 至 18.7 版本上實現完整的裝置入侵。與過去的漏洞利用工具包不同,DarkSword 在所有階段都僅使用純 JavaScript,藉由在 JavaScript 執行環境內運作,有效繞過了現代的硬體層級緩解機制,如 Pointer Authentication Codes (PAC) Page Protection Layer (PPL) 。此報告詳細說明了感染途徑、多層次沙箱逃逸機制,以及 Final-stage payload 的架構設計。

iOS用戶注意!DarkSword攻擊鏈利用JavaScriptCore與ANGLE漏洞,無須點擊即可植入後門 | 資訊安全新聞

1. 簡介

隨著模組化漏洞利用框架的出現,行動裝置監控領域已有了顯著的演變。DarkSword 代表了這種演變的頂峰,其特點在於跨攻擊者群體的廣泛散佈和技術上的強健性。由 Google Threat Intelligence Group (GTIG) 發現,DarkSword 已被多個商業監控軟體供應商和威脅組織所採用 [1] 。該漏洞攻擊鏈的主要創新點在於,它僅使用 JavaScript 的邏輯就能執行完整的攻擊鏈——從初始的遠端程式碼執行(RCE)到核心層級的權限提升 [1] 。這種方法將在目標系統上的痕跡降到最低,並使傳統利用二進位檔案的檢測機制變得難以偵測。

2. 感染途徑與初始傳遞

DarkSword 的感染過程通常始於「水坑攻擊」("watering hole" attack)或透過社交媒體主題進行的目標釣魚誘餌。一個值得注意的傳遞機制涉及一個模仿 Snapchat 主題的登入頁面,該頁面利用 JavaScript 混淆技術來隱藏其惡意意圖。初始階段會檢查是否存在 uid 的 session storage 鍵值,以防止重複感染同一台裝置 [1]

graph TD A[Victim visits Malicious URL] --> B{Check Session Storage 'uid'} B -- Not Set --> C[Inject IFrame 'frame.html'] B -- Set --> D[Redirect to Legitimate Site] C --> E[Load 'rce_loader.js'] E --> F[Fetch RCE Exploit via XMLHttpRequest] F --> G[Initialize Web Worker for Exploit]

以下程式碼片段展示了用於觸發漏洞攻擊鏈的初始邏輯。它展示了如何使用 sessionStorage 來追蹤受害者,以及動態建立 iframe 來載入下一個階段:

  1. // Figure 1: Initial landing page logic for exploit triggering
  2. // This script checks if the user has been infected and initiates the chain
  3. if (!sessionStorage.getItem("uid") && isTouchScreen) {
  4. // Mark the session to avoid re-infection
  5. sessionStorage.setItem("uid", '1');
  6. // Create a hidden iframe to load the next stage (frame.html)
  7. const frame = document.createElement("iframe");
  8. frame.src = "frame.html?" + Math.random(); // Use random to bypass cache
  9. frame.style.height = 0;
  10. frame.style.width = 0;
  11. frame.style.border = "none";
  12. document.body.appendChild(frame);
  13. } else {
  14. // Redirect to a decoy page if already infected or not a touch device
  15. top.location.href = "redacted_decoy_url";
  16. }

3. 透過 JavaScriptCore 實現遠端程式碼執行 (RCE)

DarkSword RCE 階段的核心目標是 JavaScriptCore (JSC) ,即 Safari 瀏覽器所使用的引擎。根據 iOS 版本的不同,會利用兩個主要的漏洞:針對 18.6 之前版本的 CVE-2025-31277 (JIT optimization Bug),以及針對 18.6 至 18.7 版本的 CVE-2025-43529 (DFG JIT 層中的垃圾回收 Bug) [1] 。這些漏洞允許攻擊者建構 addrof fakeobj 基本功能,這對於實現任意的記憶體讀取/寫入能力至關重要。

此外,該漏洞利用還整合了 dyld 中的使用者模式 Pointer Authentication Code (PAC) 繞過漏洞(CVE-2026-20700)。這對於在 WebContent 程序的環境中執行程式碼至關重要,因為 PAC 的設計初衷是透過對指標進行簽章來防止控制流劫持(The hijacking of control flow) [1] 。近期針對 Apple 硬體架構的研究,特別是 FLOP SLAP side-channel 漏洞,突顯了推測執行中存在的固有風險,這些風險可能在被攻擊者在實現完整 RCE 之前,就透過 JavaScript 洩漏敏感資料 [2]

4. 多層次沙箱逃逸

DarkSword 採用了一個複雜的兩步驟沙箱逃逸方法來接觸核心。第一步是使用 CVE-2025-14174 ,這是 ANGLE 圖形函式庫中的一個超出邊界寫入漏洞(Out-of-bounds vulnerability),藉此從 WebContent 沙箱逃逸到 GPU process [1]

graph LR subgraph "User Space" WC[WebContent Process] -- CVE-2025-14174 --> GPU[GPU Process] GPU -- CVE-2025-43510 --> MP[mediaplaybackd] end subgraph "Kernel Space" MP -- CVE-2025-43520 --> K[Kernel Privilege] end

第二步則是從 GPU process 轉向 mediaplaybackd ,這是一個具有較高權限的系統服務。這項操作是透過 CVE-2025-43510 實現的,該漏洞是 XNU kernel 中與寫入時複製(Copy-On-Write, COW)操作相關的記憶體管理漏洞 [1] 。通過將 JSC 執行環境載入 mediaplaybackd 中,該漏洞利用程式可以執行具備更高權限的 JavaScript 邏輯。

5. Final-stage payload:GHOSTKNIFE 與 GHOSTBLADE

成功利用核心漏洞後,DarkSword 會部署多個惡意軟體家族中的其中一種。 GHOSTKNIFE 是一個使用 JavaScript 的後門程式,設計用於進行大規模的資料竊取。它具有模組化架構,能夠竊取訊息、位置記錄和瀏覽器資料 [1] 。其操作安全(OPSEC)的一個關鍵組成部分是自動刪除 Crash logs,以防止數位鑑識分析。

  1. // Figure 2: GHOSTKNIFE OPSEC - Crash log deletion
  2. // This function targets specific logs that might indicate exploit failure
  3. function cleanLogs() {
  4. // Retrieve list of files in the standard crash reporter directory
  5. let files = MyHelper.getContentsOfDir("/var/mobile/Library/Logs/CrashReporter/");
  6. for (let file of files) {
  7. // Check for specific process names involved in the exploit chain
  8. if (file.includes("mediaplaybackd") ||
  9. file.includes("SpringBoard") ||
  10. file.includes("com.apple.WebKit.") ||
  11. file.includes("panic-full-")) {
  12. // Delete the log file to hide traces of the attack
  13. MyHelper.deleteFileAtPath(file);
  14. }
  15. }
  16. }

另一個 payload GHOSTBLADE 則展現了更高的複雜度,它為 iOS 18.4+ 版本實作了一個 MIG (Mach Interface Generator) 過濾器繞過技術,以規避 autobox 的限制 [1] 。這使得該惡意軟體能夠與受限制的系統 API 進行互動。

  1. // Figure 3: GHOSTBLADE MIG Filter Bypass Initialization
  2. // Executed on iOS 18.4+ to bypass sandbox restrictions
  3. if (ver.major == 24 && ver.minor >= 4) {
  4. // Allocate memory for a mutex to synchronize the bypass logic
  5. mutexPtr = BigInt(libs_Chain_Native.callSymbol("malloc", 0x100));
  6. libs_Chain_Native.callSymbol("pthread_mutex_init", mutexPtr, null);
  7. // Initialize the MigFilterBypass object with the allocated mutex
  8. migFilterBypass = new MigFilterBypass(mutexPtr);
  9. }

6. 結論

DarkSword 漏洞攻擊鏈展示了目前商業監控軟體供應商所具備的高超技術能力。透過串聯六個漏洞並採用純 JavaScript 執行模型,它成功地繞過了現代 iOS 裝置複雜的安全架構。這類工具在不同威脅攻擊者之間的廣泛流通,凸顯了快速修補漏洞以及採用進階防禦措施(如 Lockdown Mode )的必要性。FLOP 和 SLAP 這類硬體層級 side-channels 攻擊的發現更進一步表明,行動裝置安全的戰場正逐漸轉移到處理器底層的架構設計上 [2]