Opération Triangulation : la faille 0-day d'iMessage expliquée par Kaspersky
- 👨 Medhi Naitmazi
- Il y a 11 mois
- 💬 Réagir
Une attaque d'une sophistication effrayante
À l'occasion du Chaos Communication Congress, les chercheurs en sécurité de Kaspersky Boris Larin, Leonid Bezvershenko et Georgy Kucherin ont détaillé l'opération Triangulation. C'est la première fois que les trois chercheurs "divulguent publiquement les détails de tous les exploits et vulnérabilités utilisés" dans l'attaque qui visait spécifiquement iMessage.
Si l'exploit Pegasus a été qualifié de "l'un des exploits les plus sophistiqués sur le plan technique", l'opération Triangulation semble atteindre un niveau tout aussi effrayant - les trois experts ayant déclaré :
Il s'agit sans aucun doute de la chaîne d'attaque la plus sophistiquée que nous ayons jamais vue.
Cette vulnérabilité existait jusqu'à la sortie d'iOS 16.2 en décembre 2022. Apple a ensuite proposé la vérification de la clé de contact sur iMessage.
Voici la chaîne d'attaque complexe complète, y compris les quatre failles 0-day utilisées pour obtenir les privilèges root de l'appareil de la victime :
- Les attaquants envoient une pièce jointe iMessage malveillante, que l'application traite sans montrer aucun signe à l'utilisateur.
- Cette pièce jointe exploite la vulnérabilité d'exécution de code à distance CVE-2023-41990 dans l'instruction de police TrueType ADJUST, non documentée et réservée à Apple. Cette instruction existait depuis le début des années 90 avant qu'un correctif ne la supprime.
- Elle utilise une programmation orientée retour/saut et plusieurs étapes écrites dans le langage de requête NSExpression/NSPredicate, patchant l'environnement de la bibliothèque JavaScriptCore pour exécuter un exploit d'élévation de privilèges écrit en JavaScript.
- Cet exploit JavaScript est obscurci afin de le rendre totalement illisible et de minimiser sa taille. Il comporte néanmoins environ 11 000 lignes de code, principalement consacrées à JavaScriptCore et à l'analyse et à la manipulation de la mémoire du noyau.
- Il exploite la fonction de débogage de JavaScriptCore DollarVM ($vm) pour obtenir la possibilité de manipuler la mémoire de JavaScriptCore à partir du script et d'exécuter des fonctions API natives.
- Il a été conçu pour prendre en charge les anciens et les nouveaux iPhones et comprend un contournement du code d'authentification du pointeur (PAC) pour l'exploitation des modèles récents.
- Il utilise la vulnérabilité de débordement d'entier CVE-2023-32434 dans les syscalls de mappage de mémoire de XNU (mach_make_memory_entry et vm_map) pour obtenir un accès en lecture/écriture à l'ensemble de la mémoire physique de l'appareil au niveau de l'utilisateur.
- Il utilise les registres d'entrées/sorties mappées en mémoire (MMIO) pour contourner la couche de protection des pages (PPL). Cette vulnérabilité a été atténuée par la CVE-2023-38606.
- Après avoir exploité toutes les vulnérabilités, l'exploit JavaScript peut faire ce qu'il veut de l'appareil, y compris exécuter des logiciels espions, mais les attaquants ont choisi de.. : (a) lancer le processus IMAgent et injecter une charge utile qui efface les artefacts d'exploitation de l'appareil ; (b) exécuter un processus Safari en mode invisible et le transmettre à une page web avec l'étape suivante.
- La page web contient un script qui vérifie la victime et, si les vérifications sont positives, reçoit l'étape suivante : l'exploit Safari.
- L'exploit Safari utilise CVE-2023-32435 pour exécuter un shellcode.
- Le shellcode exécute un autre exploit de noyau sous la forme d'un fichier objet Mach. Il utilise les mêmes vulnérabilités : CVE-2023-32434 et CVE-2023-38606. Il est également massif en termes de taille et de fonctionnalité, mais complètement différent de l'exploit du noyau écrit en JavaScript. Certaines parties liées à l'exploitation des vulnérabilités susmentionnées sont tout ce que les deux partagent. Toutefois, la majeure partie de son code est également consacrée à l'analyse et à la manipulation de la mémoire du noyau. Il contient divers utilitaires post-exploitation, qui sont pour la plupart inutilisés.
- L'exploit obtient les privilèges root et procède à l'exécution d'autres étapes, qui chargent des logiciels espions.
Les chercheurs soulignent qu'ils ont effectué une rétro-ingénierie de "tous les aspects de cette chaîne d'attaque" et qu'ils publieront en 2024 d'autres articles approfondissant chaque faille et la manière dont elle a été utilisée.
Cependant, Larin, Bezvershenko et Kucherin notent qu'il reste un mystère concernant la faille CVE-2023-38606 pour lequel ils aimeraient obtenir de l'aide. Plus précisément, on ne sait pas comment les attaquants auraient pu connaître la fonction matérielle cachée :
Nous publions les détails techniques afin que d'autres chercheurs en sécurité iOS puissent confirmer nos résultats et proposer des explications possibles sur la manière dont les attaquants ont appris l'existence de cette fonctionnalité matérielle.
Est-ce le fruit d'une fuite interne chez Apple ? Rien n'est exclu. Quoiqu'il en soit, les trois compères concluent en expliquant que cacher des fonctions n'est jamais vraiment sûr.