
CVE-2022-46718: eine App könnte möglicherweise sensible Standortinformationen lesen.
tl;dr füge eine Berechtigungsprüfung zu parsecd hinzu
CoreParsecLocation ist eine Beispielanwendung, die zeigt, wie eine Drittanbieter-App ohne Zustimmung oder Erlaubnis des Benutzers auf den genauen Standort eines Benutzers zugreifen kann. parsecd/CoreParsec bietet auch Informationen wie lokalisierte Suchvorschläge, Wissenskarten und eine temporäre Benutzer-ID. Glücklicherweise glaube ich nicht, dass die Benutzer-ID zu diesem Zeitpunkt gespeichert oder wiederverwendet wird.
Während einer routinemäßigen Frameworks-Expedition bemerkte ich eine aktive NSXPCConnection zu parsecd. Nach ein paar Tagen Herumexperimentierens entdeckte ich, dass parsecd auf Suchanfragen von jeder Anwendung antwortete, solange ich die korrekten Header-Informationen fälschte. In diesem Fall verwendete ich die SPPARSession-Klasse, die eine Sitzung für Spotlight einrichtet.
Zunächst nahm ich an, dass das PARResponse-Objekt nur einen GeoIP-Standort zurückgeben würde (was allein nicht sehr nützlich ist). Nachdem ich jedoch zahlreiche Suchanfragen ausprobiert hatte, entdeckte ich, dass die Suche nach „Restaurants“ dazu führte, dass parsecd den genauen Standort des Benutzers abgriff. Anschließend gab es die Standortinformationen über das PARReponse-Objekt an mich zurück.
parsec gibt auch zusätzliche Informationen zurück, wie lokalisierte Nachrichtenergebnisse & Suchvorschläge. Ich glaube nicht, dass diese zu diesem Zeitpunkt benutzeridentifizierbare Informationen enthalten. Nach der Einreichung plane ich, die zusätzlichen Antworten weiter zu untersuchen.
parsecd einen neuen Standort abfragt, aber während meiner Tests sah ich keinen Standortindikator in der Statusleiste.Dynamic (zu finden unter: https://github.com/mhdhejazi/Dynamic). Diese Bibliothek ist nicht erforderlich, um parsecd auszunutzen, aber sie erleichtert die Verwendung von Drittanbieter-APIs ohne offengelegte Header.parsecd den Standort auch ohne eine zurückgibt.