CVE-2025-31200 & CVE-2025-31201 | iMessage 零点击 RCE 利用链
摘要
本仓库记录了针对 iOS 18.x 及更高版本系统的零点击远程利用链研究。通过 iMessage 投递的畸形 AMR 音频文件可触发:
- CoreAudio 中的堆破坏(CVE-2025-31200) —— 在 AudioConverterService AMR 12.2 解码过程中,通过跨越有效 FT=7 帧嵌入的非法比特流参数实现。
- 通过 AppleBCMWLAN/AMPDU 处理实现内核提权(CVE-2025-31201) —— RPAC 绕过实现完整的内核读写。
- 通过 BCM4387 共存 SRAM 实现硬件跳板(CVE 待定) —— 利用内核读写能力直接写入 IOMMU 边界下方的 Broadcom Wi-Fi/BT 共存 SRAM,在操作系统不介入的情况下向蓝牙控制器注入 HCI 命令。
在跳板后测试中,观察到 CryptoTokenKit 签名操作被滥用——通过伪造的蓝牙身份调用受 Secure Enclave 保护的密钥,而无需交互式提示。Apple 已在 iOS 18.4.1 中修补 CVE-2025-31200 和 CVE-2025-31201。BCM4387 共存桥在所有 iOS 版本上均未修补。
已验证行为
- CVE-2025-31200(CoreAudio) —— AudioConverterService AMR 12.2 解码器通过有效 FT=7 帧中的非法比特流参数导致堆破坏。50 帧中出现 189 次参数违规;基音滞后最大值为 248,而合法上限为 143;210 字节堆溢出。零点击,无需用户交互。
- CVE-2025-31201(AppleBCMWLAN) —— 通过
parseAggregateFrame 中的 AMPDU 子帧长度混淆实现内核提权。无需伪造签名指针即可实现 PAC 绕过。在受影响的设备/构建版本上可完全复现。
- BCM4387 共存桥(未修补) —— 利用内核读写能力直接写入位于
0x102000 的 BCM4387 共存 SRAM,该地址位于 0x1173FF 的 IOMMU 保护边界下方 0x5400 字节处。HCI 命令直接注入蓝牙控制器。未分配 CVE。无论 iOS 版本如何,所有 iPhone 13–16 均未修补。
- 零点击投递向量 —— 恶意 AMR 音频在设备锁定状态下由 iMessage 处理,通过有效的容器结构及编解码器比特流参数中的利用载荷绕过 BlastDoor。
观察到的入侵后行为
- 未授权签名: CryptoTokenKit /
identityservicesd 从受损上下文中调用签名操作,绕过 UI 提示,通过伪造的蓝牙身份触发 Auto-Unlock 评估(未导出 Secure Enclave 密钥材料)。
- 系统不稳定: 媒体解码失败与 PME 强制日志、GPU/AppleDCP 链路错误、
mediaplaybackd 变体切换循环以及偶发的 launchd/SoC 停滞相关。
- 传播条件: 观察到 AWDL 上的对等令牌重用;如果令牌缓存存留,则存在潜在的跨设备风险。
影响范围
- 受影响: iOS 18.4 及以下版本(CVE-2025-31200、CVE-2025-31201);所有 iPhone 13–16,无论 iOS 版本如何(BCM4387 硬件向量)
- 已修补: iOS 18.4.1(2025 年 4 月 16 日)—— 修复 CVE-2025-31200、CVE-2025-31201
- 未修补: BCM4387 共存 SRAM —— 无 CVE、无固件更新,影响所有 iPhone 13–16
- 向量: 来自已知发送者的零点击 iMessage/SMS(绕过 BlastDoor/Blackhole)
- 主要组件: AudioConverterService(CoreAudio AMR 解码器)→ AppleBCMWLAN.dext(内核提权)→ BCM4387 共存 SRAM(硬件跳板)
- 所需权限: 无(初始);利用链后获得内核权限
- 影响摘要: 完整性(未授权签名、令牌/设备冒充)+ 机密性(AGX 帧缓冲捕获、HID 监视)+ 可用性(系统停滞)
披露时间线
- 报告给 Apple:2024 年 12 月 20 日
- 重新报告给 Apple 与 US-CERT:2025 年 1 月 21 日(跟踪 ID:VRF#25-01-MPVDT)
- 分享给 Google Project Zero / 研究团队:2025 年 4 月 11 日
- Apple 修补(CVE-2025-31200、CVE-2025-31201):2025 年 4 月 16 日(iOS 18.4.1)
- CVE 分配:CVE-2025-31200 和 CVE-2025-31201
- CISA KEV 列表(两个 CVE):2025 年 4 月 16 日 —— 联邦修补截止日期为 2025 年 5 月 8 日
- BCM4387 共存 SRAM 提交给 Broadcom PSIRT:2026 年 3 月 —— 未分配 CVE,未发布补丁
影响声明
远程触发此利用链的攻击者可以实现:
- 内核级入侵
- Secure Enclave 签名原语的运行时劫持
- 设备身份冒充
- 伪造身份绑定令牌
- 任何可用的 iOS 更新均未解决的硬件级蓝牙跳板
严重性: 严重(CVSS 3.1 利用链综合评分 10.0)
运营风险: 高;BCM4387 硬件跳板在所有 iPhone 13–16 上未修补;已确认感染的设备没有可用的修复途径。
相关研究
建议
- 对所有消息强制执行 BlastDoor / 附件检查;不要基于发送者元数据绕过。将验证扩展到编解码器比特流参数,而不仅限于容器帧结构。
- 对所有解码器参数实施严格的输入验证,包括 AMR 基音滞后、LSF 系数和码本索引,校验是否符合 3GPP TS 26.090 的合法范围。
- 为 CryptoTokenKit / Secure Enclave 签名操作实现运行时证明,以验证调用方的完整性和权限。
- 强化无线驱动程序接口和 IOKit 入口点,防止畸形内核数据;审计 AppleBCMWLAN 中的 AMPDU 子帧长度处理。
- 将 BCM4387 IOMMU 保护边界扩展到覆盖共存 SRAM 区域(
0x102000–0x1173FF)。需要通过 iOS 更新基础设施分发的 Broadcom 固件更新。
- 监控系统日志中的
identityservicesd / ctkd 异常以及意外的 SafariSafeBrowsing 活动。
- 使用 ZombieHunter 和 Citizen Lab MVT 进行设备完整性评估。
许可证与免责声明
为防御性研究和进一步学习而发布。