iOS App Extensions
Les extensions d'application améliorent les fonctionnalités des applications en leur permettant d'interagir avec d'autres applications ou le système, en fournissant des fonctionnalités ou du contenu personnalisé. Ces extensions comprennent :
Clavier personnalisé : Offre un clavier unique dans toutes les applications, remplaçant le clavier iOS par défaut.
Partager : Permet de partager sur les réseaux sociaux ou avec d'autres directement.
Aujourd'hui (Widgets) : Fournit du contenu ou effectue des tâches rapidement à partir de la vue Aujourd'hui du Centre de notifications.
Lorsqu'un utilisateur interagit avec ces extensions, tel que partager du texte à partir d'une application hôte, l'extension traite cette entrée dans son contexte, en exploitant les informations partagées pour effectuer sa tâche, comme détaillé dans la documentation d'Apple.
Considérations de sécurité
Les aspects clés de sécurité comprennent :
Les extensions et leurs applications conteneurs communiquent via une communication inter-processus, pas directement.
Le widget Aujourd'hui est unique en ce sens qu'il peut demander à son application de s'ouvrir via une méthode spécifique.
L'accès aux données partagées est autorisé dans un conteneur privé, mais l'accès direct est restreint.
Certaines API, y compris HealthKit, sont interdites aux extensions d'application, qui ne peuvent pas non plus démarrer des tâches de longue durée, accéder à l'appareil photo ou au microphone, sauf pour les extensions iMessage.
Analyse statique
Identification des extensions d'application
Pour trouver des extensions d'application dans le code source, recherchez NSExtensionPointIdentifier
dans Xcode ou inspectez le bundle d'application pour les fichiers .appex
indiquant des extensions. Sans code source, utilisez grep ou SSH pour localiser ces identifiants dans le bundle d'application.
Types de données pris en charge
Vérifiez le fichier Info.plist
d'une extension pour NSExtensionActivationRule
afin d'identifier les types de données pris en charge. Cette configuration garantit que seuls les types de données compatibles déclenchent l'extension dans les applications hôtes.
Partage de données
Le partage de données entre une application et son extension nécessite un conteneur partagé, configuré via les "Groupes d'applications" et accessible via NSUserDefaults
. Cet espace partagé est nécessaire pour les transferts en arrière-plan initiés par les extensions.
Restriction des extensions
Les applications peuvent restreindre certains types d'extensions, en particulier les claviers personnalisés, garantissant que la manipulation de données sensibles est conforme aux protocoles de sécurité.
Analyse dynamique
L'analyse dynamique implique :
Inspection des éléments partagés : Accrochez-vous à
NSExtensionContext - inputItems
pour voir les types de données partagées et leurs origines.Identification des extensions : Découvrez quelles extensions traitent vos données en observant les mécanismes internes, comme
NSXPCConnection
.
Des outils comme frida-trace
peuvent aider à comprendre les processus sous-jacents, en particulier pour ceux intéressés par les détails techniques de la communication inter-processus.
Références
Last updated