8 failles de sécurité macOS et iOS mises à jour par le Trellix Advanced Research Center

0
334

Le Trellix Advanced Research Center dévoile ce jour 8 failles de sécurité macOS et iOS pouvant être utilisées par des applications malveillantes afin d’accéder à des informations sensibles telles que les messages, l’historique des appels et les photos d’un utilisateur. Ces failles représentent un risque pour les données aussi bien personnelles que professionnelles puisqu’elles permettent à l’attaquant d’obtenir un haut niveau de contrôle sur les appareils des victimes et sur les données qui y sont stockées. 

Tribune de recherche – Ces failles de sécurité, qui constituent une nouvelle classe de bugs, sont similaires à une injection SQL et il est conseillé de procéder à la mise à jour vers iOS 16.3 et macOS 13.2 pour les corriger.

Depuis la première version d’iOS sur l’iPhone d’origine, Apple a imposé des restrictions prudentes sur le logiciel qui peuvent fonctionner sur leurs appareils mobiles. Seules les applications qui ont été signées cryptographiquement par un développeur certificat approuvé par Apple pouvait être exécuté et les langages de script comme AppleScript n’étaient pas trouvés sur iOS. La possibilité d’exécuter dynamiquement du code a été presque complètement  supprimée, créant une puissante barrière pour exploits qui auraient besoin de trouver un moyen de contourner ces atténuations pour exécuter un programme malveillant. Comme macOS a continuellement adopté plus de fonctionnalités d’iOS, il en est  également venu à appliquer plus strictement la signature de code. L’équipe de vulnérabilité de l’Advanced Research Center a découvert une grande nouvelle classe de bogues qui permettent de contourner signature de code pour exécuter du code arbitraire dans le contexte de plusieurs applications de plate-forme, entraînant une escalade de privilèges et sandbox escape sur macOS et iOS. Les vulnérabilités vont de moyennes à élevées sévérité avec des scores CVSS entre 5,1 et 7,1. Ces problèmes pourraient être utilisés par des applications malveillantes et exploite pour accéder à des informations sensibles telles que les messages d’un utilisateur, l’historique des appels et les photos.

En septembre 2021, Citizen Lab a révélé FORCEDENTRY, un exploit d’exécution de code à distance iOS qui a ciblé un activiste saoudien afin d’infecter son iPhone avec le malware Pegasus. Ils ont en outre collaboré avec Google Project Zero pour analyser les exploits, conduisant à une paire de messages détaillant les méthodes utilisées dans le attaque. La partie 1 décrivait l’exploitation initiale du code d’analyse PDF et la partie 2 présentait le contournement de la sandbox. Alors que beaucoup d’attention a été accordée au premier exploit, nous étions beaucoup plus intéressés par le second car il décrit un moyen d’exécuter dynamiquement du code arbitraire dans un autre processus qui contourne complètement signature de code. Cela impliquait NSPredicate, une classe d’apparence innocente qui permet aux développeurs de filtrer des listes de objets arbitraires. En réalité, la syntaxe de NSPredicate est un langage de script complet. La capacité à dynamiquement générer et exécuter du code sur iOS était une fonctionnalité officielle depuis tout ce temps. Cependant, ce n’était que le début, car cette fonctionnalité a révélé une toute nouvelle classe de bogues qui brise complètement la sécurité inter-processus dans macOS et iOS.

FORCEDENTRY Sandbox Escape n’était pas la première exploration de ce comportement. CodeColorist, un prolifique chercheur en sécurité iOS, a conçu un défi pour Real World CTF 2019 qui impliquait d’exploiter le mécanique de NSPredicate. Il a ensuite donné une conférence et publié le billet de blog See No Eval en janvier 2021 qui détaillait comment les utiliser pour exécuter du code arbitraire. L’essentiel de cette recherche était que NSExpression les objets, les blocs de construction d’un NSPredicate, pourraient être utilisés pour appeler des méthodes arbitraires sur des classes arbitraires et des objets. En utilisant les classes existantes dans les frameworks privés d’Apple, il était possible de contourner le pointeur l’authentification (PAC) et toute autre atténuation pour appeler n’importe quelle fonction. Cependant, le message décrit également les moyens dans lequel Apple a atténué la dangerosité de ces objets, notamment grâce à un protocole appelé NSPredicateVisitor. Les classes qui implémentent ce protocole peuvent être utilisées pour vérifier chaque expression afin de s’assurer ils pouvaient être évalués en toute sécurité. CodeColorist note à la fin de son article que "Sans une validation appropriée, il pourrait être une surface d’attaque inter-processus pour contourner TCC.

