摘要
這份研究報告對 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 的架構設計。
1. 簡介
隨著模組化漏洞利用框架的出現,行動裝置監控領域已有了顯著的演變。DarkSword 代表了這種演變的頂峰,其特點在於跨攻擊者群體的廣泛散佈和技術上的強健性。由 Google Threat Intelligence Group (GTIG) 發現,DarkSword 已被多個商業監控軟體供應商和威脅組織所採用 [1] 。該漏洞攻擊鏈的主要創新點在於,它僅使用 JavaScript 的邏輯就能執行完整的攻擊鏈——從初始的遠端程式碼執行(RCE)到核心層級的權限提升 [1] 。這種方法將在目標系統上的痕跡降到最低,並使傳統利用二進位檔案的檢測機制變得難以偵測。
2. 感染途徑與初始傳遞
DarkSword 的感染過程通常始於「水坑攻擊」("watering hole" attack)或透過社交媒體主題進行的目標釣魚誘餌。一個值得注意的傳遞機制涉及一個模仿 Snapchat 主題的登入頁面,該頁面利用 JavaScript 混淆技術來隱藏其惡意意圖。初始階段會檢查是否存在
uid
的 session storage 鍵值,以防止重複感染同一台裝置
[1]
。
以下程式碼片段展示了用於觸發漏洞攻擊鏈的初始邏輯。它展示了如何使用
sessionStorage
來追蹤受害者,以及動態建立
iframe
來載入下一個階段:
- // Figure 1: Initial landing page logic for exploit triggering
- // This script checks if the user has been infected and initiates the chain
- if (!sessionStorage.getItem("uid") && isTouchScreen) {
- // Mark the session to avoid re-infection
- sessionStorage.setItem("uid", '1');
- // Create a hidden iframe to load the next stage (frame.html)
- const frame = document.createElement("iframe");
- frame.src = "frame.html?" + Math.random(); // Use random to bypass cache
- frame.style.height = 0;
- frame.style.width = 0;
- frame.style.border = "none";
- document.body.appendChild(frame);
- } else {
- // Redirect to a decoy page if already infected or not a touch device
- top.location.href = "redacted_decoy_url";
- }
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] 。
第二步則是從 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,以防止數位鑑識分析。
- // Figure 2: GHOSTKNIFE OPSEC - Crash log deletion
- // This function targets specific logs that might indicate exploit failure
- function cleanLogs() {
- // Retrieve list of files in the standard crash reporter directory
- let files = MyHelper.getContentsOfDir("/var/mobile/Library/Logs/CrashReporter/");
- for (let file of files) {
- // Check for specific process names involved in the exploit chain
- if (file.includes("mediaplaybackd") ||
- file.includes("SpringBoard") ||
- file.includes("com.apple.WebKit.") ||
- file.includes("panic-full-")) {
- // Delete the log file to hide traces of the attack
- MyHelper.deleteFileAtPath(file);
- }
- }
- }
另一個 payload GHOSTBLADE 則展現了更高的複雜度,它為 iOS 18.4+ 版本實作了一個 MIG (Mach Interface Generator) 過濾器繞過技術,以規避 autobox 的限制 [1] 。這使得該惡意軟體能夠與受限制的系統 API 進行互動。
- // Figure 3: GHOSTBLADE MIG Filter Bypass Initialization
- // Executed on iOS 18.4+ to bypass sandbox restrictions
- if (ver.major == 24 && ver.minor >= 4) {
- // Allocate memory for a mutex to synchronize the bypass logic
- mutexPtr = BigInt(libs_Chain_Native.callSymbol("malloc", 0x100));
- libs_Chain_Native.callSymbol("pthread_mutex_init", mutexPtr, null);
- // Initialize the MigFilterBypass object with the allocated mutex
- migFilterBypass = new MigFilterBypass(mutexPtr);
- }
6. 結論
DarkSword 漏洞攻擊鏈展示了目前商業監控軟體供應商所具備的高超技術能力。透過串聯六個漏洞並採用純 JavaScript 執行模型,它成功地繞過了現代 iOS 裝置複雜的安全架構。這類工具在不同威脅攻擊者之間的廣泛流通,凸顯了快速修補漏洞以及採用進階防禦措施(如 Lockdown Mode )的必要性。FLOP 和 SLAP 這類硬體層級 side-channels 攻擊的發現更進一步表明,行動裝置安全的戰場正逐漸轉移到處理器底層的架構設計上 [2] 。