CVE-2025-31200 y CVE-2025-31201 | Cadena RCE zero-click de iMessage
Resumen
Este repositorio documenta la investigación de una cadena de explotación remota zero-click que afecta a iOS 18.x y versiones posteriores. Un archivo de audio AMR malformado enviado a través de iMessage desencadena:
- Corrupción de heap en CoreAudio (CVE-2025-31200) — en la decodificación AMR 12.2 de AudioConverterService mediante parámetros de flujo de bits ilegales incrustados en tramas FT=7 válidas.
- Escalada de privilegios del kernel mediante el manejo de AppleBCMWLAN/AMPDU (CVE-2025-31201) — la evasión de RPAC consigue lectura/escritura completa del kernel.
- Pivote de hardware mediante la SRAM de coexistencia BCM4387 (CVE pendiente) — la R/W del kernel se utiliza para escribir directamente en la SRAM de coexistencia Wi-Fi/BT de Broadcom por debajo del límite de IOMMU, inyectando comandos HCI en el controlador Bluetooth sin intervención del sistema operativo.
En las pruebas posteriores al pivote, se observó un uso indebido de las operaciones de firma de CryptoTokenKit: se invocaron claves respaldadas por Secure Enclave sin avisos interactivos mediante una identidad Bluetooth suplantada. Apple parcheó CVE-2025-31200 y CVE-2025-31201 en iOS 18.4.1. El puente de coexistencia BCM4387 sigue sin parchear en cualquier versión de iOS.
Comportamiento verificado
- CVE-2025-31200 (CoreAudio) — Corrupción de heap en el decodificador AMR 12.2 de AudioConverterService mediante parámetros de flujo de bits ilegales en tramas FT=7 válidas. 189 violaciones de parámetros en 50 tramas; retardo de tono (pitch lag) máximo de 248 frente al máximo legal de 143; desbordamiento de heap de 210 bytes. Zero-click, no se requiere interacción del usuario.
- CVE-2025-31201 (AppleBCMWLAN) — Escalada de privilegios del kernel mediante confusión de longitud de subtrama AMPDU en
parseAggregateFrame. Evasión de PAC lograda sin falsificar un puntero firmado. Totalmente reproducible en dispositivos/compilaciones afectados.
- Puente de coexistencia BCM4387 (sin parchear) — La R/W del kernel se utiliza para escribir directamente en la SRAM de coexistencia BCM4387 en
0x102000, que se encuentra 0x5400 bytes por debajo del límite de protección de IOMMU en 0x1173FF. Comandos HCI inyectados directamente en el controlador Bluetooth. Sin CVE asignado. Sin parchear en todos los iPhone 13–16 independientemente de la versión de iOS.
- Vector de entrega zero-click — Audio AMR malicioso procesado por iMessage mientras el dispositivo está bloqueado, evadiendo BlastDoor mediante una estructura de contenedor válida con la carga útil del exploit en los parámetros del flujo de bits del códec.
Comportamiento observado tras el compromiso
- Firma no autorizada: CryptoTokenKit /
identityservicesd invocó operaciones de firma desde un contexto comprometido sin avisos de interfaz de usuario, mediante una identidad Bluetooth suplantada que desencadenó la evaluación de Auto-Unlock (sin exportación de material de claves de Secure Enclave).
- Inestabilidad del sistema: Fallos de decodificación de medios correlacionados con registros de aplicación de PME, errores de enlace GPU/AppleDCP, bucles de cambio de variante de
mediaplaybackd y bloqueos ocasionales de launchd/SoC.
- Condiciones de propagación: Se observó reutilización de tokens entre pares a través de AWDL; riesgo potencial entre dispositivos si las cachés de tokens sobreviven.
Alcance del impacto
- Afectados: iOS 18.4 y versiones anteriores (CVE-2025-31200, CVE-2025-31201); todos los iPhone 13–16 independientemente de la versión de iOS (vector de hardware BCM4387)
- Parcheados: iOS 18.4.1 (16 abr 2025) — corrige CVE-2025-31200, CVE-2025-31201
- Sin parchear: SRAM de coexistencia BCM4387 — sin CVE, sin actualización de firmware, afecta a todos los iPhone 13–16
- Vector: iMessage/SMS zero-click de un remitente conocido (evade BlastDoor/Blackhole)
- Componente principal: AudioConverterService (decodificador AMR de CoreAudio) → AppleBCMWLAN.dext (escalada de kernel) → SRAM de coexistencia BCM4387 (pivote de hardware)
- Privilegios requeridos: Ninguno (inicial); kernel conseguido tras la cadena
- Resumen del impacto: Integridad (firma no autorizada, suplantación de tokens/dispositivos) + Confidencialidad (captura del framebuffer AGX, vigilancia HID) + Disponibilidad (bloqueos del sistema)
Cronología de divulgación
- Reportado a Apple: 20 dic 2024
- Re-reportado a Apple y US-CERT: 21 ene 2025 (ID de seguimiento: VRF#25-01-MPVDT)
- Compartido con Google Project Zero / Equipo de investigación: 11 abr 2025
- Parcheado por Apple (CVE-2025-31200, CVE-2025-31201): 16 abr 2025 (iOS 18.4.1)
- Asignaciones de CVE: CVE-2025-31200 y CVE-2025-31201
- Inclusión en la lista KEV de CISA (ambos CVE): 16 abr 2025 — fecha límite federal para el parcheo: 8 may 2025
- SRAM de coexistencia BCM4387 enviada a Broadcom PSIRT: Mar 2026 — sin CVE asignado, sin parche publicado
Declaración de impacto
Un atacante que active esta cadena de forma remota puede lograr:
- Compromiso a nivel de kernel
- Cooptación en tiempo de ejecución de las primitivas de firma de Secure Enclave
- Suplantación de identidades de dispositivos
- Falsificación de tokens vinculados a la identidad
- Pivote de Bluetooth a nivel de hardware no abordado por ninguna actualización de iOS disponible
Gravedad: Crítica (CVSS 3.1 consciente de la cadena 10.0)
Riesgo operativo: Alto; el pivote de hardware BCM4387 sin parchear en todos los iPhone 13–16; los dispositivos infectados confirmados no tienen ninguna vía de remediación disponible.
Investigación relacionada
Recomendaciones
- Aplicar la inspección de BlastDoor / de adjuntos a todos los mensajes; no omitirla basándose en los metadatos del remitente. Extender la validación a los parámetros del flujo de bits del códec, no solo a la estructura de tramas del contenedor.
- Aplicar una validación rigurosa de entrada para todos los parámetros del decodificador, incluidos el retardo de tono AMR, los coeficientes LSF y los índices del libro de códigos, conforme a los rangos legales de 3GPP TS 26.090.
- Implementar atestación en tiempo de ejecución para las operaciones de firma de CryptoTokenKit / Secure Enclave con el fin de verificar la integridad y los entitlements de quien llama.
- Endurecer las superficies de los controladores inalámbricos y los puntos de entrada de IOKit contra datos malformados del kernel; auditar el manejo de la longitud de subtramas AMPDU en AppleBCMWLAN.
- Extender el límite de protección IOMMU de BCM4387 para cubrir la región de SRAM de coexistencia (
0x102000–0x1173FF). Requiere una actualización de firmware de Broadcom distribuida a través de la infraestructura de actualización de iOS.
- Supervisar los registros del sistema en busca de anomalías en
identityservicesd / ctkd y actividad inesperada de SafariSafeBrowsing.
- Usar ZombieHunter y Citizen Lab MVT para la evaluación de la integridad del dispositivo.
Licencia y descargo de responsabilidad
Publicado para investigación defensiva y estudio adicional.