Le message See No Eval semblait avoir été l’idée principale derrière le contournement de la sandbox utilisée dans FORCEDENTRY. Depuis lors, Apple a supprimé les fonctionnalités utilisées dans cet exploit et le billet de blog de CodeColorist et a ajouté de nouvelles atténuations pour tenter de restreindre ce qui pourrait être fait avec  NSPredicate. Ces atténuations ont utilisé de grandes denylists pour empêcher l’utilisation de certaines classes et méthodes  qui pourraient clairement compromettre la sécurité. Cependant, nous avons découvert que ces nouvelles mesures d’atténuation pouvaient être contournées. En utilisant des méthodes qui n’avaient pas été restreintes il était possible de vider ces listes, activant toutes les mêmes méthodes qui étaient disponibles auparavant. Ce le contournement a été attribué CVE-2023-23530 par Apple. Plus important encore, nous avons découvert que presque tous l’implémentation de NSPredicateVisitor pourrait être contournée. Il existe de nombreux processus avec XPC Services (le principale méthode de communication inter-processus de haut niveau sur macOS et iOS) qui acceptent NSPredicate arguments et utilisez NSPredicateVisitor pour vous assurer que l’expression fournie peut être évaluée en toute sécurité. Alors qu’il y avait n’y a pas d’implémentation unique car presque chaque processus a sa propre version, la plupart utilisent le “expressionType” propriété pour filtrer les expressions de fonction. Les problèmes résident dans le fait que cette propriété peut être définie dans le processus d’envoi et dont l’exactitude est reconnue par le destinataire, ce qui rend les vérifications inutiles. Ce contournement a été attribué CVE-2023-23531. Ces deux techniques ont ouvert une vaste gamme de vulnérabilités potentielles que nous sommes encore en exploration.

Les vulnérabilités

La première vulnérabilité que nous avons trouvée dans cette nouvelle classe de bugs est dans CoreDuet, un processus qui collecte des données sur le comportement sur l’appareil. Un attaquant avec l’exécution de code dans un processus avec les droits appropriés, comme Messages ou Safari, peut envoyer un NSPredicate malveillant et exécuter du code avec les privilèges de ce processus. Ce processus s’exécute en tant que root sur macOS et permet à l’attaquant d’accéder au calendrier, à l’adresse livre et photos. Un autre problème avec un impact similaire affecte également contextstored, un processus lié à CoreDuet. Ce résultat est similaire à celui de FORCEDENTRY, où l’attaquant peut utiliser un service XPC vulnérable pour exécuter du code à partir d’un processus avec plus d’accès à l’appareil.

Les daemons appstored (et appstoreagent sur macOS) possèdent également des services XPC vulnérables. Un attaquant avec le contrôle d’un processus qui peut communiquer avec ces démons pourrait exploiter ces vulnérabilités pour obtenir la possibilité d’installer des applications signées arbitraires, y compris potentiellement des applications système.

Il y avait également des vulnérabilités de cette classe dans les services accessibles par n’importe quelle application, sans droits nécessaires. Le premier d’entre eux que nous avons trouvé était dans OSLogService, un service XPC qui peut être utilisé pour lire les informations potentiellement sensibles du syslog. Plus important encore, un attaquant peut exploiter un Vulnérabilité NSPredicate dans UIKitCore sur iPad. En définissant des règles d’activation de scènes malveillantes, une application peut réaliser l’exécution de code à l’intérieur de SpringBoard, une application hautement privilégiée qui peut accéder aux données de localisation, le appareil photo et microphone, historique des appels, photos et autres données sensibles, ainsi qu’effacer l’appareil.

Conclusion

Les vulnérabilités ci-dessus représentent une violation importante du modèle de sécurité de macOS et iOS qui repose sur les applications individuelles ayant un accès précis au sous ensemble de ressources dont elles ont besoin et interrogeant services privilégiés plus élevés pour obtenir autre chose. Services qui acceptent les arguments NSPredicate et les vérifient avec des NSPredicateVisitors insuffisants, les applications malveillantes et le code d’exploitation permettent de contourner l’isolation des processus et accéder directement à bien plus de ressources que ce qui devrait être autorisé. Ces problèmes ont été résolus avec macOS 13.2 et iOS 16.3. Nous tenons à remercier Apple d’avoir travaillé rapidement avec Trellix pour résoudre ces problèmes.

Ce document et les informations qu’il contient décrivent la recherche en sécurité informatique pour l’enseignement fins uniquement et pour la commodité des clients Trellix. Trellix mène des recherches conformément à ses Politique de divulgation raisonnable des vulnérabilités.