
CVE-2022-46718 : une application peut être en mesure de lire des informations de localisation sensibles.
en bref : ajouter une vérification d’entitlement à parsecd
CoreParsecLocation est une application d’exemple démontrant comment une application tierce peut accéder à la localisation précise d’un utilisateur sans son consentement ni son autorisation. parsecd/CoreParsec fournit également des informations telles que des suggestions de recherche localisées, des fiches de connaissances et un identifiant utilisateur temporaire. Heureusement, je ne pense pas que l’identifiant utilisateur soit persisté ou réutilisé pour le moment.
Au cours d’une exploration de routine des Frameworks, j’ai remarqué une NSXPCConnection active vers parsecd. Après quelques jours de bricolage, j’ai découvert que parsecd répondait aux requêtes de recherche de n’importe quelle application tant que je falsifiais les bonnes informations d’en-tête. Dans ce cas, j’ai utilisé la classe SPPARSession, qui configure une session pour Spotlight.
Au départ, je supposais que l’objet PARResponse ne renverrait qu’une localisation GeoIP (ce qui n’est pas très utile en soi). Cependant, après avoir essayé de nombreuses requêtes de recherche, j’ai découvert que rechercher « restaurants » amenait parsecd à récupérer la localisation précise de l’utilisateur. Il renvoyait ensuite les informations de localisation via l’objet PARReponse.
parsec renvoie également des informations supplémentaires, telles que des résultats d’actualités localisés et des suggestions de recherche. Je ne pense pas qu’elles contiennent d’informations identifiantes pour l’utilisateur pour le moment. Après la soumission, je prévois d’explorer plus en détail les réponses supplémentaires.
parsecd demande une nouvelle localisation, mais je n’ai pas vu d’indicateur de localisation dans la barre de statut lors de mes tests.Dynamic (disponible ici : https://github.com/mhdhejazi/Dynamic). Cette bibliothèque n’est pas nécessaire pour exploiter parsecd, mais elle facilite l’utilisation d’API tierces sans en-têtes exposés.parsecd renverra la localisation sans connexion.