CVE-2025-31200 et CVE-2025-31201 | Chaîne RCE Zero-Click iMessage
Résumé
Ce dépôt documente des recherches sur une chaîne d'exploitation à distance zero-click affectant iOS 18.x et versions ultérieures. Un fichier audio AMR malformé livré via iMessage déclenche :
- Corruption du tas dans CoreAudio (CVE-2025-31200) — dans le décodage AMR 12.2 d'AudioConverterService via des paramètres de flux binaire illégaux intégrés dans des trames FT=7 valides.
- Élévation de privilèges noyau via la gestion AppleBCMWLAN/AMPDU (CVE-2025-31201) — le contournement du RPAC permet une lecture/écriture noyau complète.
- Pivot matériel via la SRAM de coexistence BCM4387 (CVE en attente) — lecture/écriture noyau utilisée pour écrire directement dans la SRAM de coexistence Wi-Fi/BT Broadcom sous la limite IOMMU, injectant des commandes HCI dans le contrôleur Bluetooth sans interception du système d'exploitation.
Lors des tests post-pivot, un usage abusif des opérations de signature CryptoTokenKit a été observé — invocation de clés adossées à Secure Enclave sans invites interactives via une identité Bluetooth usurpée. Apple a corrigé CVE-2025-31200 et CVE-2025-31201 dans iOS 18.4.1. Le pont de coexistence BCM4387 reste non corrigé sur toutes les versions d'iOS.
Comportement vérifié
- CVE-2025-31200 (CoreAudio) — Corruption du tas dans le décodeur AMR 12.2 d'AudioConverterService via des paramètres de flux binaire illégaux dans des trames FT=7 valides. 189 violations de paramètres sur 50 trames ; pitch lag maximal de 248 contre un maximum légal de 143 ; débordement de tas de 210 octets. Zero-click, aucune interaction utilisateur requise.
- CVE-2025-31201 (AppleBCMWLAN) — Élévation de privilèges noyau via une confusion de longueur de sous-trame AMPDU dans
parseAggregateFrame. Contournement du PAC obtenu sans forger de pointeur signé. Entièrement reproductible sur les appareils/builds concernés.
- Pont de coexistence BCM4387 (non corrigé) — Lecture/écriture noyau utilisée pour écrire directement dans la SRAM de coexistence BCM4387 à
0x102000, située 0x5400 octets sous la limite de protection IOMMU à 0x1173FF. Commandes HCI injectées directement dans le contrôleur Bluetooth. Aucune CVE attribuée. Non corrigé sur tous les iPhone 13–16, quelle que soit la version d'iOS.
- Vecteur de livraison zero-click — Audio AMR malveillant traité par iMessage pendant que l'appareil est verrouillé, contournant BlastDoor via une structure de conteneur valide avec une charge utile d'exploitation dans les paramètres de flux binaire du codec.
Comportement observé après compromission
- Signature non autorisée : CryptoTokenKit /
identityservicesd ont invoqué des opérations de signature depuis un contexte compromis sans invites d'interface utilisateur, via une identité Bluetooth usurpée déclenchant l'évaluation Auto-Unlock (aucun matériel de clé Secure Enclave exporté).
- Instabilité système : Échecs de décodage multimédia corrélés aux journaux d'application du PME, aux erreurs de liaison GPU/AppleDCP, aux boucles de commutation de variantes de
mediaplaybackd et à des blocages occasionnels de launchd/SoC.
- Conditions de propagation : Réutilisation de jetons de pairs via AWDL observée ; risque potentiel entre appareils si les caches de jetons persistent.
Portée de l'impact
- Affectés : iOS 18.4 et versions antérieures (CVE-2025-31200, CVE-2025-31201) ; tous les iPhone 13–16 quelle que soit la version d'iOS (vecteur matériel BCM4387)
- Corrigé : iOS 18.4.1 (16 avr. 2025) — corrige CVE-2025-31200, CVE-2025-31201
- Non corrigé : SRAM de coexistence BCM4387 — aucune CVE, aucune mise à jour de firmware, affecte tous les iPhone 13–16
- Vecteur : iMessage/SMS zero-click provenant d'un expéditeur connu (contourne BlastDoor/Blackhole)
- Composant principal : AudioConverterService (décodeur AMR CoreAudio) → AppleBCMWLAN.dext (élévation noyau) → SRAM de coexistence BCM4387 (pivot matériel)
- Privilèges requis : Aucun (initialement) ; noyau obtenu après la chaîne
- Résumé de l'impact : Intégrité (signature non autorisée, usurpation de jetons/appareils) + Confidentialité (capture du framebuffer AGX, surveillance HID) + Disponibilité (blocages système)
Chronologie de divulgation
- Signalé à Apple : 20 déc. 2024
- Re-signalé à Apple et à l'US-CERT : 21 janv. 2025 (ID de suivi : VRF#25-01-MPVDT)
- Partagé avec Google Project Zero / l'équipe de recherche : 11 avr. 2025
- Corrigé par Apple (CVE-2025-31200, CVE-2025-31201) : 16 avr. 2025 (iOS 18.4.1)
- Attributions de CVE : CVE-2025-31200 et CVE-2025-31201
- Inscription au catalogue KEV de la CISA (les deux CVE) : 16 avr. 2025 — échéance fédérale d'application des correctifs au 8 mai 2025
- SRAM de coexistence BCM4387 soumise au PSIRT de Broadcom : mars 2026 — aucune CVE attribuée, aucun correctif publié
Déclaration d'impact
Un attaquant déclenchant cette chaîne à distance peut obtenir :
- Compromission au niveau du noyau
- Détournement à l'exécution des primitives de signature Secure Enclave
- Usurpation des identités d'appareils
- Falsification de jetons liés à une identité
- Pivot Bluetooth au niveau matériel non traité par aucune mise à jour iOS disponible
Sévérité : Critique (CVSS 3.1 tenant compte de la chaîne : 10.0)
Risque opérationnel : Élevé ; pivot matériel BCM4387 non corrigé sur tous les iPhone 13–16 ; les appareils infectés confirmés ne disposent d'aucune voie de remédiation.
Recherches associées
Recommandations
- Imposer l'inspection BlastDoor/des pièces jointes pour tous les messages ; ne pas contourner en fonction des métadonnées de l'expéditeur. Étendre la validation aux paramètres de flux binaire du codec, pas seulement à la structure des trames du conteneur.
- Appliquer une validation rigoureuse des entrées pour tous les paramètres du décodeur, notamment le pitch lag AMR, les coefficients LSF et les indices du codebook, par rapport aux plages légales de la norme 3GPP TS 26.090.
- Mettre en œuvre une attestation à l'exécution pour les opérations de signature CryptoTokenKit / Secure Enclave afin de vérifier l'intégrité et les droits de l'appelant.
- Renforcer les surfaces des pilotes sans fil et les points d'entrée IOKit contre les données noyau malformées ; auditer la gestion de la longueur des sous-trames AMPDU dans AppleBCMWLAN.
- Étendre la limite de protection IOMMU du BCM4387 pour couvrir la région SRAM de coexistence (
0x102000–0x1173FF). Nécessite une mise à jour du firmware Broadcom distribuée via l'infrastructure de mise à jour iOS.
- Surveiller les journaux système pour détecter les anomalies
identityservicesd / ctkd et toute activité inattendue de SafariSafeBrowsing.
- Utiliser ZombieHunter et Citizen Lab MVT pour l'évaluation de l'intégrité des appareils.
Licence et avertissement
Publié à des fins de recherche défensive et d'étude approfondie.