Chaîne d’attaque « Operation Triangulation »
- Envoi d’une pièce jointe iMessage malveillante, traitée par l’application à l’insu de l’utilisateur.
- Cette pièce jointe exploite la vulnérabilité d’exécution de code à distance CVE-2023-41990 dans une instruction de police TrueType ADJUST non documentée, spécifique à Apple.
- Utilisation de plusieurs étapes, écrites avec la programmation orientée retour/saut et le langage de requête NSExpression/NSPredicate, afin de modifier l’environnement de la bibliothèque JavaScriptCore et d’exécuter un exploit d’élévation de privilèges écrit en JavaScript.
- L’exploit JavaScript est obfusqué au point d’être totalement illisible et minimise sa taille. Environ 11 000 lignes de code sont principalement consacrées à l’analyse et à la manipulation de la mémoire de JavaScriptCore et du noyau.
- Utilisation de la fonctionnalité de débogage DollarVM($vm) de JavaScriptCore pour obtenir, depuis le script, la capacité de manipuler la mémoire de JavaScriptCore et d’exécuter des fonctions d’API natives.
- Conçu pour prendre en charge à la fois les anciens et les nouveaux iPhone, avec un contournement de Pointer Authentication Code (PAC) pour exploiter les vulnérabilités des modèles les plus récents.
- Exploitation de la vulnérabilité de dépassement d’entier CVE-2023-32434 dans les appels système de mappage mémoire de XNU (
mach_make_memory_entry et vm_map) afin d’obtenir, au niveau utilisateur, un accès en lecture/écriture à l’ensemble de la mémoire physique de l’appareil.
- Contournement du Page Protection Layer (PPL) à l’aide de registres de memory-mapped I/O (MMIO). Ce point a été atténué par CVE-2023-38606.
- Une fois toutes les vulnérabilités exploitées, l’exploit JavaScript peut effectuer les actions souhaitées sur l’appareil et, au lieu d’exécuter directement un spyware, lancer le processus IMAgent et y injecter une charge utile qui efface les traces de l’exploit sur l’appareil, ou lancer le processus Safari en mode invisible pour rediriger vers une page web comportant l’étape suivante.
- La page web contient un script qui vérifie la victime et, si les contrôles sont validés, livre l’étape suivante : l’exploit Safari.
- L’exploit Safari utilise CVE-2023-32435 pour exécuter du shellcode.
- Le shellcode exécute un autre exploit noyau sous la forme d’un fichier objet Mach. Il utilise les mêmes vulnérabilités que CVE-2023-32434 et CVE-2023-38606. Il est massif par sa taille et ses fonctionnalités, mais totalement différent de l’exploit noyau écrit en JavaScript. Les parties liées sont partagées entre les deux exploits, mais l’essentiel du code est consacré à l’analyse et à la manipulation de la mémoire du noyau. Il inclut divers utilitaires de post-intrusion, dont la plupart ne sont pas utilisés.
- L’exploit obtient les privilèges root et exécute d’autres étapes pour charger le spyware.
Mystère et vulnérabilité CVE-2023-38606
- Les modèles récents d’iPhone disposent de protections de sécurité supplémentaires, basées sur le matériel, pour certaines zones sensibles de la mémoire noyau.
- Ces protections empêchent un attaquant de prendre le contrôle complet de l’appareil, même s’il parvient à lire et écrire dans la mémoire noyau.
- L’attaquant contourne cette protection matérielle en utilisant une autre fonctionnalité matérielle du SoC conçue par Apple.
- Il contourne cette protection en écrivant les données, l’adresse de destination et le hachage des données dans des registres matériels inconnus d’une puce non utilisée par le firmware.
- Cette fonctionnalité matérielle inconnue aurait probablement été prévue par des ingénieurs Apple ou pour l’usine à des fins de débogage ou de test, ou aurait été incluse par erreur.
Détails techniques
- Les différents périphériques présents dans le SoC exposent des registres matériels spéciaux que le CPU peut utiliser pour piloter ces dispositifs.
- Ces registres matériels sont mappés dans une mémoire accessible par le CPU et sont connus sous le nom de « memory-mapped I/O (MMIO) ».
- Dans les produits Apple (iPhone, Mac, etc.), les plages d’adresses MMIO des périphériques sont stockées dans un format de fichier spécial appelé DeviceTree.
- La plupart des MMIO utilisées dans l’attaque n’appartiennent à aucune plage MMIO définie dans DeviceTree.
- On ne sait pas comment les attaquants ont identifié des MMIO non utilisées par le firmware, ni à quels périphériques appartiennent ces adresses MMIO.
- Il a été établi que ces registres MMIO appartiennent à un coprocesseur GPU.
- Les attaquants utilisent ces registres MMIO pour contourner le Page Protection Layer (PPL) et modifier des entrées de table de pages.
- La méthode de calcul du hachage permet à la fonctionnalité matérielle utilisée dans l’attaque d’effectuer une opération DMA (direct memory access) vers l’emplacement mémoire demandé.
L’avis de GN⁺
- Cette recherche met au jour une chaîne d’attaque extrêmement sophistiquée visant les iPhone. C’est une découverte très importante pour les chercheurs en sécurité, qui peut contribuer à renforcer la sécurité des produits Apple.
- La manière dont les attaquants ont découvert ces fonctionnalités matérielles non utilisées par le firmware demeure un mystère. Cela souligne l’importance de la recherche en sécurité matérielle.
- Cet article offre un contenu particulièrement intéressant pour celles et ceux qui s’intéressent à la sécurité logicielle et matérielle. La complexité extrême des méthodes d’attaque et le processus d’analyse montrent la profondeur et la nécessité de la recherche en sécurité.
1 commentaires
Commentaires Hacker News
Ce qui est surprenant dans l’abus de MMIO
Résumé Twitter de Steve Weis
Explication à propos de Coresight
gdbmodifié ou à d’autres outils permettant de l’exploiter.Spéculation sur la possibilité de découvrir les registres MMIO
Doute sur l’usage d’un hash de données dans une fonction de débogage de puce
Observation sur les caractéristiques de l’algorithme de hash
Admiration pour les efforts des attaquants
Explication de la fonctionnalité exploitée par les attaquants
Importance des nouvelles vulnérabilités découvertes